From 3fff7a458f7cd616c804f640b9e38306f9071ea6 Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Tue, 20 Feb 2024 19:50:38 +0530 Subject: [PATCH] improvement: open sub-issues accordion by default in issue details page. --- web/components/issues/sub-issues/root.tsx | 36 +++++++++++++++++------ 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/web/components/issues/sub-issues/root.tsx b/web/components/issues/sub-issues/root.tsx index 2b93384e2f1..9e8bd290952 100644 --- a/web/components/issues/sub-issues/root.tsx +++ b/web/components/issues/sub-issues/root.tsx @@ -1,4 +1,4 @@ -import { FC, useMemo, useState } from "react"; +import { FC, useCallback, useEffect, useMemo, useState } from "react"; import { useRouter } from "next/router"; import { observer } from "mobx-react-lite"; import { Plus, ChevronRight, ChevronDown, Loader } from "lucide-react"; @@ -260,6 +260,31 @@ export const SubIssuesRoot: FC = observer((props) => { const subIssues = subIssuesByIssueId(parentIssueId); const subIssueHelpers = subIssueHelpersByIssueId(`${parentIssueId}_root`); + const handleFetchSubIssues = useCallback(async () => { + if (!subIssueHelpers.issue_visibility.includes(parentIssueId)) { + setSubIssueHelpers(`${parentIssueId}_root`, "preview_loader", parentIssueId); + await subIssueOperations.fetchSubIssues(workspaceSlug, projectId, parentIssueId); + setSubIssueHelpers(`${parentIssueId}_root`, "preview_loader", parentIssueId); + } + setSubIssueHelpers(`${parentIssueId}_root`, "issue_visibility", parentIssueId); + }, [ + parentIssueId, + projectId, + setSubIssueHelpers, + subIssueHelpers.issue_visibility, + subIssueOperations, + workspaceSlug, + ]); + + useEffect(() => { + handleFetchSubIssues(); + + return () => { + handleFetchSubIssues(); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [parentIssueId]); + if (!issue) return <>; return (
@@ -272,14 +297,7 @@ export const SubIssuesRoot: FC = observer((props) => {
{ - if (!subIssueHelpers.issue_visibility.includes(parentIssueId)) { - setSubIssueHelpers(`${parentIssueId}_root`, "preview_loader", parentIssueId); - await subIssueOperations.fetchSubIssues(workspaceSlug, projectId, parentIssueId); - setSubIssueHelpers(`${parentIssueId}_root`, "preview_loader", parentIssueId); - } - setSubIssueHelpers(`${parentIssueId}_root`, "issue_visibility", parentIssueId); - }} + onClick={handleFetchSubIssues} >
{subIssueHelpers.preview_loader.includes(parentIssueId) ? (