1- import equal from 'fast-deep-equal' ;
1+ import isEqual from 'fast-deep-equal' ;
22import browser from 'webextension-polyfill' ;
3- import emitter from './emitter' ;
43import { defaultPrefValue } from './constant' ;
4+ import emitter from './emitter' ;
55import { getSync } from './storage' ;
66import type { PrefValue } from './types' ;
77
@@ -15,13 +15,13 @@ class Prefs {
1515 constructor ( ) {
1616 this . values = { ...defaultPrefValue } ;
1717
18- Object . entries ( defaultPrefValue ) . forEach ( ( it ) => {
18+ Object . entries ( defaultPrefValue ) . forEach ( it => {
1919 this . set ( it [ 0 ] , it [ 1 ] , true ) ;
2020 } ) ;
2121
2222 getSync ( )
2323 . get ( 'settings' )
24- . then ( ( result ) => {
24+ . then ( result => {
2525 const synced : any = result . settings ;
2626 for ( const key in defaultPrefValue ) {
2727 if ( synced && key in synced ) {
@@ -49,7 +49,10 @@ class Prefs {
4949 } ) ;
5050 }
5151
52- get < K extends keyof PrefValue > ( key : K , defaultValue ?: PrefValue [ K ] ) : PrefValue [ K ] {
52+ get < K extends keyof PrefValue > (
53+ key : K ,
54+ defaultValue ?: PrefValue [ K ] ,
55+ ) : PrefValue [ K ] {
5356 if ( key in this . boundMethods ) {
5457 if ( key in this . boundWrappers ) {
5558 return this . boundWrappers [ key ] ;
@@ -72,9 +75,9 @@ class Prefs {
7275 }
7376
7477 set ( key : string , value : any , noSync = false ) {
75- const oldValue = this . values [ key ] ;
76- if ( ! equal ( value , oldValue ) ) {
77- this . values [ key ] = value ;
78+ const oldValue = this . values [ key as keyof PrefValue ] ;
79+ if ( ! isEqual ( value , oldValue ) ) {
80+ ( this . values as any ) [ key ] = value ;
7881 emitter . emit ( emitter . EVENT_PREFS_UPDATE , key , value ) ;
7982 if ( ! noSync ) {
8083 getSync ( ) . set ( {
0 commit comments