Can change disableCouplePHoto setting

This commit is contained in:
Pierre HUBERT 2023-08-26 16:32:50 +02:00
parent dd8ba0a84f
commit 298df7be77
3 changed files with 34 additions and 5 deletions

View File

@ -83,6 +83,14 @@ export class Family implements FamilyAPI {
}
}
export class ExtendedFamilyInfo extends Family {
public disable_couple_photos: boolean;
constructor(p: any) {
super(p);
this.disable_couple_photos = p.disable_couple_photos;
}
}
export enum JoinFamilyResult {
TooManyRequests,
InvalidCode,
@ -152,13 +160,13 @@ export class FamilyApi {
/**
* Get information about a single family
*/
static async GetSingle(id: number): Promise<Family> {
static async GetSingle(id: number): Promise<ExtendedFamilyInfo> {
const res = await APIClient.exec({
method: "GET",
uri: `/family/${id}`,
});
return new Family(res.data);
return new ExtendedFamilyInfo(res.data);
}
/**
@ -222,12 +230,14 @@ export class FamilyApi {
static async UpdateFamily(settings: {
id: number;
name: string;
disable_couple_photos: boolean;
}): Promise<void> {
await APIClient.exec({
method: "PATCH",
uri: `/family/${settings.id}`,
jsonData: {
name: settings.name,
disable_couple_photos: settings.disable_couple_photos,
},
});
}

View File

@ -6,7 +6,10 @@ import {
Button,
CardActions,
CardContent,
Checkbox,
FormControlLabel,
TextField,
Tooltip,
Typography,
} from "@mui/material";
import React from "react";
@ -73,6 +76,9 @@ function FamilySettingsCard(): React.ReactElement {
const family = useFamily();
const [newName, setNewName] = React.useState(family.family.name);
const [disableCouplePhotos, setDisableCouplePhotos] = React.useState(
family.family.disable_couple_photos
);
const canEdit = family.family.is_admin;
@ -87,6 +93,7 @@ function FamilySettingsCard(): React.ReactElement {
await FamilyApi.UpdateFamily({
id: family.family.family_id,
name: newName,
disable_couple_photos: disableCouplePhotos,
});
family.reloadFamilyInfo();
@ -137,6 +144,18 @@ function FamilySettingsCard(): React.ReactElement {
maxLength: ServerApi.Config.constraints.family_name_len.max,
}}
/>
<Tooltip title="Les photos de couple ne sont pas utilisées en pratique dans les arbres généalogiques. Il est possible de masquer les formulaires d'édition de photos de couple pour limiter le risque de confusion.">
<FormControlLabel
disabled={!canEdit}
control={
<Checkbox
checked={disableCouplePhotos}
onChange={(_e, c) => setDisableCouplePhotos(c)}
/>
}
label="Désactiver les photos de couple"
/>
</Tooltip>
</Box>
</CardContent>
<CardActions>

View File

@ -26,7 +26,7 @@ import {
} from "@mui/material";
import React from "react";
import { Outlet, useLocation, useParams } from "react-router-dom";
import { Family, FamilyApi } from "../api/FamilyApi";
import { ExtendedFamilyInfo, Family, FamilyApi } from "../api/FamilyApi";
import { MemberApi, MembersList } from "../api/MemberApi";
import { useAlert } from "../hooks/context_providers/AlertDialogProvider";
import { useConfirm } from "../hooks/context_providers/ConfirmDialogProvider";
@ -36,7 +36,7 @@ import { RouterLink } from "./RouterLink";
import { CoupleApi, CouplesList } from "../api/CoupleApi";
interface FamilyContext {
family: Family;
family: ExtendedFamilyInfo;
members: MembersList;
couples: CouplesList;
familyId: number;
@ -53,7 +53,7 @@ export function BaseFamilyRoute(): React.ReactElement {
const alert = useAlert();
const confirm = useConfirm();
const [family, setFamily] = React.useState<null | Family>(null);
const [family, setFamily] = React.useState<null | ExtendedFamilyInfo>(null);
const [members, setMembers] = React.useState<null | MembersList>(null);
const [couples, setCouples] = React.useState<null | CouplesList>(null);