56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import { useMemo } from 'react';
|
||
import { APIError } from '@Models/GeneralTypes';
|
||
import {
|
||
postMessageDialog,
|
||
postMessageConfirm,
|
||
removeMessageDialog,
|
||
removeMessageConfirm,
|
||
} from '@Reducers/message/actions';
|
||
import { MessageDialogObject, MessageConfirmObject } from '@Models/Redux/Message/types';
|
||
import { errorCatch } from '@Reducers/_Capture/errorCapture';
|
||
import useDispatch from './useDispatch';
|
||
|
||
interface useMessageDefine {
|
||
dialog: (dialog: MessageDialogObject) => void;
|
||
confirm: (confirm: MessageConfirmObject) => void;
|
||
removeDialog: () => void;
|
||
removeConfirm: () => void;
|
||
error: (error: APIError) => void;
|
||
}
|
||
|
||
/**
|
||
* 描述 : 取得 Redux Action 裡面關於 Message 的 Action
|
||
*/
|
||
|
||
export default function useMessage(): useMessageDefine {
|
||
/* Global & Local State */
|
||
const dispatch = useDispatch();
|
||
/* Functions */
|
||
const apiCallPostMessageDialog = (dialog: MessageDialogObject): void => {
|
||
dispatch(postMessageDialog(dialog));
|
||
};
|
||
const apiCallPostMessageConfirm = (confirm: MessageConfirmObject): void => {
|
||
dispatch(postMessageConfirm(confirm));
|
||
};
|
||
const apiCallRemoveMessageDialog = (): void => {
|
||
dispatch(removeMessageDialog());
|
||
};
|
||
const apiCallRemoveMessageConfirm = (): void => {
|
||
dispatch(removeMessageConfirm());
|
||
};
|
||
const apiCallError = (error): void => {
|
||
dispatch(errorCatch(error));
|
||
};
|
||
/* Main */
|
||
return useMemo(
|
||
() => ({
|
||
dialog: apiCallPostMessageDialog,
|
||
confirm: apiCallPostMessageConfirm,
|
||
removeDialog: apiCallRemoveMessageDialog,
|
||
removeConfirm: apiCallRemoveMessageConfirm,
|
||
error: apiCallError,
|
||
}),
|
||
[],
|
||
);
|
||
}
|