22 lines
629 B
TypeScript
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?.()
|
|
},
|
|
}))
|