diff --git a/src/mobx/stores/LocaleOptions.ts b/src/mobx/stores/LocaleOptions.ts index 9c708d6e..a22d3b3c 100644 --- a/src/mobx/stores/LocaleOptions.ts +++ b/src/mobx/stores/LocaleOptions.ts @@ -4,6 +4,7 @@ import { Language, Languages } from "../../context/Locale"; import Persistent from "../interfaces/Persistent"; import Store from "../interfaces/Store"; +import Syncable from "../interfaces/Syncable"; export interface Data { lang: Language; @@ -51,7 +52,9 @@ export function findLanguage(lang?: string): Language { /** * Keeps track of user's language settings. */ -export default class LocaleOptions implements Store, Persistent { +export default class LocaleOptions + implements Store, Persistent, Syncable +{ private lang: Language; /** @@ -72,6 +75,16 @@ export default class LocaleOptions implements Store, Persistent { }; } + apply(_key: "locale", data: unknown, _revision: number): void { + this.hydrate(data as Data); + } + + @computed toSyncable(): { [key: string]: object } { + return { + locale: this.toJSON(), + }; + } + @action hydrate(data: Data) { this.setLanguage(data.lang); }