1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
import { create } from "zustand"
interface QuickNoteDraftState {
draftByProject: Record<string, string>
setDraft: (projectId: string, draft: string) => void
resetDraft: (projectId: string) => void
}
export const useQuickNoteDraftStore = create<QuickNoteDraftState>()(
(set, get) => ({
draftByProject: {},
setDraft: (projectId, draft) => {
const current = get().draftByProject[projectId]
if (current === draft) return
set((state) => ({
draftByProject: {
...state.draftByProject,
[projectId]: draft,
},
}))
},
resetDraft: (projectId) => {
const current = get().draftByProject[projectId]
if (current === undefined || current === "") return
set((state) => ({
draftByProject: {
...state.draftByProject,
[projectId]: "",
},
}))
},
}),
)
export function useQuickNoteDraft(projectId: string) {
const draft = useQuickNoteDraftStore((s) => s.draftByProject[projectId] ?? "")
const setDraft = useQuickNoteDraftStore((s) => s.setDraft)
const resetDraft = useQuickNoteDraftStore((s) => s.resetDraft)
return {
draft,
setDraft: (value: string) => setDraft(projectId, value),
resetDraft: () => resetDraft(projectId),
}
}
export function useQuickNoteDraftReset(projectId: string) {
const resetDraft = useQuickNoteDraftStore((s) => s.resetDraft)
return () => resetDraft(projectId)
}
|