[WEB-2629] fix: workspace draft delete and move mutation (#5822)
* fix: mutation fix * chore: code refactor * chore: code refactor * chore: useWorkspaceIssueProperties added
This commit is contained in:
parent
cb90810d02
commit
36229d92e0
3 changed files with 17 additions and 58 deletions
|
|
@ -1,49 +0,0 @@
|
||||||
import React, { useCallback } from "react";
|
|
||||||
import { observer } from "mobx-react";
|
|
||||||
import { useParams } from "next/navigation";
|
|
||||||
import { WorkspaceDraftIssueQuickActions } from "@/components/issues/issue-layouts/quick-action-dropdowns";
|
|
||||||
import { IssuePeekOverview } from "@/components/issues/peek-overview";
|
|
||||||
import { EIssuesStoreType } from "@/constants/issue";
|
|
||||||
import { useUserPermissions } from "@/hooks/store";
|
|
||||||
import { IssuesStoreContext } from "@/hooks/use-issue-layout-store";
|
|
||||||
import { useWorkspaceIssueProperties } from "@/hooks/use-workspace-issue-properties";
|
|
||||||
import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions";
|
|
||||||
import { BaseListRoot } from "../../../list/base-list-root";
|
|
||||||
|
|
||||||
export const WorkspaceDraftIssueLayoutRoot = observer(() => {
|
|
||||||
// router
|
|
||||||
const { workspaceSlug } = useParams();
|
|
||||||
|
|
||||||
//swr hook for fetching issue properties
|
|
||||||
useWorkspaceIssueProperties(workspaceSlug);
|
|
||||||
// store
|
|
||||||
const { allowPermissions } = useUserPermissions();
|
|
||||||
|
|
||||||
const canEditProperties = useCallback(
|
|
||||||
(projectId: string | undefined) => {
|
|
||||||
if (!projectId) return false;
|
|
||||||
return allowPermissions(
|
|
||||||
[EUserPermissions.ADMIN, EUserPermissions.MEMBER],
|
|
||||||
EUserPermissionsLevel.PROJECT,
|
|
||||||
workspaceSlug.toString(),
|
|
||||||
projectId
|
|
||||||
);
|
|
||||||
},
|
|
||||||
[workspaceSlug, allowPermissions]
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<IssuesStoreContext.Provider value={EIssuesStoreType.WORKSPACE_DRAFT}>
|
|
||||||
<div className="relative flex h-full w-full flex-col overflow-hidden">
|
|
||||||
<div className="relative h-full w-full overflow-auto">
|
|
||||||
<BaseListRoot
|
|
||||||
//@ts-expect-error type mismatch
|
|
||||||
QuickActions={WorkspaceDraftIssueQuickActions}
|
|
||||||
canEditPropertiesBasedOnProject={canEditProperties}
|
|
||||||
/>
|
|
||||||
<IssuePeekOverview is_draft />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</IssuesStoreContext.Provider>
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
@ -12,6 +12,7 @@ import { EDraftIssuePaginationType } from "@/constants/workspace-drafts";
|
||||||
import { cn } from "@/helpers/common.helper";
|
import { cn } from "@/helpers/common.helper";
|
||||||
// hooks
|
// hooks
|
||||||
import { useCommandPalette, useProject, useWorkspaceDraftIssues } from "@/hooks/store";
|
import { useCommandPalette, useProject, useWorkspaceDraftIssues } from "@/hooks/store";
|
||||||
|
import { useWorkspaceIssueProperties } from "@/hooks/use-workspace-issue-properties";
|
||||||
// components
|
// components
|
||||||
import { DraftIssueBlock } from "./draft-issue-block";
|
import { DraftIssueBlock } from "./draft-issue-block";
|
||||||
import { WorkspaceDraftEmptyState } from "./empty-state";
|
import { WorkspaceDraftEmptyState } from "./empty-state";
|
||||||
|
|
@ -28,6 +29,9 @@ export const WorkspaceDraftIssuesRoot: FC<TWorkspaceDraftIssuesRoot> = observer(
|
||||||
const { workspaceProjectIds } = useProject();
|
const { workspaceProjectIds } = useProject();
|
||||||
const { toggleCreateProjectModal } = useCommandPalette();
|
const { toggleCreateProjectModal } = useCommandPalette();
|
||||||
|
|
||||||
|
//swr hook for fetching issue properties
|
||||||
|
useWorkspaceIssueProperties(workspaceSlug);
|
||||||
|
|
||||||
// fetching issues
|
// fetching issues
|
||||||
useSWR(
|
useSWR(
|
||||||
workspaceSlug && issueIds.length <= 0 ? `WORKSPACE_DRAFT_ISSUES_${workspaceSlug}` : null,
|
workspaceSlug && issueIds.length <= 0 ? `WORKSPACE_DRAFT_ISSUES_${workspaceSlug}` : null,
|
||||||
|
|
@ -40,10 +44,6 @@ export const WorkspaceDraftIssuesRoot: FC<TWorkspaceDraftIssuesRoot> = observer(
|
||||||
await fetchIssues(workspaceSlug, "pagination", EDraftIssuePaginationType.NEXT);
|
await fetchIssues(workspaceSlug, "pagination", EDraftIssuePaginationType.NEXT);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loader === "init-loader" && issueIds.length <= 0) {
|
|
||||||
return <WorkspaceDraftIssuesLoader items={14} />;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (workspaceProjectIds?.length === 0)
|
if (workspaceProjectIds?.length === 0)
|
||||||
return (
|
return (
|
||||||
<EmptyState
|
<EmptyState
|
||||||
|
|
@ -55,7 +55,11 @@ export const WorkspaceDraftIssuesRoot: FC<TWorkspaceDraftIssuesRoot> = observer(
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|
||||||
if (loader === "empty-state" && issueIds.length <= 0) return <WorkspaceDraftEmptyState />;
|
if (issueIds.length <= 0) return <WorkspaceDraftEmptyState />;
|
||||||
|
|
||||||
|
if (loader === "init-loader") {
|
||||||
|
return <WorkspaceDraftIssuesLoader items={14} />;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
|
|
|
||||||
|
|
@ -299,8 +299,10 @@ export class WorkspaceDraftIssues implements IWorkspaceDraftIssues {
|
||||||
|
|
||||||
const response = await workspaceDraftService.deleteIssue(workspaceSlug, issueId);
|
const response = await workspaceDraftService.deleteIssue(workspaceSlug, issueId);
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
unset(this.issueMapIds[workspaceSlug], issueId);
|
// Remove the issue from the issueMapIds
|
||||||
unset(this.issuesMap, issueId);
|
this.issueMapIds[workspaceSlug] = (this.issueMapIds[workspaceSlug] || []).filter((id) => id !== issueId);
|
||||||
|
// Remove the issue from the issuesMap
|
||||||
|
delete this.issuesMap[issueId];
|
||||||
// reduce the count of issues in the pagination info
|
// reduce the count of issues in the pagination info
|
||||||
if (this.paginationInfo?.total_count) {
|
if (this.paginationInfo?.total_count) {
|
||||||
set(this, "paginationInfo", {
|
set(this, "paginationInfo", {
|
||||||
|
|
@ -324,8 +326,10 @@ export class WorkspaceDraftIssues implements IWorkspaceDraftIssues {
|
||||||
|
|
||||||
const response = await workspaceDraftService.moveIssue(workspaceSlug, issueId, payload);
|
const response = await workspaceDraftService.moveIssue(workspaceSlug, issueId, payload);
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
unset(this.issueMapIds[workspaceSlug], issueId);
|
// Remove the issue from the issueMapIds
|
||||||
unset(this.issuesMap, issueId);
|
this.issueMapIds[workspaceSlug] = (this.issueMapIds[workspaceSlug] || []).filter((id) => id !== issueId);
|
||||||
|
// Remove the issue from the issuesMap
|
||||||
|
delete this.issuesMap[issueId];
|
||||||
// reduce the count of issues in the pagination info
|
// reduce the count of issues in the pagination info
|
||||||
if (this.paginationInfo?.total_count) {
|
if (this.paginationInfo?.total_count) {
|
||||||
set(this, "paginationInfo", {
|
set(this, "paginationInfo", {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue