Skip to content

Commit 7ce51a1

Browse files
committed
frontend/projects/starred: keep order stable!
1 parent 3894341 commit 7ce51a1

File tree

2 files changed

+7
-8
lines changed

2 files changed

+7
-8
lines changed

src/packages/frontend/projects/projects-starred.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { Icon, TimeAgo } from "@cocalc/frontend/components";
1111
import { trunc } from "@cocalc/util/misc";
1212
import { COLORS } from "@cocalc/util/theme";
1313
import { useBookmarkedProjects } from "./use-bookmarked-projects";
14-
import { sortProjectsLastEdited } from "./util";
1514

1615
const DROPDOWN_WIDTH = 100; // Width reserved for dropdown button + buffer
1716

@@ -33,7 +32,7 @@ export function StarredProjectsBar() {
3332
const { bookmarkedProjects } = useBookmarkedProjects();
3433
const project_map = useTypedRedux("projects", "project_map");
3534

36-
// Get starred projects sorted by title
35+
// Get starred projects in bookmarked order (newest bookmarked first)
3736
const starredProjects = useMemo(() => {
3837
if (!bookmarkedProjects || !project_map) return [];
3938

@@ -54,8 +53,8 @@ export function StarredProjectsBar() {
5453
})
5554
.filter((p) => p != null);
5655

57-
// Sort by last edited, newest first
58-
return projects.sort(sortProjectsLastEdited).reverse();
56+
// Return projects in their bookmarked order
57+
return projects;
5958
}, [bookmarkedProjects, project_map]);
6059

6160
// State for tracking how many projects can be shown

src/packages/frontend/projects/use-bookmarked-projects.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ bm.set("projects", ['project_id_1', 'project_id_2'])
1717
bm.on('change', (e) => console.log('Bookmark change:', e))
1818
*/
1919

20-
import { sortBy, uniq } from "lodash";
20+
import { uniq } from "lodash";
2121
import { useEffect, useRef, useState } from "react";
2222

2323
import { redux } from "@cocalc/frontend/app-framework";
@@ -78,7 +78,7 @@ export function useBookmarkedProjects() {
7878
// Load initial data from conat
7979
const initialBookmarks = conatBookmarks.get(PROJECTS_KEY) ?? [];
8080
if (Array.isArray(initialBookmarks)) {
81-
setBookmarkedProjects(sortBy(uniq(initialBookmarks)));
81+
setBookmarkedProjects(uniq(initialBookmarks));
8282
}
8383

8484
// Create stable listener function
@@ -90,7 +90,7 @@ export function useBookmarkedProjects() {
9090
if (changeEvent.key === PROJECTS_KEY) {
9191
const remoteBookmarks =
9292
(changeEvent.value as BookmarkedProjects) ?? [];
93-
setBookmarkedProjects(sortBy(uniq(remoteBookmarks)));
93+
setBookmarkedProjects(uniq(remoteBookmarks));
9494
}
9595
};
9696

@@ -125,7 +125,7 @@ export function useBookmarkedProjects() {
125125
}
126126

127127
const next = bookmarked
128-
? sortBy(uniq([...bookmarkedProjects, project_id]))
128+
? uniq([project_id, ...bookmarkedProjects])
129129
: bookmarkedProjects.filter((p) => p !== project_id);
130130

131131
// Update local state immediately for responsive UI

0 commit comments

Comments
 (0)