[WEB-4726] fix: intake work item redirection (#7619)
* chore: added is intake for email notifications * fix: intake work item redirection * chore: code refactor * chore: code refactor --------- Co-authored-by: NarayanBavisetti <narayan3119@gmail.com>
This commit is contained in:
parent
e86b40ac82
commit
d0f26f8734
5 changed files with 26 additions and 4 deletions
|
|
@ -908,9 +908,14 @@ class IssueLiteSerializer(DynamicBaseSerializer):
|
||||||
class IssueDetailSerializer(IssueSerializer):
|
class IssueDetailSerializer(IssueSerializer):
|
||||||
description_html = serializers.CharField()
|
description_html = serializers.CharField()
|
||||||
is_subscribed = serializers.BooleanField(read_only=True)
|
is_subscribed = serializers.BooleanField(read_only=True)
|
||||||
|
is_intake = serializers.BooleanField(read_only=True)
|
||||||
|
|
||||||
class Meta(IssueSerializer.Meta):
|
class Meta(IssueSerializer.Meta):
|
||||||
fields = IssueSerializer.Meta.fields + ["description_html", "is_subscribed"]
|
fields = IssueSerializer.Meta.fields + [
|
||||||
|
"description_html",
|
||||||
|
"is_subscribed",
|
||||||
|
"is_intake",
|
||||||
|
]
|
||||||
read_only_fields = fields
|
read_only_fields = fields
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ from plane.db.models import (
|
||||||
IssueRelation,
|
IssueRelation,
|
||||||
IssueAssignee,
|
IssueAssignee,
|
||||||
IssueLabel,
|
IssueLabel,
|
||||||
|
IntakeIssue,
|
||||||
)
|
)
|
||||||
from plane.utils.grouper import (
|
from plane.utils.grouper import (
|
||||||
issue_group_values,
|
issue_group_values,
|
||||||
|
|
@ -1223,7 +1224,7 @@ class IssueDetailIdentifierEndpoint(BaseAPIView):
|
||||||
|
|
||||||
# Fetch the issue
|
# Fetch the issue
|
||||||
issue = (
|
issue = (
|
||||||
Issue.issue_objects.filter(project_id=project.id)
|
Issue.objects.filter(project_id=project.id)
|
||||||
.filter(workspace__slug=slug)
|
.filter(workspace__slug=slug)
|
||||||
.select_related("workspace", "project", "state", "parent")
|
.select_related("workspace", "project", "state", "parent")
|
||||||
.prefetch_related("assignees", "labels", "issue_module__module")
|
.prefetch_related("assignees", "labels", "issue_module__module")
|
||||||
|
|
@ -1315,6 +1316,16 @@ class IssueDetailIdentifierEndpoint(BaseAPIView):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.annotate(
|
||||||
|
is_intake=Exists(
|
||||||
|
IntakeIssue.objects.filter(
|
||||||
|
issue=OuterRef("id"),
|
||||||
|
status__in=[-2, 0],
|
||||||
|
workspace__slug=slug,
|
||||||
|
project_id=project.id,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
).first()
|
).first()
|
||||||
|
|
||||||
# Check if the issue exists
|
# Check if the issue exists
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,12 @@ const IssueDetailsPage = observer(() => {
|
||||||
return () => window.removeEventListener("resize", handleToggleIssueDetailSidebar);
|
return () => window.removeEventListener("resize", handleToggleIssueDetailSidebar);
|
||||||
}, [issueDetailSidebarCollapsed, toggleIssueDetailSidebar]);
|
}, [issueDetailSidebarCollapsed, toggleIssueDetailSidebar]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (data?.is_intake) {
|
||||||
|
router.push(`/${workspaceSlug}/projects/${data.project_id}/intake/?currentTab=open&inboxIssueId=${data?.id}`);
|
||||||
|
}
|
||||||
|
}, [workspaceSlug, data]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PageHead title={pageTitle} />
|
<PageHead title={pageTitle} />
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,6 @@ export const InboxIssueActionsHeader: FC<TInboxIssueActionsHeader> = observer((p
|
||||||
|
|
||||||
const currentInboxIssueId = inboxIssue?.issue?.id;
|
const currentInboxIssueId = inboxIssue?.issue?.id;
|
||||||
|
|
||||||
const intakeIssueLink = `${workspaceSlug}/projects/${issue?.project_id}/intake/?currentTab=${currentTab}&inboxIssueId=${currentInboxIssueId}`;
|
|
||||||
|
|
||||||
const redirectIssue = (): string | undefined => {
|
const redirectIssue = (): string | undefined => {
|
||||||
let nextOrPreviousIssueId: string | undefined = undefined;
|
let nextOrPreviousIssueId: string | undefined = undefined;
|
||||||
|
|
@ -413,7 +412,7 @@ export const InboxIssueActionsHeader: FC<TInboxIssueActionsHeader> = observer((p
|
||||||
</div>
|
</div>
|
||||||
</CustomMenu.MenuItem>
|
</CustomMenu.MenuItem>
|
||||||
)}
|
)}
|
||||||
<CustomMenu.MenuItem onClick={() => handleCopyIssueLink(intakeIssueLink)}>
|
<CustomMenu.MenuItem onClick={() => handleCopyIssueLink(workItemLink)}>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<Copy size={14} strokeWidth={2} />
|
<Copy size={14} strokeWidth={2} />
|
||||||
{t("inbox_issue.actions.copy")}
|
{t("inbox_issue.actions.copy")}
|
||||||
|
|
|
||||||
|
|
@ -70,6 +70,7 @@ export type TBaseIssue = {
|
||||||
|
|
||||||
is_draft: boolean;
|
is_draft: boolean;
|
||||||
is_epic?: boolean;
|
is_epic?: boolean;
|
||||||
|
is_intake?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type IssueRelation = {
|
export type IssueRelation = {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue