import {Injectable} from '@angular/core'; import {NetworkService} from '../../model/network/network.service'; import {SettingsService} from '../settings.service'; import {AbstractSettingsService} from '../_abstract/abstract.settings.service'; import {DatabaseType, IndexingConfig} from '../../../../common/config/private/IPrivateConfig'; import {IndexingProgressDTO} from '../../../../common/entities/settings/IndexingProgressDTO'; import {BehaviorSubject} from 'rxjs'; import {IndexingDTO} from '../../../../common/entities/settings/IndexingDTO'; @Injectable() export class IndexingSettingsService extends AbstractSettingsService { public progress: BehaviorSubject; constructor(private _networkService: NetworkService, _settingsService: SettingsService) { super(_settingsService); this.progress = new BehaviorSubject(null); } public updateSettings(settings: IndexingConfig): Promise { return this._networkService.putJson('/settings/indexing', {settings: settings}); } public isSupported(): boolean { return this._settingsService.settings.value.Server.database.type !== DatabaseType.memory; } public index(createThumbnails) { return this._networkService.postJson('/admin/indexes/job', {createThumbnails: createThumbnails}); } public cancel() { return this._networkService.deleteJson('/admin/indexes/job'); } public async getProgress() { this.progress.next(await this._networkService.getJson('/admin/indexes/job/progress')); } public reset() { return this._networkService.deleteJson('/admin/indexes'); } }