From 938d2fd01d127df2dfe10e14e89b3758aa5bb033 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Wed, 14 Aug 2024 12:51:35 +0530 Subject: [PATCH] fix: workspace download mutation (#798) --- .../workspace/download/download-item/root.tsx | 19 ++++++++++++++++--- .../workspace/download/download-list.tsx | 6 +++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/web/ee/components/worklogs/workspace/download/download-item/root.tsx b/web/ee/components/worklogs/workspace/download/download-item/root.tsx index f7dceb1ecb..e4455bbd4b 100644 --- a/web/ee/components/worklogs/workspace/download/download-item/root.tsx +++ b/web/ee/components/worklogs/workspace/download/download-item/root.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC } from "react"; +import { FC, useEffect } from "react"; import { observer } from "mobx-react"; import { ArrowRight } from "lucide-react"; import { Button } from "@plane/ui"; @@ -15,13 +15,14 @@ import { EWorklogDownloadLoader } from "@/plane-web/constants/workspace-worklog" import { useWorklogDownload, useWorkspaceWorklogDownloads } from "@/plane-web/hooks/store"; type TWorkspaceWorklogDownloadItem = { + workspaceSlug: string; worklogDownloadId: string; }; export const WorkspaceWorklogDownloadItem: FC = observer((props) => { - const { worklogDownloadId } = props; + const { workspaceSlug, worklogDownloadId } = props; // hooks - const { loader } = useWorkspaceWorklogDownloads(); + const { loader, getWorkspaceWorklogDownloads } = useWorkspaceWorklogDownloads(); const { asJson: worklogDownload } = useWorklogDownload(worklogDownloadId); const { workspace: { getWorkspaceMemberDetails }, @@ -48,6 +49,18 @@ export const WorkspaceWorklogDownloadItem: FC = o worklogDownload?.name || `Export to ${worklogDownload.provider}` ); + useEffect(() => { + const interval = setInterval(() => { + if (["processing", "queued"].includes(worklogDownload?.status ?? "")) { + getWorkspaceWorklogDownloads(workspaceSlug, EWorklogDownloadLoader.MUTATION_LOADER); + } else { + clearInterval(interval); + } + }, 3000); + + return () => clearInterval(interval); + }, [workspaceSlug, worklogDownload?.status]); + if (!worklogDownload) return <>; return ( diff --git a/web/ee/components/worklogs/workspace/download/download-list.tsx b/web/ee/components/worklogs/workspace/download/download-list.tsx index 4943649e47..814fcd2c57 100644 --- a/web/ee/components/worklogs/workspace/download/download-list.tsx +++ b/web/ee/components/worklogs/workspace/download/download-list.tsx @@ -37,7 +37,11 @@ export const WorkspaceWorklogDownloadList: FC = o ) : ( worklogDownloadIds.map((downloadId) => ( - + )) )}