fix:新建项目更新项目选项

This commit is contained in:
xiaozhu
2026-08-11 18:53:11 +08:00
parent c63f745374
commit 064403ad70
2 changed files with 22 additions and 2 deletions
@@ -20,7 +20,7 @@ export function ProjectManagementPage({
onConnectionChange: (online: boolean) => void;
}) {
const api = useApi();
const { user } = useAuth();
const { user, refreshWorkspaces } = useAuth();
const [projects, setProjects] = useState<Workspace[]>([]);
const [projectLoading, setProjectLoading] = useState(true);
const [projectDialogOpen, setProjectDialogOpen] = useState(false);
@@ -107,6 +107,7 @@ export function ProjectManagementPage({
description: projectForm.description.trim() || undefined,
});
setProjects((current) => [...current, created]);
void refreshWorkspaces();
onNotify({ tone: "success", message: "项目已创建" });
}
setProjectDialogOpen(false);
+20 -1
View File
@@ -48,6 +48,7 @@ type AuthContextValue = {
login: (username: string, password: string) => Promise<void>;
logout: () => Promise<void>;
setCurrentWorkspace: (workspaceId: string) => void;
refreshWorkspaces: () => Promise<void>;
};
const AuthContext = createContext<AuthContextValue | null>(null);
@@ -167,6 +168,23 @@ export function AuthProvider({ children }: { children: ReactNode }) {
window.localStorage.setItem(workspaceStorageKey, workspace.workspace_id);
}, [workspaces]);
const refreshWorkspaces = useCallback(async () => {
try {
const session = await authRequest<AuthSession>("/api/v1/auth/me");
const storedId = typeof window === "undefined"
? null
: window.localStorage.getItem(workspaceStorageKey);
const newWorkspace = selectWorkspace(session, storedId);
setWorkspaces(session.workspaces);
setWorkspace(newWorkspace);
if (newWorkspace && typeof window !== "undefined") {
window.localStorage.setItem(workspaceStorageKey, newWorkspace.workspace_id);
}
} catch (error) {
console.error("刷新 workspace 列表失败:", error);
}
}, []);
const value = useMemo<AuthContextValue>(() => ({
user,
workspaces,
@@ -175,7 +193,8 @@ export function AuthProvider({ children }: { children: ReactNode }) {
login,
logout,
setCurrentWorkspace,
}), [currentWorkspace, loading, login, logout, setCurrentWorkspace, user, workspaces]);
refreshWorkspaces,
}), [currentWorkspace, loading, login, logout, setCurrentWorkspace, user, workspaces, refreshWorkspaces]);
if (loading) {
return (