import { HttpClient } from '@angular/common/http'
import { Inject, Injectable, LOCALE_ID } from '@angular/core'
import { getDevLocale, isOnDevLocale, sortBy } from '@app/helpers'
+import { logger } from '@root-helpers/logger'
import { getCompleteLocale, isDefaultLocale, peertubeTranslate } from '@shared/core-utils/i18n'
-import { HTMLServerConfig, SearchTargetType, ServerConfig, ServerStats, VideoConstant } from '@shared/models'
+import { HTMLServerConfig, ServerConfig, ServerStats, VideoConstant } from '@shared/models'
import { environment } from '../../../environments/environment'
@Injectable()
) {
}
- loadConfig () {
+ loadHTMLConfig () {
try {
- return this.loadConfigLocally()
+ this.loadHTMLConfigLocally()
} catch (err) {
// Expected in dev mode since we can't inject the config in the HTML
if (environment.production !== false) {
- console.error('Cannot load config locally. Fallback to API.')
+ logger.error('Cannot load config locally. Fallback to API.')
}
return this.getConfig()
.pipe(
tap(config => {
this.config = config
+ this.htmlConfig = config
this.configLoaded = true
}),
tap(config => {
return this.configObservable
}
- getTmpConfig () {
- return this.config
+ getHTMLConfig () {
+ return this.htmlConfig
}
getVideoCategories () {
return this.videoPlaylistPrivaciesObservable.pipe(first())
}
- getServerLocale () {
+ getServerLocale (): Observable<{ [ id: string ]: string }> {
if (!this.localeObservable) {
const completeLocale = isOnDevLocale() ? getDevLocale() : getCompleteLocale(this.localeId)
return this.http.get<ServerStats>(ServerService.BASE_STATS_URL)
}
- getDefaultSearchTarget (): Promise<SearchTargetType> {
- 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 <T extends string | number> (
baseUrl: string,
attributeName: 'categories' | 'licences' | 'languages' | 'privacies',
map(({ data, translations }) => {
const hashToPopulate: VideoConstant<T>[] = Object.keys(data)
.map(dataKey => {
- const label = data[ dataKey ]
+ const label = data[dataKey]
const id = attributeName === 'languages'
? dataKey as T
)
}
- private loadConfigLocally () {
- const configString = window['PeerTubeServerConfig']
+ private loadHTMLConfigLocally () {
+ // FIXME: typings
+ const configString = (window as any)['PeerTubeServerConfig']
if (!configString) {
throw new Error('Could not find PeerTubeServerConfig in HTML')
}
- this.config = JSON.parse(configString)
+ this.htmlConfig = JSON.parse(configString)
}
}