refractor: added params to fetch key (#465)

This commit is contained in:
Dakshesh Jain 2023-03-16 18:15:08 +05:30 committed by GitHub
parent 23c468786d
commit 0fb9a14f15
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 81 additions and 34 deletions

View File

@ -82,7 +82,7 @@ export const SingleBoardIssue: React.FC<Props> = ({
const [contextMenu, setContextMenu] = useState(false);
const [contextMenuPosition, setContextMenuPosition] = useState({ x: 0, y: 0 });
const { orderBy } = useIssuesView();
const { orderBy, params } = useIssuesView();
const router = useRouter();
const { workspaceSlug, projectId, cycleId, moduleId } = router.query;
@ -100,7 +100,7 @@ export const SingleBoardIssue: React.FC<Props> = ({
}
| IIssue[]
>(
CYCLE_ISSUES_WITH_PARAMS(cycleId as string),
CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params),
(prevData) =>
handleIssuesMutation(formData, groupTitle ?? "", selectedGroup, index, prevData),
false
@ -125,7 +125,7 @@ export const SingleBoardIssue: React.FC<Props> = ({
}
| IIssue[]
>(
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string),
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params),
(prevData) =>
handleIssuesMutation(formData, groupTitle ?? "", selectedGroup, index, prevData),
false
@ -134,15 +134,15 @@ export const SingleBoardIssue: React.FC<Props> = ({
issuesService
.patchIssue(workspaceSlug as string, projectId as string, issue.id, formData)
.then((res) => {
if (cycleId) mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string));
if (moduleId) mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string));
if (cycleId) mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params));
if (moduleId) mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string, params));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params));
})
.catch((error) => {
console.log(error);
});
},
[workspaceSlug, projectId, cycleId, moduleId, issue, groupTitle, index, selectedGroup]
[workspaceSlug, projectId, cycleId, moduleId, issue, groupTitle, index, selectedGroup, params]
);
const getStyle = (

View File

@ -81,6 +81,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
orderBy,
filters,
setFilters,
params,
} = useIssuesView();
const { data: stateGroups } = useSWR(
@ -185,7 +186,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
mutate<{
[key: string]: IIssue[];
}>(
CYCLE_ISSUES_WITH_PARAMS(cycleId as string),
CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params),
(prevData) => {
if (!prevData) return prevData;
@ -207,7 +208,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
mutate<{
[key: string]: IIssue[];
}>(
MODULE_ISSUES_WITH_PARAMS(moduleId as string),
MODULE_ISSUES_WITH_PARAMS(moduleId as string, params),
(prevData) => {
if (!prevData) return prevData;
@ -227,7 +228,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
);
else
mutate<{ [key: string]: IIssue[] }>(
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string),
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params),
(prevData) => {
if (!prevData) return prevData;
@ -256,7 +257,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
.then(() => {
if (cycleId) mutate(CYCLE_ISSUES(cycleId as string));
if (moduleId) mutate(MODULE_ISSUES(moduleId as string));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params));
});
}
},
@ -269,6 +270,7 @@ export const IssuesView: React.FC<Props> = ({ type = "issue", openIssuesListModa
selectedGroup,
orderBy,
handleDeleteIssue,
params,
]
);

View File

