UNPKG

@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
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);