import { HttpClient } from '@angular/common/http'; import { inject, Injectable } from '@angular/core'; import { of } from 'rxjs'; import { environment } from '../../../../environments/environment'; import EventService from '../EventService'; import ApiKey from '../../models/api-key'; @Injectable({ providedIn: 'root' }) export class ApiKeyService { private readonly http = inject(HttpClient); private readonly events = inject(EventService); private keys: ApiKey[] = []; private loaded = false; constructor() { this.events.listen('logoff', () => { this.keys = []; this.loaded = false; }); } fetch(force: boolean = false) { if (!force && this.loaded) return of(this.keys); const $ = this.http.get(environment.API_HOST + '/keys', { headers: { 'Authorization': 'Bearer ' + localStorage.getItem('jwt'), } }); $.subscribe(d => { this.keys = d; this.loaded = true; }); return $; } }