diff --git a/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx b/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx index 8537020b786..9162e631616 100644 --- a/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx +++ b/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx @@ -55,12 +55,7 @@ export const IssueDetailWidgetCollapsibles: FC = observer((props) => { /> )} {shouldRenderRelations && ( - + )} {shouldRenderLinks && ( diff --git a/web/core/components/issues/issue-detail-widgets/relations/content.tsx b/web/core/components/issues/issue-detail-widgets/relations/content.tsx index 54517dcc769..545be649b7d 100644 --- a/web/core/components/issues/issue-detail-widgets/relations/content.tsx +++ b/web/core/components/issues/issue-detail-widgets/relations/content.tsx @@ -20,7 +20,6 @@ import { useRelationOperations } from "./helper"; type Props = { workspaceSlug: string; - projectId: string; issueId: string; disabled: boolean; issueServiceType?: TIssueServiceType; @@ -37,7 +36,7 @@ export type TRelationObject = { }; export const RelationsCollapsibleContent: FC = observer((props) => { - const { workspaceSlug, projectId, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props; + const { workspaceSlug, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props; // state const [issueCrudState, setIssueCrudState] = useState<{ update: TIssueCrudState; @@ -127,7 +126,6 @@ export const RelationsCollapsibleContent: FC = observer((props) => { > = observer((props) => { }} data={issueCrudState?.delete?.issue as TIssue} onSubmit={async () => { - const deleteOperation = !!issueCrudState.delete.issue?.is_epic - ? epicOperations.remove - : issueOperations.remove; - await deleteOperation(workspaceSlug, projectId, issueCrudState?.delete?.issue?.id as string); + if ( + issueCrudState.delete.issue && + issueCrudState.delete.issue.id && + issueCrudState.delete.issue.project_id + ) { + const deleteOperation = !!issueCrudState.delete.issue?.is_epic + ? epicOperations.remove + : issueOperations.remove; + await deleteOperation( + workspaceSlug, + issueCrudState.delete.issue?.project_id, + issueCrudState?.delete?.issue?.id as string + ); + } }} isEpic={!!issueCrudState.delete.issue?.is_epic} /> @@ -169,7 +177,8 @@ export const RelationsCollapsibleContent: FC = observer((props) => { }} data={issueCrudState?.update?.issue ?? undefined} onSubmit={async (_issue: TIssue) => { - await epicOperations.update(workspaceSlug, projectId, _issue.id, _issue); + if (!_issue.id || !_issue.project_id) return; + await epicOperations.update(workspaceSlug, _issue.project_id, _issue.id, _issue); }} /> ) : ( @@ -181,7 +190,8 @@ export const RelationsCollapsibleContent: FC = observer((props) => { }} data={issueCrudState?.update?.issue ?? undefined} onSubmit={async (_issue: TIssue) => { - await issueOperations.update(workspaceSlug, projectId, _issue.id, _issue); + if (!_issue.id || !_issue.project_id) return; + await issueOperations.update(workspaceSlug, _issue.project_id, _issue.id, _issue); }} /> )} diff --git a/web/core/components/issues/issue-detail-widgets/relations/root.tsx b/web/core/components/issues/issue-detail-widgets/relations/root.tsx index 78c6ff39704..803d3fc66e9 100644 --- a/web/core/components/issues/issue-detail-widgets/relations/root.tsx +++ b/web/core/components/issues/issue-detail-widgets/relations/root.tsx @@ -11,14 +11,13 @@ import { useIssueDetail } from "@/hooks/store"; type Props = { workspaceSlug: string; - projectId: string; issueId: string; disabled?: boolean; issueServiceType?: TIssueServiceType; }; export const RelationsCollapsible: FC = observer((props) => { - const { workspaceSlug, projectId, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props; + const { workspaceSlug, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props; // store hooks const { openWidgets, toggleOpenWidget } = useIssueDetail(issueServiceType); @@ -41,7 +40,6 @@ export const RelationsCollapsible: FC = observer((props) => { > = observer((props) => { const { workspaceSlug, - projectId, issueId, relationKey, relationIssueId, @@ -57,15 +55,16 @@ export const RelationIssueListItem: FC = observer((props) => { const { handleRedirection } = useIssuePeekOverviewRedirection(!!issue?.is_epic); const issueOperations = useRelationOperations(!!issue?.is_epic ? EIssueServiceType.EPICS : EIssueServiceType.ISSUES); const projectDetail = (issue && issue.project_id && project.getProjectById(issue.project_id)) || undefined; + const projectId = issue?.project_id; const currentIssueStateDetail = (issue?.project_id && getProjectStates(issue?.project_id)?.find((state) => issue?.state_id == state.id)) || undefined; - if (!issue) return <>; + if (!issue || !projectId) return <>; const issueLink = `/${workspaceSlug}/projects/${projectId}/${issue.is_epic ? "epics" : "issues"}/${issue.id}`; // handlers const handleIssuePeekOverview = (issue: TIssue) => { - if (issueServiceType === EIssueServiceType.ISSUES && issue.is_epic) { + if (issue.is_epic) { // open epics in new tab window.open(issueLink, "_blank"); return; diff --git a/web/core/components/issues/relations/issue-list.tsx b/web/core/components/issues/relations/issue-list.tsx index 947916c292e..f27c068cb56 100644 --- a/web/core/components/issues/relations/issue-list.tsx +++ b/web/core/components/issues/relations/issue-list.tsx @@ -11,7 +11,6 @@ import { TIssueRelationTypes } from "@/plane-web/types"; type Props = { workspaceSlug: string; - projectId: string; issueId: string; issueIds: string[]; relationKey: TIssueRelationTypes; @@ -23,7 +22,6 @@ type Props = { export const RelationIssueList: FC = observer((props) => { const { workspaceSlug, - projectId, issueId, issueIds, relationKey, @@ -40,7 +38,6 @@ export const RelationIssueList: FC = observer((props) => {