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