From 64165695bb88906c7aeb002f89b3db2a6cff5f52 Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Tue, 27 May 2025 18:59:36 +0530 Subject: [PATCH 1/3] fix: return project joining date --- apiserver/plane/app/serializers/project.py | 2 +- apiserver/plane/app/views/project/member.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apiserver/plane/app/serializers/project.py b/apiserver/plane/app/serializers/project.py index 73c8a85d973..fa58ea49915 100644 --- a/apiserver/plane/app/serializers/project.py +++ b/apiserver/plane/app/serializers/project.py @@ -151,7 +151,7 @@ class Meta: class ProjectMemberRoleSerializer(DynamicBaseSerializer): class Meta: model = ProjectMember - fields = ("id", "role", "member", "project") + fields = ("id", "role", "member", "project", "created_at") class ProjectMemberInviteSerializer(BaseSerializer): diff --git a/apiserver/plane/app/views/project/member.py b/apiserver/plane/app/views/project/member.py index 7b910509c41..b2e8a6e3c89 100644 --- a/apiserver/plane/app/views/project/member.py +++ b/apiserver/plane/app/views/project/member.py @@ -171,7 +171,7 @@ def list(self, request, slug, project_id): ).select_related("project", "member", "workspace") serializer = ProjectMemberRoleSerializer( - project_members, fields=("id", "member", "role"), many=True + project_members, fields=("id", "member", "role", "created_at"), many=True ) return Response(serializer.data, status=status.HTTP_200_OK) From 0f82be1bdd088e0a09aa125eeb0e3cca925d6efc Mon Sep 17 00:00:00 2001 From: gakshita Date: Tue, 27 May 2025 19:27:36 +0530 Subject: [PATCH 2/3] fix: added project's joining date --- packages/types/src/project/projects.d.ts | 1 + packages/types/src/users.d.ts | 1 + web/core/store/member/project-member.store.ts | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/types/src/project/projects.d.ts b/packages/types/src/project/projects.d.ts index e1d9117a1be..d83853bb6e8 100644 --- a/packages/types/src/project/projects.d.ts +++ b/packages/types/src/project/projects.d.ts @@ -114,6 +114,7 @@ export interface IProjectMembership { id: string; member: string; role: TUserPermissions; + created_at: string; } export interface IProjectBulkAddFormData { diff --git a/packages/types/src/users.d.ts b/packages/types/src/users.d.ts index 9f6ac490559..eda9a022af2 100644 --- a/packages/types/src/users.d.ts +++ b/packages/types/src/users.d.ts @@ -12,6 +12,7 @@ export interface IUserLite { id: string; is_bot: boolean; last_name: string; + joining_date?: string; } export interface IUser extends IUserLite { // only for uploading the cover image diff --git a/web/core/store/member/project-member.store.ts b/web/core/store/member/project-member.store.ts index e97e5ab320d..ad9b1252a75 100644 --- a/web/core/store/member/project-member.store.ts +++ b/web/core/store/member/project-member.store.ts @@ -127,7 +127,10 @@ export class ProjectMemberStore implements IProjectMemberStore { const memberDetails: IProjectMemberDetails = { id: projectMember.id, role: projectMember.role, - member: this.memberRoot?.memberMap?.[projectMember.member], + member: { + ...this.memberRoot?.memberMap?.[projectMember.member], + joining_date: projectMember.created_at, + }, }; return memberDetails; }); From 9c83fbfc580ff4c316e1cac0fe935ebcd64f7804 Mon Sep 17 00:00:00 2001 From: sangeethailango Date: Wed, 28 May 2025 16:42:24 +0530 Subject: [PATCH 3/3] fix: set created_at as read_only_fields --- apiserver/plane/app/serializers/project.py | 1 + apiserver/plane/app/views/project/member.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apiserver/plane/app/serializers/project.py b/apiserver/plane/app/serializers/project.py index fa58ea49915..62263855895 100644 --- a/apiserver/plane/app/serializers/project.py +++ b/apiserver/plane/app/serializers/project.py @@ -152,6 +152,7 @@ class ProjectMemberRoleSerializer(DynamicBaseSerializer): class Meta: model = ProjectMember fields = ("id", "role", "member", "project", "created_at") + read_only_fields = ["created_at"] class ProjectMemberInviteSerializer(BaseSerializer): diff --git a/apiserver/plane/app/views/project/member.py b/apiserver/plane/app/views/project/member.py index b2e8a6e3c89..7b910509c41 100644 --- a/apiserver/plane/app/views/project/member.py +++ b/apiserver/plane/app/views/project/member.py @@ -171,7 +171,7 @@ def list(self, request, slug, project_id): ).select_related("project", "member", "workspace") serializer = ProjectMemberRoleSerializer( - project_members, fields=("id", "member", "role", "created_at"), many=True + project_members, fields=("id", "member", "role"), many=True ) return Response(serializer.data, status=status.HTTP_200_OK)