/* eslint-disable @typescript-eslint/no-explicit-any */ import { BrowserSyncData, CashuMint_ENCRYPTED, Identity_ENCRYPTED, NwcConnection_ENCRYPTED, Permission_ENCRYPTED, BrowserSyncHandler, Relay_ENCRYPTED, } from '@common'; import browser from 'webextension-polyfill'; /** * Handles the browser sync operations when the browser sync is enabled. * If it's not enabled, it behaves like the local extension storage (which is fine). */ export class FirefoxSyncYesHandler extends BrowserSyncHandler { async loadUnmigratedData(): Promise>> { return await browser.storage.sync.get(null); } async saveAndSetFullData(data: BrowserSyncData): Promise { await browser.storage.sync.set(data as Record); this.setFullData(data); } async saveAndSetPartialData_Permissions(data: { permissions: Permission_ENCRYPTED[]; }): Promise { await browser.storage.sync.set(data); this.setPartialData_Permissions(data); } async saveAndSetPartialData_Identities(data: { identities: Identity_ENCRYPTED[]; }): Promise { await browser.storage.sync.set(data); this.setPartialData_Identities(data); } async saveAndSetPartialData_SelectedIdentityId(data: { selectedIdentityId: string | null; }): Promise { await browser.storage.sync.set(data); this.setPartialData_SelectedIdentityId(data); } async saveAndSetPartialData_Relays(data: { relays: Relay_ENCRYPTED[]; }): Promise { await browser.storage.sync.set(data); this.setPartialData_Relays(data); } async saveAndSetPartialData_NwcConnections(data: { nwcConnections: NwcConnection_ENCRYPTED[]; }): Promise { await browser.storage.sync.set(data); this.setPartialData_NwcConnections(data); } async saveAndSetPartialData_CashuMints(data: { cashuMints: CashuMint_ENCRYPTED[]; }): Promise { await browser.storage.sync.set(data); this.setPartialData_CashuMints(data); } async clearData(): Promise { await browser.storage.sync.clear(); } }