45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import {Injectable} from '@angular/core';
|
|
import {HttpClient} from '@angular/common/http';
|
|
import {BehaviorSubject, Observable} from 'rxjs';
|
|
import {Curator} from '../../utils/entities/CuratorInfo';
|
|
import {EnvProperties} from '../../utils/properties/env-properties';
|
|
import {CustomOptions} from "../../services/servicesUtils/customOptions.class";
|
|
|
|
@Injectable()
|
|
export class CuratorService {
|
|
|
|
private curatorsSubject: BehaviorSubject<Curator[]> = new BehaviorSubject([]);
|
|
|
|
constructor(private http: HttpClient) {
|
|
}
|
|
|
|
public initCurators(properties: EnvProperties, url: string): void {
|
|
this.http.get<Curator[]>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url).
|
|
subscribe((curators) => {
|
|
this.curatorsSubject.next(curators);
|
|
});
|
|
}
|
|
|
|
public get curators(): Observable<Curator[]> {
|
|
return this.curatorsSubject.asObservable();
|
|
}
|
|
|
|
public updateCurators(curator: Curator) {
|
|
const curators = this.curatorsSubject.value;
|
|
if (curators && curator) {
|
|
curator._id = null;
|
|
curators.push(curator);
|
|
this.curatorsSubject.next(curators);
|
|
}
|
|
}
|
|
|
|
public updateCurator(url: string, curator: Curator) {
|
|
return this.http.post<Curator>(url, curator, CustomOptions.getAuthOptions());
|
|
}
|
|
|
|
public getCurator(properties: EnvProperties, url: string): Observable<Curator> {
|
|
return this.http.get<Curator>((properties.useCache) ? (properties.cacheUrl + encodeURIComponent(url)) : url);
|
|
}
|
|
|
|
}
|