浏览代码

排他エラー時のメッセージ表示

develop
sosuke.iwabuchi 2 年前
父节点
当前提交
dd37148d3f
共有 2 个文件被更改,包括 30 次插入0 次删除
  1. +23
    -0
      src/contexts/PageContext.tsx
  2. +7
    -0
      src/hooks/useAPICall.ts

+ 23
- 0
src/contexts/PageContext.tsx 查看文件

@@ -1,3 +1,5 @@
import { SettingsPhoneTwoTone } from "@mui/icons-material";
import { Dialog, DialogActions, DialogContent, Button } from "@mui/material";
import { HasChildren } from "@types"; import { HasChildren } from "@types";
import { PageID, TabID } from "codes/page"; import { PageID, TabID } from "codes/page";
import { createContext, useState } from "react"; import { createContext, useState } from "react";
@@ -7,12 +9,14 @@ type ContextProps = {
tabId: TabID; tabId: TabID;
setPageId: (pageId: PageID) => void; setPageId: (pageId: PageID) => void;
setTabId: (tabId: TabID) => void; setTabId: (tabId: TabID) => void;
openDialog: (message: string) => void;
}; };
const contextInit: ContextProps = { const contextInit: ContextProps = {
pageId: PageID.NONE, pageId: PageID.NONE,
tabId: TabID.NONE, tabId: TabID.NONE,
setPageId: (pageId: PageID) => {}, setPageId: (pageId: PageID) => {},
setTabId: (tabId: TabID) => {}, setTabId: (tabId: TabID) => {},
openDialog: (message: string) => {},
}; };
export const PageContext = createContext(contextInit); export const PageContext = createContext(contextInit);


@@ -21,6 +25,18 @@ export function PageContextProvider({ children }: Props) {
const [pageId, setPageId] = useState<PageID>(PageID.NONE); const [pageId, setPageId] = useState<PageID>(PageID.NONE);
const [tabId, setTabId] = useState<TabID>(TabID.NONE); const [tabId, setTabId] = useState<TabID>(TabID.NONE);


const [open, setOpen] = useState(false);
const [dialogMessage, setDialogMessage] = useState("");

const openDialog = (message: string) => {
setOpen(true);
setDialogMessage(message);
};

const close = () => {
setOpen(false);
};

return ( return (
<PageContext.Provider <PageContext.Provider
value={{ value={{
@@ -28,9 +44,16 @@ export function PageContextProvider({ children }: Props) {
tabId, tabId,
setPageId, setPageId,
setTabId, setTabId,
openDialog,
}} }}
> >
{children} {children}
<Dialog open={open} onClose={close}>
<DialogContent>{dialogMessage}</DialogContent>
<DialogActions>
<Button onClick={close}>閉じる</Button>
</DialogActions>
</Dialog>
</PageContext.Provider> </PageContext.Provider>
); );
} }

+ 7
- 0
src/hooks/useAPICall.ts 查看文件

@@ -3,6 +3,7 @@ import { APICommonResponse, apiRequest, ResultCode } from "api";
import { UseFormReturn } from "react-hook-form"; import { UseFormReturn } from "react-hook-form";
import { Dictionary } from "@types"; import { Dictionary } from "@types";
import { useSnackbar } from "notistack"; import { useSnackbar } from "notistack";
import usePage from "./usePage";


export const APIErrorType = { export const APIErrorType = {
NONE: "none", NONE: "none",
@@ -38,6 +39,8 @@ export default function useAPICall<
const [exclusiveError, setExclusiveError] = useState(false); const [exclusiveError, setExclusiveError] = useState(false);
const [generalErrorMessage, setGeneralErrorMessage] = useState(""); const [generalErrorMessage, setGeneralErrorMessage] = useState("");


const { openDialog } = usePage();

const { enqueueSnackbar } = useSnackbar(); const { enqueueSnackbar } = useSnackbar();


const clearErrors = () => { const clearErrors = () => {
@@ -127,6 +130,10 @@ export default function useAPICall<
if (onFailed) { if (onFailed) {
onFailed(res); onFailed(res);
} }

if (res?.result === ResultCode.EXCLUSIVE_ERROR) {
openDialog("恐れ入りますが、ページを再読込後、再実行してください");
}
}; };


const handleValidationError = (error: any) => { const handleValidationError = (error: any) => {


正在加载...
取消
保存