瀏覽代碼

Remove username caching tags

tags/Baseline_30082024_FRONTEND_UAT
Wayne 1 年之前
父節點
當前提交
d1460769e5
共有 10 個文件被更改,包括 46 次插入56 次删除
  1. +6
    -12
      src/app/(main)/home/page.tsx
  2. +2
    -2
      src/app/api/projects/index.ts
  3. +4
    -7
      src/app/api/timesheets/actions.ts
  4. +8
    -8
      src/app/api/timesheets/index.ts
  5. +2
    -4
      src/components/LeaveModal/LeaveModal.tsx
  6. +8
    -2
      src/components/LeaveTable/LeaveEditModal.tsx
  7. +2
    -4
      src/components/TimesheetModal/TimesheetModal.tsx
  8. +8
    -2
      src/components/TimesheetTable/TimesheetEditModal.tsx
  9. +0
    -4
      src/components/UserWorkspacePage/UserWorkspacePage.tsx
  10. +6
    -11
      src/components/UserWorkspacePage/UserWorkspaceWrapper.tsx

+ 6
- 12
src/app/(main)/home/page.tsx 查看文件

@@ -8,8 +8,6 @@ import {
fetchTeamMemberTimesheets,
fetchTimesheets,
} from "@/app/api/timesheets";
import { authOptions } from "@/config/authConfig";
import { getServerSession } from "next-auth";
import {
fetchAssignedProjects,
fetchProjectWithTasks,
@@ -21,22 +19,18 @@ export const metadata: Metadata = {
};

const Home: React.FC = async () => {
const session = await getServerSession(authOptions);
// Get name for caching
const username = session!.user!.name!;

fetchTimesheets(username);
fetchAssignedProjects(username);
fetchLeaves(username);
fetchTimesheets();
fetchAssignedProjects();
fetchLeaves();
fetchLeaveTypes();
fetchProjectWithTasks();
fetchHolidays();
fetchTeamMemberTimesheets(username);
fetchTeamMemberLeaves(username);
fetchTeamMemberTimesheets();
fetchTeamMemberLeaves();

return (
<I18nProvider namespaces={["home", "common"]}>
<UserWorkspacePage username={username} />
<UserWorkspacePage />
</I18nProvider>
);
};


+ 2
- 2
src/app/api/projects/index.ts 查看文件

@@ -170,11 +170,11 @@ export const fetchProjectWorkNatures = cache(async () => {
});
});

