Canvas: Auto-select first project
Change-Id: I1065b20f866f9fa7152ca65b7853a60c58ac5de2
diff --git a/apps/canvas/front/src/ProjectSelect.tsx b/apps/canvas/front/src/ProjectSelect.tsx
index a643eaa..699fb04 100644
--- a/apps/canvas/front/src/ProjectSelect.tsx
+++ b/apps/canvas/front/src/ProjectSelect.tsx
@@ -13,17 +13,30 @@
const { toast } = useToast();
const store = useStateStore();
const [projects, setProjects] = useState<Project[]>([]);
+ const projectId = useProjectId();
+
const refreshProjects = useCallback(async () => {
try {
const resp = await fetch("/api/project");
- setProjects(await resp.json());
+ const projectList = await resp.json();
+ const sortedProjects = [...projectList].sort((a, b) =>
+ a.name.localeCompare(b.name, undefined, { sensitivity: "base" }),
+ );
+ setProjects(sortedProjects);
} catch (e) {
console.log(e);
}
}, [setProjects]);
+
+ useEffect(() => {
+ if (projects.length > 0 && (projectId == null || !projects.some((p) => p.id === projectId))) {
+ store.setProject(projects[0].id);
+ }
+ }, [projectId, projects, store]);
useEffect(() => {
refreshProjects();
}, [refreshProjects]);
+
const project = useProjectId();
const [createNewOpen, setCreateNewOpen] = useState(false);
const onSelect = useCallback(