diff --git a/js/services/storageService.js b/js/services/storageService.js index a3351653..3bc17656 100644 --- a/js/services/storageService.js +++ b/js/services/storageService.js @@ -418,6 +418,16 @@ export class StorageService { account.connections = {}; } + // If this connection is being set as default, unset others + if (meta.defaultForUploads) { + for (const key in account.connections) { + const conn = account.connections[key]; + if (conn.meta) { + conn.meta.defaultForUploads = false; + } + } + } + account.connections[connectionId] = { id: connectionId, provider: payload.provider || meta.provider, diff --git a/tests/storage-service.test.mjs b/tests/storage-service.test.mjs index 27ef3e9f..7e00daef 100644 --- a/tests/storage-service.test.mjs +++ b/tests/storage-service.test.mjs @@ -155,4 +155,21 @@ describe("StorageService", () => { assert.strictEqual(c1.meta.defaultForUploads, false); assert.strictEqual(c2.meta.defaultForUploads, true); }); + + test("saveConnection() with defaultForUploads=true clears other defaults", async () => { + await storageService.unlock(pubkey, { signer: mockSigner }); + + // Save first connection as default + await storageService.saveConnection(pubkey, "conn_1", { provider: PROVIDERS.R2 }, { defaultForUploads: true }); + + // Save second connection as default + await storageService.saveConnection(pubkey, "conn_2", { provider: PROVIDERS.S3 }, { defaultForUploads: true }); + + const conns = await storageService.listConnections(pubkey); + const c1 = conns.find(c => c.id === "conn_1"); + const c2 = conns.find(c => c.id === "conn_2"); + + assert.strictEqual(c1.meta.defaultForUploads, false); + assert.strictEqual(c2.meta.defaultForUploads, true); + }); });