import { Inject, Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { ID } from '@datorama/akita'; import { CFG } from './const'; import { BaseApi } from './core/base-api.class'; import { tap } from 'rxjs/operators'; import { DevicesStore } from './state/devices.store'; @Injectable({ providedIn: 'root' }) export class ApiService extends BaseApi { constructor( @Inject(CFG) protected cfg: any, private readonly http: HttpClient, private deviceStore: DevicesStore ) { super(); } devices() { return this.http.get(`${this.endpoint}/client/devices`); } logs(sn: ID) { return this.http.get(`${this.endpoint}/client/logs/${sn}`).pipe( tap(logs => { this.deviceStore.update({ logs: Object.keys(logs).map((key) => ({ ...JSON.parse(logs[key]), type: key })) }); }) ); } deleteDeviceLog(sn: ID) { return this.http.delete(`${this.endpoint}/client/delete/${sn}`); } deleteDevice(id: number) { return this.http.delete(`${this.endpoint}/client/delete/device/${id}`); } }