ソースを参照

Add validate when re-fetch

tags/Baseline_30082024_FRONTEND_UAT
MSI\2Fi 1年前
コミット
05ebc926dd
7個のファイルの変更28行の追加9行の削除
  1. +1
    -1
      src/app/(main)/settings/company/edit/page.tsx
  2. +7
    -1
      src/app/api/companys/actions.ts
  3. +1
    -1
      src/app/api/companys/index.ts
  4. +6
    -1
      src/app/api/departments/actions.ts
  5. +10
    -2
      src/app/api/positions/actions.ts
  6. +1
    -1
      src/components/CreateCompany/CompanyDetails.tsx
  7. +2
    -2
      src/components/CreateCompany/CreateCompanyWrapper.tsx

+ 1
- 1
src/app/(main)/settings/company/edit/page.tsx ファイルの表示

@@ -18,7 +18,7 @@ const Companys: React.FC<Props> = async ({searchParams}) => {


return( return(
<> <>
<Typography variant="h4">{t("Create Company")}</Typography>
<Typography variant="h4">{t("Edit Company")}</Typography>
<I18nProvider namespaces={["companys"]}> <I18nProvider namespaces={["companys"]}>
<CreateCompany isEdit={true} companyId={companyId} /> <CreateCompany isEdit={true} companyId={companyId} />
</I18nProvider> </I18nProvider>


+ 7
- 1
src/app/api/companys/actions.ts ファイルの表示

@@ -3,6 +3,7 @@
import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil";
import { BASE_API_URL } from "@/config/api"; import { BASE_API_URL } from "@/config/api";
import { Dayjs } from "dayjs"; import { Dayjs } from "dayjs";
import { revalidateTag } from "next/cache";
import { cache } from "react"; import { cache } from "react";


export interface comboProp { export interface comboProp {
@@ -49,17 +50,21 @@ export interface EditCompanyInputs {
} }


export const saveCompany = async (data: CreateCompanyInputs) => { export const saveCompany = async (data: CreateCompanyInputs) => {
return serverFetchJson(`${BASE_API_URL}/companys/new`, {
const newCompany = serverFetchJson(`${BASE_API_URL}/companys/new`, {
method: "POST", method: "POST",
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
}); });

revalidateTag("companys");
return newCompany
}; };


export const fetchCompanyCombo = cache(async () => { export const fetchCompanyCombo = cache(async () => {
return serverFetchJson<combo>(`${BASE_API_URL}/companys/combo`, { return serverFetchJson<combo>(`${BASE_API_URL}/companys/combo`, {
next: { tags: ["company"] }, next: { tags: ["company"] },
}); });

}); });


export const deleteCompany = async (id: number) => { export const deleteCompany = async (id: number) => {
@@ -71,5 +76,6 @@ export const deleteCompany = async (id: number) => {
}, },
); );


revalidateTag("companys");
return department return department
}; };

+ 1
- 1
src/app/api/companys/index.ts ファイルの表示

@@ -28,7 +28,7 @@ export const fetchCompanyDetails = cache(async (companyId: string) => {
return serverFetchJson<EditCompanyInputs>( return serverFetchJson<EditCompanyInputs>(
`${BASE_API_URL}/companys/companyDetails/${companyId}`, `${BASE_API_URL}/companys/companyDetails/${companyId}`,
{ {
next: { tags: [`departmentDetail${companyId}`] },
next: { tags: [`departmentDetail`] },
}, },
); );
}); });

+ 6
- 1
src/app/api/departments/actions.ts ファイルの表示

@@ -2,6 +2,7 @@


import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil"; import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil";
import { BASE_API_URL } from "@/config/api"; import { BASE_API_URL } from "@/config/api";
import { revalidateTag } from "next/cache";
import { cache } from "react"; import { cache } from "react";




@@ -21,11 +22,14 @@ export interface CreateDepartmentInputs {
} }


export const saveDepartment = async (data: CreateDepartmentInputs) => { export const saveDepartment = async (data: CreateDepartmentInputs) => {
return serverFetchJson(`${BASE_API_URL}/departments/new`, {
const newDepartment = serverFetchJson(`${BASE_API_URL}/departments/new`, {
method: "POST", method: "POST",
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
}); });

revalidateTag("departments")
return newDepartment
}; };


export const deleteDepartment = async (id: number) => { export const deleteDepartment = async (id: number) => {
@@ -37,6 +41,7 @@ export const deleteDepartment = async (id: number) => {
}, },
); );


revalidateTag("departments")
return department return department
}; };




+ 10
- 2
src/app/api/positions/actions.ts ファイルの表示

@@ -4,6 +4,7 @@ import { serverFetchJson, serverFetchWithNoContent } from "@/app/utils/fetchUtil
import { BASE_API_URL } from "@/config/api"; import { BASE_API_URL } from "@/config/api";
import { cache } from "react"; import { cache } from "react";
import { PositionResult } from "."; import { PositionResult } from ".";
import { revalidateTag } from "next/cache";


export interface comboProp { export interface comboProp {
id: any; id: any;
@@ -30,19 +31,25 @@ export interface EditPositionInputs {
} }


export const savePosition = async (data: CreatePositionInputs) => { export const savePosition = async (data: CreatePositionInputs) => {
return serverFetchJson(`${BASE_API_URL}/positions/new`, {
const newPosition = serverFetchJson(`${BASE_API_URL}/positions/new`, {
method: "POST", method: "POST",
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
}); });

revalidateTag("positions")
return newPosition
}; };


export const editPosition = async (data: EditPositionInputs) => { export const editPosition = async (data: EditPositionInputs) => {
return serverFetchJson(`${BASE_API_URL}/positions/new`, {
const editPostion = serverFetchJson(`${BASE_API_URL}/positions/new`, {
method: "POST", method: "POST",
body: JSON.stringify(data), body: JSON.stringify(data),
headers: { "Content-Type": "application/json" }, headers: { "Content-Type": "application/json" },
}); });

revalidateTag("positions")
return editPostion
}; };


export const deletePosition = async (id: number) => { export const deletePosition = async (id: number) => {
@@ -54,6 +61,7 @@ export const deletePosition = async (id: number) => {
}, },
); );


revalidateTag("positions")
return position return position
}; };




+ 1
- 1
src/components/CreateCompany/CompanyDetails.tsx ファイルの表示

@@ -44,7 +44,7 @@ const CompanyDetails: React.FC<Props> = ({
getValues, getValues,
} = useFormContext<CreateCompanyInputs>(); } = useFormContext<CreateCompanyInputs>();


console.log(content)
// console.log(content)


useEffect(() => { useEffect(() => {
setValue("normalHourFrom", convertTimeArrayToString(content.normalHourFrom, "HH:mm:ss", false)); setValue("normalHourFrom", convertTimeArrayToString(content.normalHourFrom, "HH:mm:ss", false));


+ 2
- 2
src/components/CreateCompany/CreateCompanyWrapper.tsx ファイルの表示

@@ -11,8 +11,8 @@ type Props = CreateCompanyProps | EditCompanyProps;


const CreateCompanyWrapper: React.FC<Props> = async (props) => { const CreateCompanyWrapper: React.FC<Props> = async (props) => {


console.log(props)
// console.log(props)
const companyDetails = props.isEdit const companyDetails = props.isEdit
? await fetchCompanyDetails(props.companyId!) ? await fetchCompanyDetails(props.companyId!)
: undefined; : undefined;


読み込み中…
キャンセル
保存