Refresh project roles after create project

This commit is contained in:
Takeshi Kimata
2024-06-11 21:43:25 +09:00
parent 92d9c8235d
commit 996174f7a1
3 changed files with 18 additions and 13 deletions

View File

@@ -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();
}; };

View File

@@ -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;

View File

@@ -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]);