plane/web/store/app-config.store.ts

48 lines
1.0 KiB
TypeScript
Raw Normal View History

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;