[WEB-3711] fix: relations delete issue (#6887)

* fix: relations delete issue

* fix: removed unnecessary type casting
This commit is contained in:
Akshita Goyal 2025-04-08 14:37:00 +05:30 committed by GitHub
parent 5ac5892fe5
commit 782b09eeaf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 67 additions and 19 deletions

View file

@ -44,6 +44,7 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
const [issueCrudState, setIssueCrudState] = useState<{
update: TIssueCrudState;
delete: TIssueCrudState;
removeRelation: TIssueCrudState & { relationKey: string | undefined; relationIssueId: string | undefined };
}>({
update: {
toggle: false,
@ -55,11 +56,18 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
issueId: undefined,
issue: undefined,
},
removeRelation: {
toggle: false,
issueId: undefined,
issue: undefined,
relationKey: undefined,
relationIssueId: undefined,
},
});
// store hooks
const {
relation: { getRelationsByIssueId },
relation: { getRelationsByIssueId, removeRelation },
toggleDeleteIssueModal,
toggleCreateIssueModal,
} = useIssueDetail(issueServiceType);
@ -72,15 +80,23 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
const relations = getRelationsByIssueId(issueId);
const ISSUE_RELATION_OPTIONS = useTimeLineRelationOptions();
const handleIssueCrudState = (key: "update" | "delete", _issueId: string | null, issue: TIssue | null = null) => {
setIssueCrudState({
...issueCrudState,
const handleIssueCrudState = (
key: "update" | "delete" | "removeRelation",
_issueId: string | null,
issue: TIssue | null = null,
relationKey?: TIssueRelationTypes | null,
relationIssueId?: string | null
) => {
setIssueCrudState((prevState) => ({
...prevState,
[key]: {
toggle: !issueCrudState[key].toggle,
toggle: !prevState[key].toggle,
issueId: _issueId,
issue: issue,
relationKey: relationKey,
relationIssueId: relationIssueId,
},
});
}));
};
// if relations are not available, return null
@ -150,6 +166,21 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
}}
data={issueCrudState?.delete?.issue as TIssue}
onSubmit={async () => {
if (
issueCrudState.removeRelation.issueId &&
issueCrudState.removeRelation.issue?.project_id &&
issueCrudState.removeRelation.relationKey &&
issueCrudState.removeRelation.relationIssueId
) {
await removeRelation(
workspaceSlug,
issueCrudState.removeRelation.issue.project_id,
issueCrudState.removeRelation.issueId,
issueCrudState.removeRelation.relationKey as TIssueRelationTypes,
issueCrudState.removeRelation.relationIssueId,
true
);
}
if (
issueCrudState.delete.issue &&
issueCrudState.delete.issue.id &&
@ -161,7 +192,7 @@ export const RelationsCollapsibleContent: FC<Props> = observer((props) => {
await deleteOperation(
workspaceSlug,
issueCrudState.delete.issue?.project_id,
issueCrudState?.delete?.issue?.id as string
issueCrudState?.delete?.issue?.id
);
}
}}

View file

@ -28,7 +28,13 @@ type Props = {
relationKey: TIssueRelationTypes;
relationIssueId: string;
disabled: boolean;
handleIssueCrudState: (key: "update" | "delete", issueId: string, issue?: TIssue | null) => void;
handleIssueCrudState: (
key: "update" | "delete" | "removeRelation",
issueId: string,
issue?: TIssue | null,
relationKey?: TIssueRelationTypes | null,
relationIssueId?: string | null
) => void;
issueServiceType?: TIssueServiceType;
};
@ -97,6 +103,7 @@ export const RelationIssueListItem: FC<Props> = observer((props) => {
e.preventDefault();
handleIssueCrudState("delete", relationIssueId, issue);
toggleDeleteIssueModal(relationIssueId);
handleIssueCrudState("removeRelation", issueId, issue, relationKey, relationIssueId);
};
const handleCopyIssueLink = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {

View file

@ -14,7 +14,13 @@ type Props = {
issueId: string;
issueIds: string[];
relationKey: TIssueRelationTypes;
handleIssueCrudState: (key: "update" | "delete", issueId: string, issue?: TIssue | null) => void;
handleIssueCrudState: (
key: "update" | "delete" | "removeRelation",
issueId: string,
issue?: TIssue | null,
relationKey?: TIssueRelationTypes | null,
relationIssueId?: string | null
) => void;
disabled?: boolean;
issueServiceType?: TIssueServiceType;
};