import { TranslateLoader } from '@ngx-translate/core';
import { Observable } from 'rxjs';
import { NativeService } from '@ucap-webmessenger/native';
import { take, map } from 'rxjs/operators';

export class TranslateElectronLoader implements TranslateLoader {
  constructor(
    private nativeService: NativeService,
    private prefix: string = '/assets/i18n/',
    private suffix: string = '.json'
  ) {}

  /**
   * Gets the translations from the server
   */
  public getTranslation(lang: string): Observable<any> {
    return this.nativeService
      .readFile(`${this.prefix}${lang}.${this.suffix}`)
      .pipe(
        take(1),
        map(buf => {
          return JSON.parse(buf.toString());
        })
      );
  }
}
