From e73a4bef4ecee846685187cc3b3862dd34c3ff94 Mon Sep 17 00:00:00 2001 From: Nikhil <118773738+pablohashescobar@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:03:19 +0530 Subject: [PATCH 01/10] chore: issue and project details in activity (#1747) * chore: issue and project details in activity * dev: update capture log --- apiserver/plane/api/serializers/issue.py | 3 ++- apiserver/plane/api/views/issue.py | 2 +- apiserver/plane/api/views/people.py | 2 +- apiserver/plane/api/views/project.py | 2 +- apiserver/plane/api/views/workspace.py | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/apiserver/plane/api/serializers/issue.py b/apiserver/plane/api/serializers/issue.py index ecbb1ca46b7..770880ef035 100644 --- a/apiserver/plane/api/serializers/issue.py +++ b/apiserver/plane/api/serializers/issue.py @@ -291,7 +291,8 @@ def update(self, instance, validated_data): class IssueActivitySerializer(BaseSerializer): actor_detail = UserLiteSerializer(read_only=True, source="actor") - workspace_detail = WorkspaceLiteSerializer(read_only=True, source="workspace") + issue_detail = IssueFlatSerializer(read_only=True, source="issue") + project_detail = ProjectLiteSerializer(read_only=True, source="project") class Meta: model = IssueActivity diff --git a/apiserver/plane/api/views/issue.py b/apiserver/plane/api/views/issue.py index 38d90ecf9fa..9369ccf2b35 100644 --- a/apiserver/plane/api/views/issue.py +++ b/apiserver/plane/api/views/issue.py @@ -477,7 +477,7 @@ def get(self, request, slug, project_id, issue_id): ~Q(field="comment"), project__project_projectmember__member=self.request.user, ) - .select_related("actor", "workspace") + .select_related("actor", "workspace", "issue", "project") ).order_by("created_at") issue_comments = ( IssueComment.objects.filter(issue_id=issue_id) diff --git a/apiserver/plane/api/views/people.py b/apiserver/plane/api/views/people.py index 705f5c96e00..84ee47e4258 100644 --- a/apiserver/plane/api/views/people.py +++ b/apiserver/plane/api/views/people.py @@ -140,7 +140,7 @@ class UserActivityEndpoint(BaseAPIView, BasePaginator): def get(self, request): try: queryset = IssueActivity.objects.filter(actor=request.user).select_related( - "actor", "workspace" + "actor", "workspace", "issue", "project" ) return self.paginate( diff --git a/apiserver/plane/api/views/project.py b/apiserver/plane/api/views/project.py index dfeab07cc0a..0589f4a6180 100644 --- a/apiserver/plane/api/views/project.py +++ b/apiserver/plane/api/views/project.py @@ -267,7 +267,7 @@ def create(self, request, slug): status=status.HTTP_410_GONE, ) except Exception as e: - pr(e) + capture_exception(e) return Response( {"error": "Something went wrong please try again later"}, status=status.HTTP_400_BAD_REQUEST, diff --git a/apiserver/plane/api/views/workspace.py b/apiserver/plane/api/views/workspace.py index 51db47c3dde..b195cedb1ef 100644 --- a/apiserver/plane/api/views/workspace.py +++ b/apiserver/plane/api/views/workspace.py @@ -1190,7 +1190,7 @@ def get(self, request, slug, user_id): workspace__slug=slug, project__project_projectmember__member=request.user, actor=user_id, - ).select_related("actor", "workspace") + ).select_related("actor", "workspace", "issue", "project") if projects: queryset = queryset.filter(project__in=projects) From d315a24c1cf07a8ee3bc4304735f7c3707b04b7b Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:04:23 +0530 Subject: [PATCH 02/10] style: primary color variable added in global (#1748) --- apps/app/styles/globals.css | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/apps/app/styles/globals.css b/apps/app/styles/globals.css index 36d87edf2b3..b8f662902ee 100644 --- a/apps/app/styles/globals.css +++ b/apps/app/styles/globals.css @@ -25,6 +25,25 @@ :root { color-scheme: light !important; + --color-primary-10: 236, 241, 255; + --color-primary-20: 217, 228, 255; + --color-primary-30: 197, 214, 255; + --color-primary-40: 178, 200, 255; + --color-primary-50: 159, 187, 255; + --color-primary-60: 140, 173, 255; + --color-primary-70: 121, 159, 255; + --color-primary-80: 101, 145, 255; + --color-primary-90: 82, 132, 255; + --color-primary-100: 63, 118, 255; + --color-primary-200: 57, 106, 230; + --color-primary-300: 50, 94, 204; + --color-primary-400: 44, 83, 179; + --color-primary-500: 38, 71, 153; + --color-primary-600: 32, 59, 128; + --color-primary-700: 25, 47, 102; + --color-primary-800: 19, 35, 76; + --color-primary-900: 13, 24, 51; + --color-background-100: 255, 255, 255; /* primary bg */ --color-background-90: 250, 250, 250; /* secondary bg */ --color-background-80: 245, 245, 245; /* tertiary bg */ From a8816ef473c38a7cfd22696f3268ef64eebcef3d Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Date: Tue, 1 Aug 2023 17:07:11 +0530 Subject: [PATCH 03/10] refactor: issue activity component (#1749) --- .../core/activity.tsx} | 239 ++++++++++++++++-- apps/app/components/core/index.ts | 1 + apps/app/components/issues/activity.tsx | 15 +- .../issues/comment/comment-card.tsx | 6 +- .../issues/comment/comment-reaction.tsx | 8 +- .../components/profile/overview/activity.tsx | 8 +- apps/app/types/issues.d.ts | 25 +- apps/app/types/users.d.ts | 26 +- 8 files changed, 243 insertions(+), 85 deletions(-) rename apps/app/{helpers/activity.helper.tsx => components/core/activity.tsx} (62%) diff --git a/apps/app/helpers/activity.helper.tsx b/apps/app/components/core/activity.tsx similarity index 62% rename from apps/app/helpers/activity.helper.tsx rename to apps/app/components/core/activity.tsx index af5d9bf1267..078941b02a5 100644 --- a/apps/app/helpers/activity.helper.tsx +++ b/apps/app/components/core/activity.tsx @@ -1,5 +1,7 @@ +import { useRouter } from "next/router"; + // icons -import { Icon } from "components/ui"; +import { Icon, Tooltip } from "components/ui"; import { Squares2X2Icon } from "@heroicons/react/24/outline"; import { BlockedIcon, BlockerIcon } from "components/icons"; // helpers @@ -8,26 +10,65 @@ import { capitalizeFirstLetter } from "helpers/string.helper"; // types import { IIssueActivity } from "types"; -export const activityDetails: { +const IssueLink = ({ activity }: { activity: IIssueActivity }) => { + const router = useRouter(); + const { workspaceSlug } = router.query; + + return ( + + + {activity.issue_detail + ? `${activity.project_detail.identifier}-${activity.issue_detail.sequence_id}` + : "Issue"} + + + + ); +}; + +const activityDetails: { [key: string]: { - message: (activity: IIssueActivity) => React.ReactNode; + message: (activity: IIssueActivity, showIssue: boolean) => React.ReactNode; icon: React.ReactNode; }; } = { assignees: { - message: (activity) => { + message: (activity, showIssue) => { if (activity.old_value === "") return ( <> added a new assignee{" "} - {activity.new_value}. + {activity.new_value} + {showIssue && ( + <> + {" "} + to + + )} + . ); else return ( <> removed the assignee{" "} - {activity.old_value}. + {activity.old_value} + {showIssue && ( + <> + {" "} + from + + )} + . ); }, @@ -41,7 +82,7 @@ export const activityDetails: { icon: