Can join a family

This commit is contained in:
2023-06-27 18:52:49 +02:00
parent 817d14ef36
commit 3721f4ba5a
6 changed files with 146 additions and 3 deletions

View File

@ -3,6 +3,7 @@ import { AsyncWidget } from "../widgets/AsyncWidget";
import { Family } from "../api/FamilyApi";
import { Button, Typography } from "@mui/material";
import { CreateFamilyDialog } from "../dialogs/CreateFamilyDialog";
import { JoinFamilyDialog } from "../dialogs/JoinFamilyDialog";
export function FamiliesListRoute(): React.ReactElement {
const loadKey = React.useRef(1);
@ -10,6 +11,7 @@ export function FamiliesListRoute(): React.ReactElement {
const [families, setFamilies] = React.useState<Family[] | null>(null);
const [createFamily, setCreateFamily] = React.useState(false);
const [joinFamily, setJoinFamily] = React.useState(false);
const load = async () => {
// TODO : implement
@ -24,6 +26,10 @@ export function FamiliesListRoute(): React.ReactElement {
setCreateFamily(true);
};
const onRequestJoinFamily = async () => {
setJoinFamily(true);
};
return (
<AsyncWidget
loadKey={loadKey.current}
@ -32,7 +38,10 @@ export function FamiliesListRoute(): React.ReactElement {
build={() => (
<>
{families!!.length === 0 ? (
<NoFamilyWidget onRequestCreateFamily={onRequestCreateFamily} />
<NoFamilyWidget
onRequestCreateFamily={onRequestCreateFamily}
onRequestJoinFamily={onRequestJoinFamily}
/>
) : (
<HasFamilysWidget onReload={reload} families={families!} />
)}
@ -46,6 +55,16 @@ export function FamiliesListRoute(): React.ReactElement {
reload();
}}
/>
{/** Join family dialog anchor */}
<JoinFamilyDialog
open={joinFamily}
onClose={() => setJoinFamily(false)}
onJoined={() => {
setJoinFamily(false);
reload();
}}
/>
</>
)}
/>
@ -54,6 +73,7 @@ export function FamiliesListRoute(): React.ReactElement {
function NoFamilyWidget(p: {
onRequestCreateFamily: () => void;
onRequestJoinFamily: () => void;
}): React.ReactElement {
return (
<div style={{ flex: 1, display: "flex", alignItems: "center" }}>
@ -74,7 +94,10 @@ function NoFamilyWidget(p: {
onClick={p.onRequestCreateFamily}
/>
<NoFamilyButton label="Rejoindre une famille" onClick={() => {}} />
<NoFamilyButton
label="Rejoindre une famille"
onClick={p.onRequestJoinFamily}
/>
</div>
</div>
);