import Immerable from '@Models/GeneralImmer'; import I18n from '@Models/Core/I18n'; import { MiddleWareObject, MiddleWareAPI, MiddleWareEnv } from './types'; class Global extends Immerable { public globalLoading: boolean; public globalLang: string; public globalSideBar: boolean; public globalSideBarStatic: boolean; public globalAPI: MiddleWareAPI; public globalEnv: MiddleWareEnv; public globalI18n: I18n; public constructor(middleware: MiddleWareObject) { super(); this.globalLoading = false; this.globalLang = 'tw'; this.globalSideBar = false; this.globalSideBarStatic = true; this.globalAPI = middleware.api; this.globalEnv = middleware.env; this.globalI18n = new I18n(this.globalLang); } public initialize(): void { this.globalLoading = false; } public updateGlobalLoading(newGlobalLoading: boolean): void { this.globalLoading = newGlobalLoading; } public updateGlobalLang(newGlobalLang: string): void { this.globalLang = newGlobalLang; this.globalI18n.switchLanguage(newGlobalLang); } public updateGlobalSideBar(newGlobalSideBarState: boolean): void { this.globalSideBar = newGlobalSideBarState; } public updateGlobalSideBarStatic(newGlobalSideBarStatic: boolean): void { this.globalSideBarStatic = newGlobalSideBarStatic; } } export default Global;