* fix: remove unused imports and variables (part 1) Resolve oxlint no-unused-vars warnings in packages/*, apps/admin, apps/space, apps/live, and apps/web (non-core). * fix: resolve CI check failures * fix: resolve check:types failures * fix: resolve check:types and check:format failures - Use destructuring alias for activeCycleResolvedPath - Format propel tab-navigation file * fix: format propel button helper with oxfmt Reorder Tailwind classes to match oxfmt canonical ordering.
83 lines
2.1 KiB
TypeScript
83 lines
2.1 KiB
TypeScript
/**
|
|
* Copyright (c) 2023-present Plane Software, Inc. and contributors
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
* See the LICENSE file for details.
|
|
*/
|
|
|
|
import { set } from "lodash-es";
|
|
import { observable, action, makeObservable, runInAction } from "mobx";
|
|
// plane imports
|
|
import { InstanceService } from "@plane/services";
|
|
import type { IInstance, IInstanceConfig } from "@plane/types";
|
|
// store
|
|
import type { RootStore } from "@/store/root.store";
|
|
|
|
type TError = {
|
|
status: string;
|
|
message: string;
|
|
data?: {
|
|
is_activated: boolean;
|
|
is_setup_done: boolean;
|
|
};
|
|
};
|
|
|
|
export interface IInstanceStore {
|
|
// observables
|
|
isLoading: boolean;
|
|
instance: IInstance | undefined;
|
|
config: IInstanceConfig | undefined;
|
|
error: TError | undefined;
|
|
// action
|
|
fetchInstanceInfo: () => Promise<void>;
|
|
hydrate: (data: IInstance) => void;
|
|
}
|
|
|
|
export class InstanceStore implements IInstanceStore {
|
|
isLoading: boolean = true;
|
|
instance: IInstance | undefined = undefined;
|
|
config: IInstanceConfig | undefined = undefined;
|
|
error: TError | undefined = undefined;
|
|
// services
|
|
instanceService;
|
|
|
|
constructor(private store: RootStore) {
|
|
makeObservable(this, {
|
|
// observable
|
|
isLoading: observable.ref,
|
|
instance: observable,
|
|
config: observable,
|
|
error: observable,
|
|
// actions
|
|
fetchInstanceInfo: action,
|
|
hydrate: action,
|
|
});
|
|
// services
|
|
this.instanceService = new InstanceService();
|
|
}
|
|
|
|
hydrate = (data: IInstance) => set(this, "instance", data);
|
|
|
|
/**
|
|
* @description fetching instance information
|
|
*/
|
|
fetchInstanceInfo = async () => {
|
|
try {
|
|
this.isLoading = true;
|
|
this.error = undefined;
|
|
const instanceInfo = await this.instanceService.info();
|
|
runInAction(() => {
|
|
this.isLoading = false;
|
|
this.instance = instanceInfo.instance;
|
|
this.config = instanceInfo.config;
|
|
});
|
|
} catch (_error) {
|
|
runInAction(() => {
|
|
this.isLoading = false;
|
|
this.error = {
|
|
status: "error",
|
|
message: "Failed to fetch instance info",
|
|
};
|
|
});
|
|
}
|
|
};
|
|
}
|