Skip to content

Commit f4af78c

Browse files
[WEB-3218] fix: redirection for cross projects issue relations (#6457)
1 parent c0b6abc commit f4af78c

File tree

5 files changed

+24
-25
lines changed

5 files changed

+24
-25
lines changed

web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,7 @@ export const IssueDetailWidgetCollapsibles: FC<Props> = observer((props) => {
5555
/>
5656
)}
5757
{shouldRenderRelations && (
58-
<RelationsCollapsible
59-
workspaceSlug={workspaceSlug}
60-
projectId={projectId}
61-
issueId={issueId}
62-
disabled={disabled}
63-
/>
58+
<RelationsCollapsible workspaceSlug={workspaceSlug} issueId={issueId} disabled={disabled} />
6459
)}
6560
{shouldRenderLinks && (
6661
<LinksCollapsible workspaceSlug={workspaceSlug} projectId={projectId} issueId={issueId} disabled={disabled} />

web/core/components/issues/issue-detail-widgets/relations/content.tsx

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { useRelationOperations } from "./helper";
2020

2121
type Props = {
2222
workspaceSlug: string;
23-
projectId: string;
2423
issueId: string;
2524
disabled: boolean;
2625
issueServiceType?: TIssueServiceType;
@@ -37,7 +36,7 @@ export type TRelationObject = {
3736
};
3837

3938
export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
40-
const { workspaceSlug, projectId, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props;
39+
const { workspaceSlug, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props;
4140
// state
4241
const [issueCrudState, setIssueCrudState] = useState<{
4342
update: TIssueCrudState;
@@ -127,7 +126,6 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
127126
>
128127
<RelationIssueList
129128
workspaceSlug={workspaceSlug}
130-
projectId={projectId}
131129
issueId={issueId}
132130
relationKey={relation.relationKey}
133131
issueIds={relation.issueIds}
@@ -149,10 +147,20 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
149147
}}
150148
data={issueCrudState?.delete?.issue as TIssue}
151149
onSubmit={async () => {
152-
const deleteOperation = !!issueCrudState.delete.issue?.is_epic
153-
? epicOperations.remove
154-
: issueOperations.remove;
155-
await deleteOperation(workspaceSlug, projectId, issueCrudState?.delete?.issue?.id as string);
150+
if (
151+
issueCrudState.delete.issue &&
152+
issueCrudState.delete.issue.id &&
153+
issueCrudState.delete.issue.project_id
154+
) {
155+
const deleteOperation = !!issueCrudState.delete.issue?.is_epic
156+
? epicOperations.remove
157+
: issueOperations.remove;
158+
await deleteOperation(
159+
workspaceSlug,
160+
issueCrudState.delete.issue?.project_id,
161+
issueCrudState?.delete?.issue?.id as string
162+
);
163+
}
156164
}}
157165
isEpic={!!issueCrudState.delete.issue?.is_epic}
158166
/>
@@ -169,7 +177,8 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
169177
}}
170178
data={issueCrudState?.update?.issue ?? undefined}
171179
onSubmit={async (_issue: TIssue) => {
172-
await epicOperations.update(workspaceSlug, projectId, _issue.id, _issue);
180+
if (!_issue.id || !_issue.project_id) return;
181+
await epicOperations.update(workspaceSlug, _issue.project_id, _issue.id, _issue);
173182
}}
174183
/>
175184
) : (
@@ -181,7 +190,8 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
181190
}}
182191
data={issueCrudState?.update?.issue ?? undefined}
183192
onSubmit={async (_issue: TIssue) => {
184-
await issueOperations.update(workspaceSlug, projectId, _issue.id, _issue);
193+
if (!_issue.id || !_issue.project_id) return;
194+
await issueOperations.update(workspaceSlug, _issue.project_id, _issue.id, _issue);
185195
}}
186196
/>
187197
)}

web/core/components/issues/issue-detail-widgets/relations/root.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,13 @@ import { useIssueDetail } from "@/hooks/store";
1111

1212
type Props = {
1313
workspaceSlug: string;
14-
projectId: string;
1514
issueId: string;
1615
disabled?: boolean;
1716
issueServiceType?: TIssueServiceType;
1817
};
1918

2019
export const RelationsCollapsible: FC<Props> = observer((props) => {
21-
const { workspaceSlug, projectId, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props;
20+
const { workspaceSlug, issueId, disabled = false, issueServiceType = EIssueServiceType.ISSUES } = props;
2221
// store hooks
2322
const { openWidgets, toggleOpenWidget } = useIssueDetail(issueServiceType);
2423

@@ -41,7 +40,6 @@ export const RelationsCollapsible: FC<Props> = observer((props) => {
4140
>
4241
<RelationsCollapsibleContent
4342
workspaceSlug={workspaceSlug}
44-
projectId={projectId}
4543
issueId={issueId}
4644
disabled={disabled}
4745
issueServiceType={issueServiceType}

web/core/components/issues/relations/issue-list-item.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import { useRelationOperations } from "../issue-detail-widgets/relations/helper"
2121

2222
type Props = {
2323
workspaceSlug: string;
24-
projectId: string;
2524
issueId: string;
2625
relationKey: TIssueRelationTypes;
2726
relationIssueId: string;
@@ -33,7 +32,6 @@ type Props = {
3332
export const RelationIssueListItem: FC<Props> = observer((props) => {
3433
const {
3534
workspaceSlug,
36-
projectId,
3735
issueId,
3836
relationKey,
3937
relationIssueId,
@@ -57,15 +55,16 @@ export const RelationIssueListItem: FC<Props> = observer((props) => {
5755
const { handleRedirection } = useIssuePeekOverviewRedirection(!!issue?.is_epic);
5856
const issueOperations = useRelationOperations(!!issue?.is_epic ? EIssueServiceType.EPICS : EIssueServiceType.ISSUES);
5957
const projectDetail = (issue && issue.project_id && project.getProjectById(issue.project_id)) || undefined;
58+
const projectId = issue?.project_id;
6059
const currentIssueStateDetail =
6160
(issue?.project_id && getProjectStates(issue?.project_id)?.find((state) => issue?.state_id == state.id)) ||
6261
undefined;
63-
if (!issue) return <></>;
62+
if (!issue || !projectId) return <></>;
6463
const issueLink = `/${workspaceSlug}/projects/${projectId}/${issue.is_epic ? "epics" : "issues"}/${issue.id}`;
6564

6665
// handlers
6766
const handleIssuePeekOverview = (issue: TIssue) => {
68-
if (issueServiceType === EIssueServiceType.ISSUES && issue.is_epic) {
67+
if (issue.is_epic) {
6968
// open epics in new tab
7069
window.open(issueLink, "_blank");
7170
return;

web/core/components/issues/relations/issue-list.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { TIssueRelationTypes } from "@/plane-web/types";
1111

1212
type Props = {
1313
workspaceSlug: string;
14-
projectId: string;
1514
issueId: string;
1615
issueIds: string[];
1716
relationKey: TIssueRelationTypes;
@@ -23,7 +22,6 @@ type Props = {
2322
export const RelationIssueList: FC<Props> = observer((props) => {
2423
const {
2524
workspaceSlug,
26-
projectId,
2725
issueId,
2826
issueIds,
2927
relationKey,
@@ -40,7 +38,6 @@ export const RelationIssueList: FC<Props> = observer((props) => {
4038
<RelationIssueListItem
4139
key={relationIssueId}
4240
workspaceSlug={workspaceSlug}
43-
projectId={projectId}
4441
issueId={issueId}
4542
relationKey={relationKey}
4643
relationIssueId={relationIssueId}

0 commit comments

Comments
 (0)