export const fetchAssignedProjects = cache(async (username: string) => {
export const fetchAssignedProjects = cache(async () => {
return serverFetchJson<AssignedProject[]>(
`${BASE_API_URL}/projects/assignedProjects`,
{
next: { tags: [`assignedProjects__${username}`] },
next: { tags: [`assignedProjects`] },
},
);
});


+ 4
- 7
src/app/api/timesheets/actions.ts 查看文件

@@ -31,10 +31,7 @@ export interface RecordLeaveInput {
[date: string]: LeaveEntry[];
}

export const saveTimesheet = async (
data: RecordTimesheetInput,
username: string,
) => {
export const saveTimesheet = async (data: RecordTimesheetInput) => {
const savedRecords = await serverFetchJson<RecordTimesheetInput>(
`${BASE_API_URL}/timesheets/save`,
{
@@ -44,12 +41,12 @@ export const saveTimesheet = async (
},
);

revalidateTag(`timesheets_${username}`);
revalidateTag(`timesheets`);

return savedRecords;
};

export const saveLeave = async (data: RecordLeaveInput, username: string) => {
export const saveLeave = async (data: RecordLeaveInput) => {
const savedRecords = await serverFetchJson<RecordLeaveInput>(
`${BASE_API_URL}/timesheets/saveLeave`,
{
@@ -59,7 +56,7 @@ export const saveLeave = async (data: RecordLeaveInput, username: string) => {
},
);

revalidateTag(`leaves_${username}`);
revalidateTag(`leaves`);

return savedRecords;
};


+ 8
- 8
src/app/api/timesheets/index.ts 查看文件

@@ -24,17 +24,17 @@ export type TeamLeaves = {
};
};

export const fetchTimesheets = cache(async (username: string) => {
export const fetchTimesheets = cache(async () => {
return serverFetchJson<RecordTimesheetInput>(`${BASE_API_URL}/timesheets`, {
next: { tags: [`timesheets_${username}`] },
next: { tags: [`timesheets`] },
});
});

export const fetchLeaves = cache(async (username: string) => {
export const fetchLeaves = cache(async () => {
return serverFetchJson<RecordLeaveInput>(
`${BASE_API_URL}/timesheets/leaves`,
{
next: { tags: [`leaves_${username}`] },
next: { tags: [`leaves`] },
},
);
});
@@ -45,17 +45,17 @@ export const fetchLeaveTypes = cache(async () => {
});
});

export const fetchTeamMemberTimesheets = cache(async (username: string) => {
export const fetchTeamMemberTimesheets = cache(async () => {
return serverFetchJson<TeamTimeSheets>(
`${BASE_API_URL}/timesheets/teamTimesheets`,
{
next: { tags: [`team_timesheets_${username}`] },
next: { tags: [`team_timesheets`] },
},
);
});

export const fetchTeamMemberLeaves = cache(async (username: string) => {
export const fetchTeamMemberLeaves = cache(async () => {
return serverFetchJson<TeamLeaves>(`${BASE_API_URL}/timesheets/teamLeaves`, {
next: { tags: [`team_leaves_${username}`] },
next: { tags: [`team_leaves`] },
});
});

+ 2
- 4
src/components/LeaveModal/LeaveModal.tsx 查看文件

@@ -36,7 +36,6 @@ import ErrorAlert from "../ErrorAlert";
interface Props {
isOpen: boolean;
onClose: () => void;
username: string;
defaultLeaveRecords?: RecordLeaveInput;
leaveTypes: LeaveType[];
timesheetRecords: RecordTimesheetInput;
@@ -56,7 +55,6 @@ const modalSx: SxProps = {
const LeaveModal: React.FC<Props> = ({
isOpen,
onClose,
username,
defaultLeaveRecords,
timesheetRecords,
leaveTypes,
@@ -97,7 +95,7 @@ const LeaveModal: React.FC<Props> = ({
);
return;
}
const savedRecords = await saveLeave(data, username);
const savedRecords = await saveLeave(data);

const today = dayjs();
const newFormValues = Array(7)
@@ -113,7 +111,7 @@ const LeaveModal: React.FC<Props> = ({
formProps.reset(newFormValues);
onClose();
},
[companyHolidays, formProps, onClose, timesheetRecords, username],
[companyHolidays, formProps, onClose, timesheetRecords],
);

const onCancel = useCallback(() => {


+ 8
- 2
src/components/LeaveTable/LeaveEditModal.tsx 查看文件

@@ -1,6 +1,9 @@
import { LeaveType } from "@/app/api/timesheets";
import { LeaveEntry } from "@/app/api/timesheets/actions";
import { DAILY_NORMAL_MAX_HOURS } from "@/app/api/timesheets/utils";
import {
DAILY_NORMAL_MAX_HOURS,
TIMESHEET_DAILY_MAX_HOURS,
} from "@/app/api/timesheets/utils";
import { shortDateFormatter } from "@/app/utils/formatUtil";
import { roundToNearestQuarter } from "@/app/utils/manhourUtils";
import { Check, Delete } from "@mui/icons-material";
@@ -153,7 +156,10 @@ const LeaveEditModal: React.FC<Props> = ({
/>
{formState.errors.root?.message && (
<Typography variant="caption" color="error">
{t(formState.errors.root.message, { DAILY_NORMAL_MAX_HOURS })}
{t(formState.errors.root.message, {
DAILY_NORMAL_MAX_HOURS,
TIMESHEET_DAILY_MAX_HOURS,
})}
</Typography>
)}
<Box display="flex" justifyContent="flex-end" gap={1}>


+ 2
- 4
src/components/TimesheetModal/TimesheetModal.tsx 查看文件

@@ -38,7 +38,6 @@ interface Props {
onClose: () => void;
allProjects: ProjectWithTasks[];
assignedProjects: AssignedProject[];
username: string;
defaultTimesheets?: RecordTimesheetInput;
leaveRecords: RecordLeaveInput;
companyHolidays: HolidaysResult[];
@@ -60,7 +59,6 @@ const TimesheetModal: React.FC<Props> = ({
onClose,
allProjects,
assignedProjects,
username,
defaultTimesheets,
leaveRecords,
companyHolidays,
@@ -97,7 +95,7 @@ const TimesheetModal: React.FC<Props> = ({
);
return;
}
const savedRecords = await saveTimesheet(data, username);
const savedRecords = await saveTimesheet(data);

const today = dayjs();
const newFormValues = Array(7)
@@ -113,7 +111,7 @@ const TimesheetModal: React.FC<Props> = ({
formProps.reset(newFormValues);
onClose();
},
[companyHolidays, formProps, leaveRecords, onClose, username],
[companyHolidays, formProps, leaveRecords, onClose],
);

const onCancel = useCallback(() => {


+ 8
- 2
src/components/TimesheetTable/TimesheetEditModal.tsx 查看文件

@@ -23,7 +23,10 @@ import { TaskGroup } from "@/app/api/tasks";
import uniqBy from "lodash/uniqBy";
import { roundToNearestQuarter } from "@/app/utils/manhourUtils";
import { shortDateFormatter } from "@/app/utils/formatUtil";
import { DAILY_NORMAL_MAX_HOURS } from "@/app/api/timesheets/utils";
import {
DAILY_NORMAL_MAX_HOURS,
TIMESHEET_DAILY_MAX_HOURS,
} from "@/app/api/timesheets/utils";

export interface Props extends Omit<ModalProps, "children"> {
onSave: (timeEntry: TimeEntry, recordDate?: string) => Promise<void>;
@@ -277,7 +280,10 @@ const TimesheetEditModal: React.FC<Props> = ({
/>
{formState.errors.root?.message && (
<Typography variant="caption" color="error">
{t(formState.errors.root.message, { DAILY_NORMAL_MAX_HOURS })}
{t(formState.errors.root.message, {
DAILY_NORMAL_MAX_HOURS,
TIMESHEET_DAILY_MAX_HOURS,
})}
</Typography>
)}
<Box display="flex" justifyContent="flex-end" gap={1}>


+ 0
- 4
src/components/UserWorkspacePage/UserWorkspacePage.tsx 查看文件

@@ -30,7 +30,6 @@ export interface Props {
leaveTypes: LeaveType[];
allProjects: ProjectWithTasks[];
assignedProjects: AssignedProject[];
username: string;
defaultLeaveRecords: RecordLeaveInput;
defaultTimesheets: RecordTimesheetInput;
holidays: HolidaysResult[];
@@ -48,7 +47,6 @@ const UserWorkspacePage: React.FC<Props> = ({
leaveTypes,
allProjects,
assignedProjects,
username,
defaultLeaveRecords,
defaultTimesheets,
holidays,
@@ -180,7 +178,6 @@ const UserWorkspacePage: React.FC<Props> = ({
onClose={handleCloseTimesheetModal}
allProjects={allProjects}
assignedProjects={assignedProjects}
username={username}
defaultTimesheets={defaultTimesheets}
leaveRecords={defaultLeaveRecords}
/>
@@ -191,7 +188,6 @@ const UserWorkspacePage: React.FC<Props> = ({
onClose={handleCloseLeaveModal}
defaultLeaveRecords={defaultLeaveRecords}
timesheetRecords={defaultTimesheets}
username={username}
/>
{assignedProjects.length > 0 ? (
<AssignedProjects assignedProjects={assignedProjects} />


+ 6
- 11
src/components/UserWorkspacePage/UserWorkspaceWrapper.tsx 查看文件

@@ -12,11 +12,7 @@ import {
} from "@/app/api/timesheets";
import { fetchHolidays } from "@/app/api/holidays";

interface Props {
username: string;
}

const UserWorkspaceWrapper: React.FC<Props> = async ({ username }) => {
const UserWorkspaceWrapper: React.FC = async () => {
const [
teamLeaves,
teamTimesheets,
@@ -27,12 +23,12 @@ const UserWorkspaceWrapper: React.FC<Props> = async ({ username }) => {
leaveTypes,
holidays,
] = await Promise.all([
fetchTeamMemberLeaves(username),
fetchTeamMemberTimesheets(username),
fetchAssignedProjects(username),
fetchTeamMemberLeaves(),
fetchTeamMemberTimesheets(),
fetchAssignedProjects(),
fetchProjectWithTasks(),
fetchTimesheets(username),
fetchLeaves(username),
fetchTimesheets(),
fetchLeaves(),
fetchLeaveTypes(),
fetchHolidays(),
]);
@@ -43,7 +39,6 @@ const UserWorkspaceWrapper: React.FC<Props> = async ({ username }) => {
teamTimesheets={teamTimesheets}
allProjects={allProjects}
assignedProjects={assignedProjects}
username={username}
defaultTimesheets={timesheets}
defaultLeaveRecords={leaves}
leaveTypes={leaveTypes}


Loading…
取消
儲存