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