supermemory/apps/web/stores/quick-note-draft.ts
MaheshtheDev 8c195cece6 feat: full screen note, space highlights, suggestions (#696)
Added quick note and highlights features to the new UI, improved OG scraping, and implemented Nova alpha access feature flag.
2026-01-23 22:17:44 +00:00

54 lines
1.3 KiB
TypeScript

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)
}