// Libs
// -----------------------------------------------------------------------------
import { makeAutoObservable, runInAction } from 'mobx';

// App
// -----------------------------------------------------------------------------
import request from 'services/request';
import { environment } from 'enviroments/enviroments';

/**
 * Информация о системе.
 */
export class SystemInfoStore {
  // Название продукта
  product: string | null = null;

  // Версия продукта
  version: string | null = null;

  // Выполняется ли загрузка
  isLoading = false;

  constructor() {
    makeAutoObservable(this);
  }

  // Загрузить название и версию продукта
  fetchProductAndVersion = async (): Promise<void> => {
    this.isLoading = true;
    try {
      const response = await request<
        void,
        { product: string; version: string }
      >({
        method: 'GET',
        url: environment.endPoints.product.version,
      });

      const { product, version } = response.data;

      runInAction(() => {
        this.version = version;
        this.product = product;
      });
    } finally {
      runInAction(() => {
        this.isLoading = false;
      });
    }
  };
}
