Skip to content

Commit 6b594b9

Browse files
committed
refactor: extract flagged save facade
1 parent feeb6c5 commit 6b594b9

3 files changed

Lines changed: 28 additions & 4 deletions

File tree

lib/storage.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,9 @@ import {
3131
} from "./storage/backup-paths.js";
3232
import { restoreAccountsFromBackupPath } from "./storage/backup-restore.js";
3333
import { looksLikeSyntheticFixtureStorage } from "./storage/fixture-guards.js";
34-
import {
35-
clearFlaggedAccountsEntry,
36-
saveFlaggedAccountsEntry,
37-
} from "./storage/flagged-entry.js";
34+
import { clearFlaggedAccountsEntry } from "./storage/flagged-entry.js";
3835
import { loadFlaggedAccountsEntry } from "./storage/flagged-load-entry.js";
36+
import { saveFlaggedAccountsEntry } from "./storage/flagged-save-entry.js";
3937
import { normalizeFlaggedStorage } from "./storage/flagged-storage.js";
4038
import {
4139
clearFlaggedAccountsOnDisk,

lib/storage/flagged-save-entry.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import type { FlaggedAccountStorageV1 } from "../storage.js";
2+
3+
export async function saveFlaggedAccountsEntry(params: {
4+
storage: FlaggedAccountStorageV1;
5+
withStorageLock: <T>(fn: () => Promise<T>) => Promise<T>;
6+
saveUnlocked: (storage: FlaggedAccountStorageV1) => Promise<void>;
7+
}): Promise<void> {
8+
return params.withStorageLock(async () => {
9+
await params.saveUnlocked(params.storage);
10+
});
11+
}

test/flagged-save-entry.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { describe, expect, it, vi } from "vitest";
2+
import { saveFlaggedAccountsEntry } from "../lib/storage/flagged-save-entry.js";
3+
4+
describe("flagged save entry", () => {
5+
it("delegates save through the storage lock", async () => {
6+
const saveUnlocked = vi.fn(async () => undefined);
7+
await saveFlaggedAccountsEntry({
8+
storage: { version: 1, accounts: [] },
9+
withStorageLock: async (fn) => fn(),
10+
saveUnlocked,
11+
});
12+
13+
expect(saveUnlocked).toHaveBeenCalledWith({ version: 1, accounts: [] });
14+
});
15+
});

0 commit comments

Comments
 (0)