import { IApplicationGroup } from 'core-app/features/plugins/linked/openproject-souvap/central-navigation/central-navigation.model';
import {
  catchError,
  shareReplay,
} from 'rxjs/operators';
import { TopMenuService } from 'core-app/core/top-menu/top-menu.service';
import { Injectable } from '@angular/core';
import { PathHelperService } from 'core-app/core/path-helper/path-helper.service';
import {
  HttpClient,
  HttpErrorResponse,
} from '@angular/common/http';
import {
  of,
  Subject,
} from 'rxjs';

@Injectable({ providedIn: 'root' })
export class CentralNavigationService {
  private url = this.pathHelper.api.v3.apiV3Base + '/linked_applications';

  loadingError$ = new Subject<boolean>();

  navigationGroups$ = this
    .http
    .get<IApplicationGroup[]>(this.url)
    .pipe(
      catchError((err:HttpErrorResponse) => {
        console.error(err.message);
        this.loadingError$.next(true);
        return of();
      }),
      shareReplay(1),
    );

  constructor(
    private topMenuService:TopMenuService,
    private pathHelper:PathHelperService,
    private http:HttpClient,
  ) {}
}