From 5ba1eeaf4cc708deffc1a81895b3da565f3f3ca4 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 16 Sep 2024 14:16:23 +0530 Subject: [PATCH] [WEB-2443] fix: join project flicker (#5602) * fix: join project flicker * fix: leave project project mutation and code refactor --- web/core/layouts/auth-layout/project-wrapper.tsx | 12 ++++++------ web/core/store/user/permissions.store.ts | 4 +++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/web/core/layouts/auth-layout/project-wrapper.tsx b/web/core/layouts/auth-layout/project-wrapper.tsx index 1c7e241d9e..11848476a2 100644 --- a/web/core/layouts/auth-layout/project-wrapper.tsx +++ b/web/core/layouts/auth-layout/project-wrapper.tsx @@ -105,12 +105,12 @@ export const ProjectAuthWrapper: FC = observer((props) => { // derived values const projectExists = projectId ? getProjectById(projectId.toString()) : null; - const hasPermissionToCurrentProject = projectId - ? allowPermissions( - [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST], - EUserPermissionsLevel.PROJECT - ) - : undefined; + const hasPermissionToCurrentProject = allowPermissions( + [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST], + EUserPermissionsLevel.PROJECT, + workspaceSlug.toString(), + projectId.toString() + ); // check if the project member apis is loading if (!projectMemberInfo && projectId && hasPermissionToCurrentProject === null) diff --git a/web/core/store/user/permissions.store.ts b/web/core/store/user/permissions.store.ts index 581d65bdd8..ba1211b0f1 100644 --- a/web/core/store/user/permissions.store.ts +++ b/web/core/store/user/permissions.store.ts @@ -243,9 +243,10 @@ export class UserPermissionStore implements IUserPermissionStore { joinProject = async (workspaceSlug: string, projectId: string): Promise => { try { const response = await userService.joinProject(workspaceSlug, [projectId]); + const projectMemberRole = this.workspaceInfoBySlug(workspaceSlug)?.role ?? EUserPermissions.MEMBER; if (response) { runInAction(() => { - set(this.workspaceProjectsPermissions, [workspaceSlug, projectId], response); + set(this.workspaceProjectsPermissions, [workspaceSlug, projectId], projectMemberRole); }); } return response; @@ -267,6 +268,7 @@ export class UserPermissionStore implements IUserPermissionStore { runInAction(() => { unset(this.workspaceProjectsPermissions, [workspaceSlug, projectId]); unset(this.projectUserInfo, [workspaceSlug, projectId]); + unset(this.store.projectRoot.project.projectMap, [projectId]); }); } catch (error) { console.error("Error user leaving the project", error);