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; } 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;