import { injectable } from 'tsyringe'; import SettingData from '../../shared/SettingData'; @injectable() export default class SyncSettingRepository { async load(): Promise { const { settings } = await browser.storage.sync.get('settings'); if (!settings) { return null; } return SettingData.fromJSON(settings as any); } onChange(callback: () => void) { browser.storage.onChanged.addListener((changes, area) => { if (area !== 'sync') { return; } if (changes.settings) { callback(); } }); } }