1443caf22S猫头猫import {GlobalState} from '@/utils/stateMapper'; 2443caf22S猫头猫import {useCallback} from 'react'; 3caaa811bS猫头猫import {IDialogKey, IDialogType} from './components'; 4bf6e62f2S猫头猫 5443caf22S猫头猫interface IDialogInfo { 6443caf22S猫头猫 name: IDialogKey | null; 7443caf22S猫头猫 payload: any; 8443caf22S猫头猫} 9443caf22S猫头猫 10443caf22S猫头猫export const dialogInfoStore = new GlobalState<IDialogInfo>({ 11443caf22S猫头猫 name: null, 12443caf22S猫头猫 payload: null, 13443caf22S猫头猫}); 14bf6e62f2S猫头猫 1575d76114S猫头猫export function showDialog<T extends keyof IDialogType>( 1675d76114S猫头猫 name: T, 1775d76114S猫头猫 payload?: Parameters<IDialogType[T]>[0], 1875d76114S猫头猫) { 1975d76114S猫头猫 dialogInfoStore.setValue({ 2075d76114S猫头猫 name, 2175d76114S猫头猫 payload, 2275d76114S猫头猫 }); 2375d76114S猫头猫} 2475d76114S猫头猫 2575d76114S猫头猫export function hideDialog() { 2675d76114S猫头猫 dialogInfoStore.setValue({ 2775d76114S猫头猫 name: null, 2875d76114S猫头猫 payload: null, 2975d76114S猫头猫 }); 3075d76114S猫头猫} 3175d76114S猫头猫 32bf6e62f2S猫头猫export default function useDialog() { 33443caf22S猫头猫 const showDialog = useCallback( 34443caf22S猫头猫 <T extends keyof IDialogType>( 35bf6e62f2S猫头猫 name: T, 36443caf22S猫头猫 payload?: Parameters<IDialogType[T]>[0], 37443caf22S猫头猫 ) => { 38443caf22S猫头猫 dialogInfoStore.setValue({ 39443caf22S猫头猫 name, 40443caf22S猫头猫 payload, 41443caf22S猫头猫 }); 42443caf22S猫头猫 }, 43443caf22S猫头猫 [], 44443caf22S猫头猫 ); 45bf6e62f2S猫头猫 46443caf22S猫头猫 const hideDialog = useCallback(() => { 47443caf22S猫头猫 dialogInfoStore.setValue({ 48443caf22S猫头猫 name: null, 49443caf22S猫头猫 payload: null, 50443caf22S猫头猫 }); 51443caf22S猫头猫 }, []); 52bf6e62f2S猫头猫 53443caf22S猫头猫 return {showDialog, hideDialog}; 54bf6e62f2S猫头猫} 55*dffbbaffS猫头猫 56*dffbbaffS猫头猫export function getCurrentDialog() { 57*dffbbaffS猫头猫 return dialogInfoStore.getValue(); 58*dffbbaffS猫头猫} 59