fix: not authorized flicker (#5593)
This commit is contained in:
parent
48e97477ed
commit
9d694ab006
2 changed files with 8 additions and 2 deletions
|
|
@ -40,7 +40,7 @@ export const WorkspaceAuthWrapper: FC<IWorkspaceAuthWrapper> = observer((props)
|
||||||
} = useMember();
|
} = useMember();
|
||||||
const { workspaces } = useWorkspace();
|
const { workspaces } = useWorkspace();
|
||||||
const { isMobile } = usePlatformOS();
|
const { isMobile } = usePlatformOS();
|
||||||
const { workspaceInfoBySlug, fetchUserWorkspaceInfo, fetchUserProjectPermissions, allowPermissions } =
|
const { loader, workspaceInfoBySlug, fetchUserWorkspaceInfo, fetchUserProjectPermissions, allowPermissions } =
|
||||||
useUserPermissions();
|
useUserPermissions();
|
||||||
// derived values
|
// derived values
|
||||||
const canPerformWorkspaceMemberActions = allowPermissions(
|
const canPerformWorkspaceMemberActions = allowPermissions(
|
||||||
|
|
@ -102,7 +102,7 @@ export const WorkspaceAuthWrapper: FC<IWorkspaceAuthWrapper> = observer((props)
|
||||||
const currentWorkspaceInfo = workspaceSlug && workspaceInfoBySlug(workspaceSlug.toString());
|
const currentWorkspaceInfo = workspaceSlug && workspaceInfoBySlug(workspaceSlug.toString());
|
||||||
|
|
||||||
// if list of workspaces are not there then we have to render the spinner
|
// if list of workspaces are not there then we have to render the spinner
|
||||||
if (allWorkspaces === undefined) {
|
if (allWorkspaces === undefined || loader) {
|
||||||
return (
|
return (
|
||||||
<div className="grid h-screen place-items-center bg-custom-background-100 p-4">
|
<div className="grid h-screen place-items-center bg-custom-background-100 p-4">
|
||||||
<div className="flex flex-col items-center gap-3 text-center">
|
<div className="flex flex-col items-center gap-3 text-center">
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import { CoreRootStore } from "@/store/root.store";
|
||||||
const workspaceService = new WorkspaceService();
|
const workspaceService = new WorkspaceService();
|
||||||
|
|
||||||
export interface IUserPermissionStore {
|
export interface IUserPermissionStore {
|
||||||
|
loader: boolean;
|
||||||
// observables
|
// observables
|
||||||
workspaceUserInfo: Record<string, IWorkspaceMemberMe>; // workspaceSlug -> IWorkspaceMemberMe
|
workspaceUserInfo: Record<string, IWorkspaceMemberMe>; // workspaceSlug -> IWorkspaceMemberMe
|
||||||
projectUserInfo: Record<string, Record<string, IProjectMember>>; // workspaceSlug -> projectId -> IProjectMember
|
projectUserInfo: Record<string, Record<string, IProjectMember>>; // workspaceSlug -> projectId -> IProjectMember
|
||||||
|
|
@ -52,6 +53,7 @@ export interface IUserPermissionStore {
|
||||||
}
|
}
|
||||||
|
|
||||||
export class UserPermissionStore implements IUserPermissionStore {
|
export class UserPermissionStore implements IUserPermissionStore {
|
||||||
|
loader: boolean = false;
|
||||||
// constants
|
// constants
|
||||||
workspaceUserInfo: Record<string, IWorkspaceMemberMe> = {};
|
workspaceUserInfo: Record<string, IWorkspaceMemberMe> = {};
|
||||||
projectUserInfo: Record<string, Record<string, IProjectMember>> = {};
|
projectUserInfo: Record<string, Record<string, IProjectMember>> = {};
|
||||||
|
|
@ -61,6 +63,7 @@ export class UserPermissionStore implements IUserPermissionStore {
|
||||||
constructor(private store: CoreRootStore) {
|
constructor(private store: CoreRootStore) {
|
||||||
makeObservable(this, {
|
makeObservable(this, {
|
||||||
// observables
|
// observables
|
||||||
|
loader: observable.ref,
|
||||||
workspaceUserInfo: observable,
|
workspaceUserInfo: observable,
|
||||||
projectUserInfo: observable,
|
projectUserInfo: observable,
|
||||||
workspaceProjectsPermissions: observable,
|
workspaceProjectsPermissions: observable,
|
||||||
|
|
@ -156,15 +159,18 @@ export class UserPermissionStore implements IUserPermissionStore {
|
||||||
*/
|
*/
|
||||||
fetchUserWorkspaceInfo = async (workspaceSlug: string): Promise<IWorkspaceMemberMe | undefined> => {
|
fetchUserWorkspaceInfo = async (workspaceSlug: string): Promise<IWorkspaceMemberMe | undefined> => {
|
||||||
try {
|
try {
|
||||||
|
this.loader = true;
|
||||||
const response = await workspaceService.workspaceMemberMe(workspaceSlug);
|
const response = await workspaceService.workspaceMemberMe(workspaceSlug);
|
||||||
if (response) {
|
if (response) {
|
||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
set(this.workspaceUserInfo, [workspaceSlug], response);
|
set(this.workspaceUserInfo, [workspaceSlug], response);
|
||||||
|
this.loader = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
return response;
|
return response;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Error fetching user workspace information", error);
|
console.error("Error fetching user workspace information", error);
|
||||||
|
this.loader = false;
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue