fix: replay pending action after login
This commit is contained in:
+12
-4
@@ -2,12 +2,20 @@ import { create } from "zustand"
|
||||
|
||||
interface LoginDialogState {
|
||||
open: boolean
|
||||
openLoginDialog: () => void
|
||||
pendingAction: (() => void) | null
|
||||
openLoginDialog: (action?: () => void) => void
|
||||
closeLoginDialog: () => void
|
||||
consumePendingAction: () => void
|
||||
}
|
||||
|
||||
export const useLoginDialogStore = create<LoginDialogState>((set) => ({
|
||||
export const useLoginDialogStore = create<LoginDialogState>((set, get) => ({
|
||||
open: false,
|
||||
openLoginDialog: () => set({ open: true }),
|
||||
closeLoginDialog: () => set({ 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?.()
|
||||
},
|
||||
}))
|
||||
|
||||
Reference in New Issue
Block a user