Can delete a family
This commit is contained in:
		| @@ -202,4 +202,14 @@ export class FamilyApi { | ||||
|       }, | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Delete a family | ||||
|    */ | ||||
|   static async DeleteFamily(family: Family) { | ||||
|     await APIClient.exec({ | ||||
|       method: "DELETE", | ||||
|       uri: `/family/${family.family_id}`, | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -9,15 +9,20 @@ import { | ||||
|   Typography, | ||||
| } from "@mui/material"; | ||||
| import React from "react"; | ||||
| import { useNavigate } from "react-router-dom"; | ||||
| import { FamilyApi } from "../../api/FamilyApi"; | ||||
| import { ServerApi } from "../../api/ServerApi"; | ||||
| import { useAlert } from "../../context_providers/AlertDialogProvider"; | ||||
| import { useConfirm } from "../../context_providers/ConfirmDialogProvider"; | ||||
| import { useFamily } from "../../widgets/BaseFamilyRoute"; | ||||
| import { formatDate } from "../../widgets/TimeWidget"; | ||||
|  | ||||
| export function FamilySettingsRoute(): React.ReactElement { | ||||
|   const family = useFamily(); | ||||
|   const alert = useAlert(); | ||||
|   const confirm = useConfirm(); | ||||
|   const navigate = useNavigate(); | ||||
|  | ||||
|   const family = useFamily(); | ||||
|  | ||||
|   const [newName, setNewName] = React.useState(family.family.name); | ||||
|  | ||||
| @@ -45,6 +50,26 @@ export function FamilySettingsRoute(): React.ReactElement { | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   const deleteFamily = async () => { | ||||
|     try { | ||||
|       if ( | ||||
|         !(await confirm( | ||||
|           "Voulez-vous vraiment supprimer cette famille, et toute les données qui s'y rattachent ? Cette opération est absolument irréversible !" | ||||
|         )) | ||||
|       ) | ||||
|         return; | ||||
|  | ||||
|       await FamilyApi.DeleteFamily(family.family); | ||||
|  | ||||
|       await alert("La famille a été supprimée avec succès !"); | ||||
|  | ||||
|       navigate("/"); | ||||
|     } catch (e) { | ||||
|       console.error(e); | ||||
|       alert("Echec de la suppression de la famille !"); | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   return ( | ||||
|     <> | ||||
|       <Card style={{ margin: "10px auto", maxWidth: "450px" }}> | ||||
| @@ -100,6 +125,17 @@ export function FamilySettingsRoute(): React.ReactElement { | ||||
|           </Button> | ||||
|         </CardActions> | ||||
|       </Card> | ||||
|  | ||||
|       <div style={{ textAlign: "center", marginTop: "50px" }}> | ||||
|         <Button | ||||
|           size="small" | ||||
|           color="error" | ||||
|           onClick={deleteFamily} | ||||
|           disabled={!family.family.is_admin} | ||||
|         > | ||||
|           Supprimer la famille | ||||
|         </Button> | ||||
|       </div> | ||||
|     </> | ||||
|   ); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user