X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fcore%2Fserver%2Fserver.service.ts;h=a804efd2888ad27e9bcb87b578c3947474142b74;hb=5fb2e2888ce032c638e4b75d07458642f0833e52;hp=1f6cfb596aa180fa940544c2a5d838b05c582421;hpb=338eb9d33af690db716805fd2277bf68f473b58f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts index 1f6cfb596..a804efd28 100644 --- a/client/src/app/core/server/server.service.ts +++ b/client/src/app/core/server/server.service.ts @@ -1,15 +1,16 @@ +import { Observable, of, Subject } from 'rxjs' import { first, map, share, shareReplay, switchMap, tap } from 'rxjs/operators' import { HttpClient } from '@angular/common/http' import { Inject, Injectable, LOCALE_ID } from '@angular/core' -import { peertubeLocalStorage } from '@app/shared/misc/peertube-web-storage' -import { Observable, of, Subject } from 'rxjs' -import { getCompleteLocale, ServerConfig } from '../../../../../shared' -import { environment } from '../../../environments/environment' -import { VideoConstant } from '../../../../../shared/models/videos' -import { isDefaultLocale, peertubeTranslate } from '../../../../../shared/models/i18n' import { getDevLocale, isOnDevLocale } from '@app/shared/i18n/i18n-utils' +import { peertubeLocalStorage } from '@app/shared/misc/peertube-web-storage' import { sortBy } from '@app/shared/misc/utils' +import { SearchTargetType } from '@shared/models/search/search-target-query.model' import { ServerStats } from '@shared/models/server' +import { getCompleteLocale, ServerConfig } from '../../../../../shared' +import { isDefaultLocale, peertubeTranslate } from '../../../../../shared/models/i18n' +import { VideoConstant } from '../../../../../shared/models/videos' +import { environment } from '../../../environments/environment' @Injectable() export class ServerService { @@ -21,7 +22,7 @@ export class ServerService { private static CONFIG_LOCAL_STORAGE_KEY = 'server-config' - configReloaded = new Subject() + configReloaded = new Subject() private localeObservable: Observable private videoLicensesObservable: Observable[]> @@ -48,7 +49,9 @@ export class ServerService { } }, plugin: { - registered: [] + registered: [], + registeredExternalAuths: [], + registeredIdAndPassAuths: [] }, theme: { registered: [], @@ -131,6 +134,24 @@ export class ServerService { indexUrl: 'https://instances.joinpeertube.org' } } + }, + broadcastMessage: { + enabled: false, + message: '', + level: 'info', + dismissable: false + }, + search: { + remoteUri: { + users: true, + anonymous: false + }, + searchIndex: { + enabled: false, + url: '', + disableLocalSearch: false, + isDefaultSearch: false + } } } @@ -154,6 +175,11 @@ export class ServerService { resetConfig () { this.configLoaded = false this.configReset = true + + // Notify config update + this.getConfig().subscribe(() => { + // empty, to fire a reset config event + }) } getConfig () { @@ -162,11 +188,14 @@ export class ServerService { if (!this.configObservable) { this.configObservable = this.http.get(ServerService.BASE_CONFIG_URL) .pipe( - tap(this.saveConfigLocally), - tap(() => this.configLoaded = true), - tap(() => { + tap(config => this.saveConfigLocally(config)), + tap(config => { + this.config = config + this.configLoaded = true + }), + tap(config => { if (this.configReset) { - this.configReloaded.next() + this.configReloaded.next(config) this.configReset = false } }), @@ -242,6 +271,20 @@ export class ServerService { return this.http.get(ServerService.BASE_STATS_URL) } + getDefaultSearchTarget (): Promise { + return this.getConfig().pipe( + map(config => { + const searchIndexConfig = config.search.searchIndex + + if (searchIndexConfig.enabled && (searchIndexConfig.isDefaultSearch || searchIndexConfig.disableLocalSearch)) { + return 'search-index' + } + + return 'local' + }) + ).toPromise() + } + private loadAttributeEnum ( baseUrl: string, attributeName: 'categories' | 'licences' | 'languages' | 'privacies', @@ -254,17 +297,19 @@ export class ServerService { .pipe(map(data => ({ data, translations }))) }), map(({ data, translations }) => { - const hashToPopulate: VideoConstant[] = [] - - Object.keys(data) - .forEach(dataKey => { - const label = data[ dataKey ] - - hashToPopulate.push({ - id: (attributeName === 'languages' ? dataKey : parseInt(dataKey, 10)) as T, - label: peertubeTranslate(label, translations) - }) - }) + const hashToPopulate: VideoConstant[] = Object.keys(data) + .map(dataKey => { + const label = data[ dataKey ] + + const id = attributeName === 'languages' + ? dataKey as T + : parseInt(dataKey, 10) as T + + return { + id, + label: peertubeTranslate(label, translations) + } + }) if (sort === true) sortBy(hashToPopulate, 'label')