Keep the saved order of recent repositories; it was reversed on every start
This commit is contained in:
+10
-1
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { addRecent, MAX_RECENTS } from "./recents";
|
||||
import { addRecent, MAX_RECENTS, mergeRecents } from "./recents";
|
||||
|
||||
describe("addRecent", () => {
|
||||
it("puts the path first", () => {
|
||||
@@ -16,3 +16,12 @@ describe("addRecent", () => {
|
||||
expect(out).not.toContain(`/r${MAX_RECENTS - 1}`);
|
||||
});
|
||||
});
|
||||
|
||||
describe("mergeRecents", () => {
|
||||
it("keeps the saved order", () => {
|
||||
expect(mergeRecents([], ["/a", "/b", "/c"])).toEqual(["/a", "/b", "/c"]);
|
||||
});
|
||||
it("puts a path opened before the settings arrived first, once", () => {
|
||||
expect(mergeRecents(["/b"], ["/a", "/b", "/c"])).toEqual(["/b", "/a", "/c"]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,3 +4,11 @@ export const MAX_RECENTS = 12;
|
||||
export function addRecent(list: string[], path: string): string[] {
|
||||
return [path, ...list.filter((p) => p !== path)].slice(0, MAX_RECENTS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Joins the saved list with paths opened before the saved settings arrived: those come
|
||||
* first, then the saved ones in their saved order, each path once.
|
||||
*/
|
||||
export function mergeRecents(openedFirst: string[], saved: string[]): string[] {
|
||||
return [...openedFirst, ...saved.filter((p) => !openedFirst.includes(p))].slice(0, MAX_RECENTS);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user