2025-03-08
This commit is contained in:
parent
ad01868a9f
commit
2dd3c05805
19 changed files with 389 additions and 112 deletions
53
src/machines/EditEntryDialog.ts
Normal file
53
src/machines/EditEntryDialog.ts
Normal 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: {},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue