58 lines
1.5 KiB
TypeScript
58 lines
1.5 KiB
TypeScript
import Immerable from '@Models/GeneralImmer';
|
|
import I18n from '@Models/Core/I18n';
|
|
import ThemeType, { ThemeBase } from '@Base/themes/ThemeType';
|
|
import { MiddleWareObject, MiddleWareAPI, MiddleWareEnv } from './types';
|
|
|
|
class Global extends Immerable {
|
|
public globalLoading: boolean;
|
|
|
|
public globalTheme: ThemeBase;
|
|
|
|
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.globalTheme = ThemeType.v1;
|
|
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;
|