@ -73,7 +73,7 @@ export const SingleListIssue: React.FC<Props> = ({
const { setToastAlert } = useToast();
const { groupByProperty: selectedGroup } = useIssueView();
const { groupByProperty: selectedGroup, params } = useIssueView();
const partialUpdateIssue = useCallback(
(formData: Partial<IIssue>) => {
@ -86,7 +86,7 @@ export const SingleListIssue: React.FC<Props> = ({
}
| IIssue[]
>(
CYCLE_ISSUES_WITH_PARAMS(cycleId as string),
CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params),
(prevData) =>
handleIssuesMutation(formData, groupTitle ?? "", selectedGroup, index, prevData),
false
@ -99,7 +99,7 @@ export const SingleListIssue: React.FC<Props> = ({
}
| IIssue[]
>(
MODULE_ISSUES_WITH_PARAMS(moduleId as string),
MODULE_ISSUES_WITH_PARAMS(moduleId as string, params),
(prevData) =>
handleIssuesMutation(formData, groupTitle ?? "", selectedGroup, index, prevData),
false
@ -111,7 +111,7 @@ export const SingleListIssue: React.FC<Props> = ({
}
| IIssue[]
>(
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string),
PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params),
(prevData) =>
handleIssuesMutation(formData, groupTitle ?? "", selectedGroup, index, prevData),
false
@ -120,15 +120,15 @@ export const SingleListIssue: React.FC<Props> = ({
issuesService
.patchIssue(workspaceSlug as string, projectId as string, issue.id, formData)
.then((res) => {
if (cycleId) mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string));
if (moduleId) mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string));
if (cycleId) mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params));
if (moduleId) mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string, params));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params));
})
.catch((error) => {
console.log(error);
});
},
[workspaceSlug, projectId, cycleId, moduleId, issue, groupTitle, index, selectedGroup]
[workspaceSlug, projectId, cycleId, moduleId, issue, groupTitle, index, selectedGroup, params]
);
const handleCopyText = () => {

View File

@ -1,4 +1,17 @@
import { IIssueFilterOptions } from "types";
const paramsToKey = (params: any) => {
const { state, priority, assignees } = params;
let stateKey = state ? state.split(",").join(" ") : "";
let priorityKey = priority ? priority.split(",").join(" ") : "";
let assigneesKey = assignees ? assignees.split(",").join(" ") : "";
// sorting each keys in ascending order
stateKey = stateKey.split(" ").sort().join("");
priorityKey = priorityKey.split(" ").sort().join("");
assigneesKey = assigneesKey.split(" ").sort().join("");
return `${stateKey}_${priorityKey}_${assigneesKey}`;
};
export const CURRENT_USER = "CURRENT_USER";
export const USER_WORKSPACE_INVITATIONS = "USER_WORKSPACE_INVITATIONS";
@ -26,8 +39,13 @@ export const PROJECT_INVITATIONS = "PROJECT_INVITATIONS";
export const PROJECT_ISSUES_LIST = (workspaceSlug: string, projectId: string) =>
`PROJECT_ISSUES_LIST_${workspaceSlug}_${projectId}`;
export const PROJECT_ISSUES_LIST_WITH_PARAMS = (projectId: string) =>
`PROJECT_ISSUES_LIST_WITH_PARAMS_${projectId}`;
export const PROJECT_ISSUES_LIST_WITH_PARAMS = (projectId: string, params?: any) => {
if (!params) return `PROJECT_ISSUES_LIST_WITH_PARAMS_${projectId}`;
const paramsKey = paramsToKey(params);
return `PROJECT_ISSUES_LIST_WITH_PARAMS_${projectId}_${paramsKey}`;
};
export const PROJECT_ISSUES_DETAILS = (issueId: string) => `PROJECT_ISSUES_DETAILS_${issueId}`;
export const PROJECT_ISSUES_PROPERTIES = (projectId: string) =>
`PROJECT_ISSUES_PROPERTIES_${projectId}`;
@ -40,7 +58,13 @@ export const PROJECT_GITHUB_REPOSITORY = (projectId: string) =>
export const CYCLE_LIST = (projectId: string) => `CYCLE_LIST_${projectId}`;
export const CYCLE_ISSUES = (cycleId: string) => `CYCLE_ISSUES_${cycleId}`;
export const CYCLE_ISSUES_WITH_PARAMS = (cycleId: string) => `CYCLE_ISSUES_WITH_PARAMS_${cycleId}`;
export const CYCLE_ISSUES_WITH_PARAMS = (cycleId: string, params?: any) => {
if (!params) return `CYCLE_ISSUES_WITH_PARAMS_${cycleId}`;
const paramsKey = paramsToKey(params);
return `CYCLE_ISSUES_WITH_PARAMS_${cycleId}_${paramsKey}`;
};
export const CYCLE_DETAILS = (cycleId: string) => `CYCLE_DETAILS_${cycleId}`;
export const CYCLE_CURRENT_AND_UPCOMING_LIST = (projectId: string) =>
`CYCLE_CURRENT_AND_UPCOMING_LIST_${projectId}`;
@ -56,8 +80,13 @@ export const USER_PROJECT_VIEW = (projectId: string) => `USER_PROJECT_VIEW_${pro
export const MODULE_LIST = (projectId: string) => `MODULE_LIST_${projectId}`;
export const MODULE_ISSUES = (moduleId: string) => `MODULE_ISSUES_${moduleId}`;
export const MODULE_ISSUES_WITH_PARAMS = (moduleId: string) =>
`MODULE_ISSUES_WITH_PARAMS_${moduleId}`;
export const MODULE_ISSUES_WITH_PARAMS = (moduleId: string, params?: any) => {
if (!params) return `MODULE_ISSUES_WITH_PARAMS_${moduleId}`;
const paramsKey = paramsToKey(params);
return `MODULE_ISSUES_WITH_PARAMS_${moduleId}_${paramsKey}`;
};
export const MODULE_DETAILS = (moduleId: string) => `MODULE_DETAILS_${moduleId}`;
export const VIEWS_LIST = (projectId: string) => `VIEWS_LIST_${projectId}`;

View File

@ -425,19 +425,35 @@ export const IssueViewContextProvider: React.FC<{ children: React.ReactNode }> =
}, [myViewProps, viewDetails]);
useEffect(() => {
const params: any = {
order_by: state.orderBy,
group_by: state.groupByProperty,
assignees: state.filters?.assignees ? state.filters?.assignees.join(",") : undefined,
state: state.filters?.state ? state.filters?.state.join(",") : undefined,
priority: state.filters?.priority ? state.filters?.priority.join(",") : undefined,
type: state.filters?.type ? state.filters?.type : undefined,
labels: state.filters?.labels ? state.filters?.labels.join(",") : undefined,
issue__assignees__id: state.filters?.issue__assignees__id
? state.filters?.issue__assignees__id.join(",")
: undefined,
issue__labels__id: state.filters?.issue__labels__id
? state.filters?.issue__labels__id.join(",")
: undefined,
};
// TODO: think of a better way to do this
if (cycleId) {
mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string), {}, false);
mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string));
mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params), {}, false);
mutate(CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params));
} else if (moduleId) {
mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string), {}, false);
mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string));
mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string, params), {}, false);
mutate(MODULE_ISSUES_WITH_PARAMS(moduleId as string, params));
} else if (viewId) {
mutate(VIEW_ISSUES(viewId as string), {}, false);
mutate(VIEW_ISSUES(viewId as string));
} else {
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string), {}, false);
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string));
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params), {}, false);
mutate(PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params));
}
}, [state, projectId, cycleId, moduleId, viewId]);

View File

@ -58,7 +58,7 @@ const useIssuesView = () => {
const { data: projectIssues } = useSWR(
workspaceSlug && projectId && params
? PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string)
? PROJECT_ISSUES_LIST_WITH_PARAMS(projectId as string, params)
: null,
workspaceSlug && projectId && params
? () =>
@ -76,7 +76,7 @@ const useIssuesView = () => {
const { data: cycleIssues } = useSWR(
workspaceSlug && projectId && cycleId && params
? CYCLE_ISSUES_WITH_PARAMS(cycleId as string)
? CYCLE_ISSUES_WITH_PARAMS(cycleId as string, params)
: null,
workspaceSlug && projectId && cycleId && params
? () =>
@ -91,7 +91,7 @@ const useIssuesView = () => {
const { data: moduleIssues } = useSWR(
workspaceSlug && projectId && moduleId && params
? MODULE_ISSUES_WITH_PARAMS(moduleId as string)
? MODULE_ISSUES_WITH_PARAMS(moduleId as string, params)
: null,
workspaceSlug && projectId && moduleId && params
? () =>