feat(mobx): refactor and remove (react-)redux

This commit is contained in:
Paul
2021-12-23 21:43:11 +00:00
parent 6e1bcab92b
commit cc0e45526c
55 changed files with 249 additions and 1522 deletions

View File

@@ -23,6 +23,9 @@ export const SYNC_KEYS: SyncKeys[] = [
export interface Data {
disabled: SyncKeys[];
revision: {
[key: string]: number;
};
}
/**
@@ -30,12 +33,14 @@ export interface Data {
*/
export default class Sync implements Store, Persistent<Data> {
private disabled: ObservableSet<SyncKeys>;
private revision: ObservableMap<SyncKeys, number>;
/**
* Construct new Sync store.
*/
constructor() {
this.disabled = new ObservableSet();
this.revision = new ObservableMap();
makeAutoObservable(this);
this.isEnabled = this.isEnabled.bind(this);
}
@@ -47,6 +52,7 @@ export default class Sync implements Store, Persistent<Data> {
toJSON() {
return {
enabled: [...this.disabled],
revision: mapToRecord(this.revision),
};
}
@@ -58,6 +64,22 @@ export default class Sync implements Store, Persistent<Data> {
}
}
@action enable(key: SyncKeys) {
this.disabled.delete(key);
}
@action disable(key: SyncKeys) {
this.disabled.add(key);
}
@action toggle(key: SyncKeys) {
if (this.isEnabled(key)) {
this.disable(key);
} else {
this.enable(key);
}
}
@computed isEnabled(key: SyncKeys) {
return !this.disabled.has(key);
}