Revert "[WEB-4959]chore: refactor project member page #8464" (#8476)

This reverts commit c97e418515.
This commit is contained in:
sriram veeraghanta 2025-12-30 21:46:32 +05:30 committed by GitHub
parent d61b157929
commit 6129e8e53b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 51 additions and 85 deletions

View file

@ -81,7 +81,6 @@ export interface IBaseProjectMemberStore {
role: EUserProjectRoles
) => Promise<TProjectMembership>;
removeMemberFromProject: (workspaceSlug: string, projectId: string, userId: string) => Promise<void>;
mutateProjectMembersActivity: (workspaceSlug: string, projectId: string) => Promise<void>;
}
export abstract class BaseProjectMemberStore implements IBaseProjectMemberStore {
@ -316,13 +315,13 @@ export abstract class BaseProjectMemberStore implements IBaseProjectMemberStore
});
});
});
update(this.projectRoot.projectMap, [projectId, "members"], (memberIds: string[]) =>
update(this.projectRoot.projectMap, [projectId, "members"], (memberIds) =>
uniq([...memberIds, ...data.members.map((m) => m.member_id)])
);
this.projectRoot.projectMap[projectId].members = this.projectRoot.projectMap?.[projectId]?.members?.concat(
data.members.map((m) => m.member_id)
);
void this.mutateProjectMembersActivity(workspaceSlug, projectId);
return response;
});
@ -376,7 +375,6 @@ export abstract class BaseProjectMemberStore implements IBaseProjectMemberStore
role,
}
);
void this.mutateProjectMembersActivity(workspaceSlug, projectId);
return response;
} catch (error) {
// revert back to original members in case of error
@ -431,11 +429,11 @@ export abstract class BaseProjectMemberStore implements IBaseProjectMemberStore
removeMemberFromProject = async (workspaceSlug: string, projectId: string, userId: string) => {
const memberDetails = this.getProjectMemberDetails(userId, projectId);
if (!memberDetails || !memberDetails?.id) throw new Error("Member not found");
await this.projectMemberService.deleteProjectMember(workspaceSlug, projectId, memberDetails?.id);
runInAction(() => {
this.processMemberRemoval(projectId, userId);
await this.projectMemberService.deleteProjectMember(workspaceSlug, projectId, memberDetails?.id).then(() => {
runInAction(() => {
this.processMemberRemoval(projectId, userId);
});
});
void this.mutateProjectMembersActivity(workspaceSlug, projectId);
};
/**
@ -503,11 +501,4 @@ export abstract class BaseProjectMemberStore implements IBaseProjectMemberStore
throw error;
}
};
/**
* Mutate project members activity
* @param workspaceSlug
* @param projectId
*/
abstract mutateProjectMembersActivity(workspaceSlug: string, projectId: string): Promise<void>;
}

View file

@ -4,14 +4,14 @@ import { computedFn } from "mobx-utils";
// types
import type { EUserPermissions } from "@plane/constants";
import type { IWorkspaceBulkInviteFormData, IWorkspaceMember, IWorkspaceMemberInvitation } from "@plane/types";
// plane-web imports
import type { RootStore } from "@/plane-web/store/root.store";
// plane-web constants
// services
import { WorkspaceService } from "@/plane-web/services";
// types
import type { IRouterStore } from "@/store/router.store";
import type { IUserStore } from "@/store/user";
// store
import type { CoreRootStore } from "../../root.store";
import type { IMemberRootStore } from "../index.ts";
import type { IWorkspaceMemberFiltersStore } from "./workspace-member-filters.store";
import { WorkspaceMemberFiltersStore } from "./workspace-member-filters.store";
@ -69,11 +69,10 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
routerStore: IRouterStore;
userStore: IUserStore;
memberRoot: IMemberRootStore;
rootStore: RootStore;
// services
workspaceService;
constructor(_memberRoot: IMemberRootStore, _rootStore: RootStore) {
constructor(_memberRoot: IMemberRootStore, _rootStore: CoreRootStore) {
makeObservable(this, {
// observables
workspaceMemberMap: observable,
@ -96,7 +95,6 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
this.routerStore = _rootStore.router;
this.userStore = _rootStore.user;
this.memberRoot = _memberRoot;
this.rootStore = _rootStore;
// services
this.workspaceService = new WorkspaceService();
}
@ -261,7 +259,6 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
set(this.workspaceMemberMap, [workspaceSlug, userId, "role"], data.role);
});
await this.workspaceService.updateWorkspaceMember(workspaceSlug, memberDetails.id, data);
void this.rootStore.workspaceRoot.mutateWorkspaceMembersActivity(workspaceSlug);
} catch (error) {
// revert back to original members in case of error
runInAction(() => {
@ -279,11 +276,11 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
removeMemberFromWorkspace = async (workspaceSlug: string, userId: string) => {
const memberDetails = this.getWorkspaceMemberDetails(userId);
if (!memberDetails) throw new Error("Member not found");
await this.workspaceService.deleteWorkspaceMember(workspaceSlug, memberDetails?.id);
runInAction(() => {
set(this.workspaceMemberMap, [workspaceSlug, userId, "is_active"], false);
await this.workspaceService.deleteWorkspaceMember(workspaceSlug, memberDetails?.id).then(() => {
runInAction(() => {
set(this.workspaceMemberMap, [workspaceSlug, userId, "is_active"], false);
});
});
void this.rootStore.workspaceRoot.mutateWorkspaceMembersActivity(workspaceSlug);
};
/**
@ -304,9 +301,9 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
* @param data
*/
inviteMembersToWorkspace = async (workspaceSlug: string, data: IWorkspaceBulkInviteFormData) => {
await this.workspaceService.inviteWorkspace(workspaceSlug, data);
const response = await this.workspaceService.inviteWorkspace(workspaceSlug, data);
await this.fetchWorkspaceMemberInvitations(workspaceSlug);
void this.rootStore.workspaceRoot.mutateWorkspaceMembersActivity(workspaceSlug);
return response;
};
/**
@ -320,7 +317,7 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
invitationId: string,
data: Partial<IWorkspaceMemberInvitation>
) => {
const originalMemberInvitations = [...(this.workspaceMemberInvitations?.[workspaceSlug] ?? [])]; // in case of error, we will revert back to original members
const originalMemberInvitations = [...this.workspaceMemberInvitations?.[workspaceSlug]]; // in case of error, we will revert back to original members
try {
const memberInvitations = originalMemberInvitations?.map((invitation) => ({
...invitation,
@ -345,15 +342,14 @@ export class WorkspaceMemberStore implements IWorkspaceMemberStore {
* @param workspaceSlug
* @param memberId
*/
deleteMemberInvitation = async (workspaceSlug: string, invitationId: string) => {
await this.workspaceService.deleteWorkspaceInvitations(workspaceSlug.toString(), invitationId);
runInAction(() => {
this.workspaceMemberInvitations[workspaceSlug] = this.workspaceMemberInvitations[workspaceSlug].filter(
(inv) => inv.id !== invitationId
);
deleteMemberInvitation = async (workspaceSlug: string, invitationId: string) =>
await this.workspaceService.deleteWorkspaceInvitations(workspaceSlug.toString(), invitationId).then(() => {
runInAction(() => {
this.workspaceMemberInvitations[workspaceSlug] = this.workspaceMemberInvitations[workspaceSlug].filter(
(inv) => inv.id !== invitationId
);
});
});
void this.rootStore.workspaceRoot.mutateWorkspaceMembersActivity(workspaceSlug);
};
isUserSuspended = computedFn((userId: string, workspaceSlug: string) => {
if (!workspaceSlug) return false;