Files
juwan-frontend/store/login-dialog.ts
T
2026-02-22 06:36:49 +08:00

22 lines
629 B
TypeScript

import { create } from "zustand"
interface LoginDialogState {
open: boolean
pendingAction: (() => void) | null
openLoginDialog: (action?: () => void) => void
closeLoginDialog: () => void
consumePendingAction: () => void
}
export const useLoginDialogStore = create<LoginDialogState>((set, get) => ({
open: false,
pendingAction: null,
openLoginDialog: (action) => set({ open: true, pendingAction: action ?? null }),
closeLoginDialog: () => set({ open: false, pendingAction: null }),
consumePendingAction: () => {
const action = get().pendingAction
set({ pendingAction: null })
action?.()
},
}))