Skip to content

Commit 000ab42

Browse files
Fix project card flash when creating new project
Fix stale files count when returning to home page
1 parent f9a3fa1 commit 000ab42

3 files changed

Lines changed: 21 additions & 6 deletions

File tree

src/homepage/HomePage.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
* SPDX-License-Identifier: MIT
66
*/
77
import { Heading } from "@chakra-ui/react";
8+
import { useEffect } from "react";
89
import { FormattedMessage, useIntl } from "react-intl";
910
import { useProjects } from "../project/projects-hooks";
1011
import { useSettings } from "../settings/settings";
@@ -26,10 +27,16 @@ const numCardsDisplayed = 10;
2627
const HomePage = () => {
2728
const intl = useIntl();
2829
const [{ languageId }] = useSettings();
29-
const { projects } = useProjects();
30+
const { projects, refresh } = useProjects();
3031
const { handleCreate, handleOpen, handleRenameDuplicate, handleDelete } =
3132
useProjectCardActions("home");
3233

34+
// Revalidate the list whenever the home page is shown (e.g. returning from
35+
// the editor after adding a file, or after creating a project).
36+
useEffect(() => {
37+
void refresh();
38+
}, [refresh]);
39+
3340
const projectCards: JSX.Element[] = [
3441
<NewProjectCard key="new-project" onClick={handleCreate} />,
3542
...projects.slice(0, numCardsDisplayed).map((project) => (

src/homepage/ProjectsPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,15 @@ const searchScore = (project: ProjectDataWithFiles, terms: string[]): number =>
5757
};
5858

5959
const ProjectsPage = () => {
60-
const { projects, loading } = useProjects();
60+
const { projects, loading, refresh } = useProjects();
6161
const { handleOpen, handleRenameDuplicate, handleDelete, handleDeleteMany } =
6262
useProjectCardActions("projects");
6363

64+
// Revalidate the list whenever the projects page is shown.
65+
useEffect(() => {
66+
void refresh();
67+
}, [refresh]);
68+
6469
const [selectedProjectIds, setSelectedProjectIds] = useState<string[]>([]);
6570
const [query, setQuery] = useState("");
6671
const [orderByField, setOrderByField] = useState<OrderByField>("timestamp");

src/project/projects-hooks.tsx

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -151,14 +151,16 @@ export const ProjectsProvider = ({ children }: { children: ReactNode }) => {
151151
await projectsDb.createProject({ id, name, timestamp: Date.now() }, files);
152152
setCurrent(id);
153153
await loadIntoFs(id, name, files);
154-
await refresh();
154+
// No refresh here: we navigate straight to the editor, and refreshing the
155+
// list would flash the new card onto the home page first. The list is
156+
// revalidated when the home/projects page is next shown.
155157
postProjectSync({
156158
type: ProjectSyncMessageType.ReloadProject,
157159
projectIds: [id],
158160
});
159161
return id;
160162
},
161-
[loadIntoFs, refresh, setCurrent]
163+
[loadIntoFs, setCurrent]
162164
);
163165

164166
const importProject = useCallback(
@@ -193,7 +195,8 @@ export const ProjectsProvider = ({ children }: { children: ReactNode }) => {
193195
name: pythonProject.projectName,
194196
files: pythonProject.files,
195197
};
196-
await refresh();
198+
// No refresh here: we navigate straight to the editor (the list is
199+
// revalidated when the home/projects page is next shown).
197200
postProjectSync({
198201
type: ProjectSyncMessageType.ReloadProject,
199202
projectIds: [id],
@@ -203,7 +206,7 @@ export const ProjectsProvider = ({ children }: { children: ReactNode }) => {
203206
setImporting(false);
204207
}
205208
},
206-
[fs, refresh, setCurrent]
209+
[fs, setCurrent]
207210
);
208211

209212
const openProject = useCallback(

0 commit comments

Comments
 (0)