import { ModelLanguage } from './ModelLogin';
import { MainStateManager } from '../MainStateManager';
import { Language, ILanguage } from './Save';
import axios from 'axios';

const Axios = (path: string) => {
  return axios.create({
    baseURL: `${process.env.REACT_APP_SHAREKERNEL_ADDRESS}/${path}`
  });
};
export interface IResult {
  isAmisa: boolean;
  languages: Language[];
}

export class GetAllFactory extends ModelLanguage {
  // startToLoad = () => {
  //   this.request('GetAll', GetAllFactory.deserialize, (err) => {
  //     this.mainStateManager.forceUpdate();
  //   });
  // };

  static deserialize = (
    mainStateManager: MainStateManager,
    json: { isAmisa: boolean, languages: ILanguage[] }
  ): IResult => {
    const languages = json.languages.map(
      (l) => new Language(mainStateManager, l.id, l.name, l.rightToLeft)
    );
    return {
      isAmisa: json.isAmisa,
      languages: languages,
    };
  };

  static empty() {
    return {
      isAmisa: false,
      languages: [],
    };
  }

  static buildNew(mainStateManager: MainStateManager) {
    return new GetAllFactory(
      mainStateManager,
      GetAllFactory.empty,
      Axios('Language')
    );
  }
}
