import {Injectable} from '@angular/core'; import {BehaviorSubject} from 'rxjs'; import {DatabaseType, IPrivateConfig, ReIndexingSensitivity, ThumbnailProcessingLib} from '../../../common/config/private/IPrivateConfig'; import {NetworkService} from '../model/network/network.service'; import {SortingMethods} from '../../../common/entities/SortingMethods'; @Injectable() export class SettingsService { public settings: BehaviorSubject; constructor(private _networkService: NetworkService) { this.settings = new BehaviorSubject({ Client: { Search: { enabled: true, autocompleteEnabled: true, instantSearchEnabled: true, InstantSearchTimeout: 0, searchCacheTimeout: 1000 * 60 * 60, instantSearchCacheTimeout: 1000 * 60 * 60, autocompleteCacheTimeout: 1000 * 60 * 60 }, concurrentThumbnailGenerations: null, Thumbnail: { iconSize: 30, thumbnailSizes: [] }, Sharing: { enabled: true, passwordProtected: true }, Map: { enabled: true, googleApiKey: '' }, urlBase: '', publicUrl: '', applicationTitle: '', enableCache: true, enableOnScrollRendering: true, enableOnScrollThumbnailPrioritising: true, authenticationRequired: true, languages: [], defaultPhotoSortingMethod: SortingMethods.ascDate }, Server: { database: { type: DatabaseType.memory }, sharing: { updateTimeout: 2000 }, imagesFolder: '', enableThreading: true, port: 80, thumbnail: { folder: '', qualityPriority: true, processingLibrary: ThumbnailProcessingLib.sharp }, sessionTimeout: 0, indexing: { cachedFolderTimeout: 0, folderPreviewSize: 0, reIndexingSensitivity: ReIndexingSensitivity.medium } } }); } public async getSettings(): Promise { this.settings.next(await >this._networkService.getJson('/settings')); } }