@applicaster/zapp-react-native-ui-components
Version:
Applicaster Zapp React Native ui components for the Quick Brick App
37 lines (33 loc) • 1.26 kB
text/typescript
import { createStore } from "zustand/vanilla";
import { useStore } from "zustand";
import { noop } from "@applicaster/zapp-react-native-utils/functionUtils";
export interface ConfirmationDialogState {
isDialogVisible: boolean;
messages: string;
confirmAction: () => void;
cancelAction: () => void;
showDialog: () => void;
hideDialog: () => void;
toggleDialog: () => void;
setConfirmAction: (action: () => void) => void;
setCancelAction: (action: () => void) => void;
setMessages: (messages: string) => void;
}
export const confirmationDialogStore = createStore<ConfirmationDialogState>(
(set) => ({
isDialogVisible: false,
messages: "",
confirmAction: noop,
cancelAction: () => noop,
showDialog: () => set({ isDialogVisible: true }),
hideDialog: () => set({ isDialogVisible: false }),
toggleDialog: () =>
set((state) => ({ isDialogVisible: !state.isDialogVisible })),
setConfirmAction: (action) => set({ confirmAction: action }),
setCancelAction: (action) => set({ cancelAction: action }),
setMessages: (messages) => set({ messages }),
})
);
export const useConfirmationDialog = (
selector?: (state: ConfirmationDialogState) => any
) => useStore(confirmationDialogStore, selector);