2025-03-08

This commit is contained in:
gcch 2025-03-08 12:09:15 +01:00
commit 2dd3c05805
19 changed files with 389 additions and 112 deletions

View file

@ -0,0 +1,53 @@
import type { MergedTmdbLocalData } from "@/libs/search/schemas";
import { not, setup } from "xstate";
export const editEntryDialogMachine = setup({
guards: {
/** Est-ce que l'ouvre présentée possède une entrée dans le Journal ? */
hasDiaryEntry: ({ context }) => context.entryData?.entryId !== undefined,
},
types: {
context: {} as { entryData: MergedTmdbLocalData | undefined },
input: {} as { entryData: MergedTmdbLocalData },
},
})
.createMachine({
context: ({ input }) => ({
entryData: input.entryData,
}),
id: "editEntryDialog",
initial: "blankOrEntry",
states: {
blankOrEntry: {
always: [
{
guard: not("hasDiaryEntry"),
target: "viewing.blank",
},
{
guard: "hasDiaryEntry",
target: "viewing.entry",
},
],
description: "État initial « fantôme » ne servant qu'à déterminer si le média est dans le Journal ou non.",
},
editing: {
description: "État de finalisation.",
type: "final",
},
viewing: {
description: "État de lecture seule des données de l'entrée.",
initial: "blank",
on: {
editWanted: {
target: "editing",
},
},
states: {
blank: {},
entry: {},
},
},
},
});