mirror of
https://github.com/makeplane/plane
synced 2024-06-14 14:31:34 +00:00
48 lines
1.0 KiB
TypeScript
48 lines
1.0 KiB
TypeScript
|
import { observable, action, makeObservable, runInAction } from "mobx";
|
||
|
// types
|
||
|
import { RootStore } from "./root";
|
||
|
import { IAppConfig } from "types/app";
|
||
|
// services
|
||
|
import { AppConfigService } from "services/app_config.service";
|
||
|
|
||
|
export interface IAppConfigStore {
|
||
|
envConfig: IAppConfig | null;
|
||
|
// action
|
||
|
fetchAppConfig: () => Promise<any>;
|
||
|
}
|
||
|
|
||
|
class AppConfigStore implements IAppConfigStore {
|
||
|
// observables
|
||
|
envConfig: IAppConfig | null = null;
|
||
|
|
||
|
// root store
|
||
|
rootStore;
|
||
|
// service
|
||
|
appConfigService;
|
||
|
|
||
|
constructor(_rootStore: RootStore) {
|
||
|
makeObservable(this, {
|
||
|
// observables
|
||
|
envConfig: observable.ref,
|
||
|
// actions
|
||
|
fetchAppConfig: action,
|
||
|
});
|
||
|
this.appConfigService = new AppConfigService();
|
||
|
|
||
|
this.rootStore = _rootStore;
|
||
|
}
|
||
|
fetchAppConfig = async () => {
|
||
|
try {
|
||
|
const config = await this.appConfigService.envConfig();
|
||
|
runInAction(() => {
|
||
|
this.envConfig = config;
|
||
|
});
|
||
|
return config;
|
||
|
} catch (error) {
|
||
|
throw error;
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export default AppConfigStore;
|