firefox-sync-yes-handler.ts raw
1 /* eslint-disable @typescript-eslint/no-explicit-any */
2 import {
3 EncryptedVault,
4 StoredCashuMint,
5 StoredIdentity,
6 StoredNwcConnection,
7 StoredPermission,
8 BrowserSyncHandler,
9 StoredRelay,
10 } from '@common';
11 import browser from 'webextension-polyfill';
12
13 /**
14 * Handles the browser sync operations when the browser sync is enabled.
15 * If it's not enabled, it behaves like the local extension storage (which is fine).
16 */
17 export class FirefoxSyncYesHandler extends BrowserSyncHandler {
18 async loadUnmigratedData(): Promise<Partial<Record<string, any>>> {
19 return await browser.storage.sync.get(null);
20 }
21
22 async saveAndSetFullData(data: EncryptedVault): Promise<void> {
23 await browser.storage.sync.set(data as Record<string, any>);
24 this.setFullData(data);
25 }
26
27 async saveAndSetPartialData_Permissions(data: {
28 permissions: StoredPermission[];
29 }): Promise<void> {
30 await browser.storage.sync.set(data);
31 this.setPartialData_Permissions(data);
32 }
33
34 async saveAndSetPartialData_Identities(data: {
35 identities: StoredIdentity[];
36 }): Promise<void> {
37 await browser.storage.sync.set(data);
38 this.setPartialData_Identities(data);
39 }
40
41 async saveAndSetPartialData_SelectedIdentityId(data: {
42 selectedIdentityId: string | null;
43 }): Promise<void> {
44 await browser.storage.sync.set(data);
45 this.setPartialData_SelectedIdentityId(data);
46 }
47
48 async saveAndSetPartialData_Relays(data: {
49 relays: StoredRelay[];
50 }): Promise<void> {
51 await browser.storage.sync.set(data);
52 this.setPartialData_Relays(data);
53 }
54
55 async saveAndSetPartialData_NwcConnections(data: {
56 nwcConnections: StoredNwcConnection[];
57 }): Promise<void> {
58 await browser.storage.sync.set(data);
59 this.setPartialData_NwcConnections(data);
60 }
61
62 async saveAndSetPartialData_CashuMints(data: {
63 cashuMints: StoredCashuMint[];
64 }): Promise<void> {
65 await browser.storage.sync.set(data);
66 this.setPartialData_CashuMints(data);
67 }
68
69 async clearData(): Promise<void> {
70 await browser.storage.sync.clear();
71 }
72 }
73