import { login } from '../pages/Login/LoginApi';
import { action, makeObservable, observable } from 'mobx';

import { RootStore } from './RootStore';

export class AppStore {
  @observable token: string | undefined;

  constructor(private readonly rootStore: RootStore) {
    makeObservable(this);
  }

  get getToken(): string | undefined {
    return this.token;
  }

  @action
  setToken = (value: string): void => {
    this.token = value;
  };

  async autentification(
    {
      username,
      password,
    }: {
      username: string;
      password: string;
    },
    navigate: any,
  ): Promise<any> {
    await login({ username, password }).then((response: any) => {
      const json = response.data;
      for (const key of Object.keys(json)) {
        this.setToken(json[key]);
        localStorage.setItem('Token', json[key]);
      }
      // Todo Тут - (navigate('/assets')) - происходит редирект на страницу ассетов после авторизации,
      //  но пока закоментировал, так как на демостенде у нас не работает редирект в принципе,
      //  и получатся что нет возможности перейти на страницу ассетов после логина.
      //  Раскоментировать когда починят демостенд
      if (localStorage.getItem('Token')) navigate('/');
    });
  }
}
