Refresh project roles after create project
This commit is contained in:
@@ -63,6 +63,9 @@ export default function ProjectsPage({ messages, locale }: Props) {
|
||||
} else {
|
||||
const newProject = await createProject(context.token.access_token, name, detail, isPublic);
|
||||
setProjects([...projects, newProject]);
|
||||
|
||||
// refresh project roles
|
||||
context.refreshProjectRoles();
|
||||
}
|
||||
closeDialog();
|
||||
};
|
||||
|
||||
@@ -31,6 +31,7 @@ export type TokenContextType = {
|
||||
isProjectManager: (projectId: number) => boolean;
|
||||
isProjectDeveloper: (projectId: number) => boolean;
|
||||
isProjectReporter: (projectId: number) => boolean;
|
||||
refreshProjectRoles: () => void;
|
||||
setToken: (token: TokenType) => void;
|
||||
storeTokenToLocalStorage: (token: TokenType) => void;
|
||||
removeTokenFromLocalStorage: () => void;
|
||||
|
||||
@@ -75,6 +75,19 @@ const TokenProvider = ({ toastMessages, locale, children }: TokenProps) => {
|
||||
return tokenIsProjectReporter(projectRoles, projectId);
|
||||
};
|
||||
|
||||
async function refreshProjectRoles() {
|
||||
if (!hasRestoreFinished || !token || !token.access_token) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const data = await fetchMyRoles(token.access_token);
|
||||
setProjectRoles(data);
|
||||
} catch (error: any) {
|
||||
console.error('Error in effect:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
const tokenContext = {
|
||||
token,
|
||||
projectRoles,
|
||||
@@ -84,6 +97,7 @@ const TokenProvider = ({ toastMessages, locale, children }: TokenProps) => {
|
||||
isProjectDeveloper,
|
||||
isProjectReporter,
|
||||
setToken,
|
||||
refreshProjectRoles,
|
||||
storeTokenToLocalStorage,
|
||||
removeTokenFromLocalStorage,
|
||||
};
|
||||
@@ -119,19 +133,6 @@ const TokenProvider = ({ toastMessages, locale, children }: TokenProps) => {
|
||||
}, [pathname, hasRestoreFinished]);
|
||||
|
||||
useEffect(() => {
|
||||
async function refreshProjectRoles() {
|
||||
if (!hasRestoreFinished || !token || !token.access_token) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
const data = await fetchMyRoles(token.access_token);
|
||||
setProjectRoles(data);
|
||||
} catch (error: any) {
|
||||
console.error('Error in effect:', error.message);
|
||||
}
|
||||
}
|
||||
|
||||
refreshProjectRoles();
|
||||
}, [hasRestoreFinished, token]);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user