aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html3
-rw-r--r--client/src/app/+videos/video-list/videos-list-common-page.component.ts3
-rw-r--r--client/src/app/app.module.ts16
-rw-r--r--client/src/app/core/routing/redirect.service.ts11
-rw-r--r--client/src/app/core/server/server.service.ts2
-rw-r--r--config/default.yaml10
-rw-r--r--config/production.yaml.example10
7 files changed, 30 insertions, 25 deletions
diff --git a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
index 22ae0852c..2a9f9d69d 100644
--- a/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
+++ b/client/src/app/+admin/config/edit-custom-config/edit-basic-configuration.component.html
@@ -44,9 +44,6 @@
44 44
45 <div class="peertube-select-container"> 45 <div class="peertube-select-container">
46 <select id="trendingVideosAlgorithmsDefault" formControlName="default" class="form-control"> 46 <select id="trendingVideosAlgorithmsDefault" formControlName="default" class="form-control">
47 <option i18n value="publishedAt">Recently added videos</option>
48 <option i18n value="originallyPublishedAt">Original publication date</option>
49 <option i18n value="name">Name</option>
50 <option i18n value="hot">Hot videos</option> 47 <option i18n value="hot">Hot videos</option>
51 <option i18n value="most-viewed">Recent views</option> 48 <option i18n value="most-viewed">Recent views</option>
52 <option i18n value="most-liked">Most liked videos</option> 49 <option i18n value="most-liked">Most liked videos</option>
diff --git a/client/src/app/+videos/video-list/videos-list-common-page.component.ts b/client/src/app/+videos/video-list/videos-list-common-page.component.ts
index bafe30fd7..c8fa8ef30 100644
--- a/client/src/app/+videos/video-list/videos-list-common-page.component.ts
+++ b/client/src/app/+videos/video-list/videos-list-common-page.component.ts
@@ -177,9 +177,6 @@ export class VideosListCommonPageComponent implements OnInit, OnDestroy, Disable
177 case 'best': 177 case 'best':
178 return '-hot' 178 return '-hot'
179 179
180 case 'name':
181 return 'name'
182
183 default: 180 default:
184 return '-' + algorithm as VideoSortField 181 return '-' + algorithm as VideoSortField
185 } 182 }
diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts
index bb20c2d83..7e4fac730 100644
--- a/client/src/app/app.module.ts
+++ b/client/src/app/app.module.ts
@@ -8,7 +8,7 @@ import { ServiceWorkerModule } from '@angular/service-worker'
8import localeOc from '@app/helpers/locales/oc' 8import localeOc from '@app/helpers/locales/oc'
9import { AppRoutingModule } from './app-routing.module' 9import { AppRoutingModule } from './app-routing.module'
10import { AppComponent } from './app.component' 10import { AppComponent } from './app.component'
11import { CoreModule, PluginService, ServerService } from './core' 11import { CoreModule, PluginService, RedirectService, ServerService } from './core'
12import { EmptyComponent } from './empty.component' 12import { EmptyComponent } from './empty.component'
13import { HeaderComponent, SearchTypeaheadComponent, SuggestionComponent } from './header' 13import { HeaderComponent, SearchTypeaheadComponent, SuggestionComponent } from './header'
14import { HighlightPipe } from './header/highlight.pipe' 14import { HighlightPipe } from './header/highlight.pipe'
@@ -28,13 +28,17 @@ import { SharedUserInterfaceSettingsModule } from './shared/shared-user-settings
28 28
29registerLocaleData(localeOc, 'oc') 29registerLocaleData(localeOc, 'oc')
30 30
31export function loadConfigFactory (server: ServerService, pluginService: PluginService) { 31export function loadConfigFactory (server: ServerService, pluginService: PluginService, redirectService: RedirectService) {
32 const initializeServices = () => {
33 redirectService.init()
34 pluginService.initializePlugins()
35 }
36
32 return () => { 37 return () => {
33 const result = server.loadHTMLConfig() 38 const result = server.loadHTMLConfig()
39 if (result) return result.pipe(tap(() => initializeServices()))
34 40
35 if (result) return result.pipe(tap(() => pluginService.initializePlugins())) 41 initializeServices()
36
37 return pluginService.initializePlugins()
38 } 42 }
39} 43}
40 44
@@ -84,7 +88,7 @@ export function loadConfigFactory (server: ServerService, pluginService: PluginS
84 { 88 {
85 provide: APP_INITIALIZER, 89 provide: APP_INITIALIZER,
86 useFactory: loadConfigFactory, 90 useFactory: loadConfigFactory,
87 deps: [ ServerService, PluginService ], 91 deps: [ ServerService, PluginService, RedirectService ],
88 multi: true 92 multi: true
89 } 93 }
90 ] 94 ]
diff --git a/client/src/app/core/routing/redirect.service.ts b/client/src/app/core/routing/redirect.service.ts
index e239c6210..1120e6165 100644
--- a/client/src/app/core/routing/redirect.service.ts
+++ b/client/src/app/core/routing/redirect.service.ts
@@ -31,12 +31,15 @@ export class RedirectService {
31 private serverService: ServerService, 31 private serverService: ServerService,
32 private storage: SessionStorageService 32 private storage: SessionStorageService
33 ) { 33 ) {
34 // The config is first loaded from the cache so try to get the default route 34
35 }
36
37 init () {
35 const config = this.serverService.getHTMLConfig() 38 const config = this.serverService.getHTMLConfig()
36 if (config?.instance?.defaultClientRoute) { 39 if (config.instance.defaultClientRoute) {
37 this.defaultRoute = config.instance.defaultClientRoute 40 this.defaultRoute = config.instance.defaultClientRoute
38 } 41 }
39 if (config?.trending?.videos?.algorithms?.default) { 42 if (config.trending.videos.algorithms.default) {
40 this.defaultTrendingAlgorithm = config.trending.videos.algorithms.default 43 this.defaultTrendingAlgorithm = config.trending.videos.algorithms.default
41 } 44 }
42 45
@@ -47,7 +50,7 @@ export class RedirectService {
47 50
48 // Track previous url 51 // Track previous url
49 this.currentUrl = this.router.url 52 this.currentUrl = this.router.url
50 router.events.subscribe(event => { 53 this.router.events.subscribe(event => {
51 if (event instanceof NavigationEnd || event instanceof NavigationCancel) { 54 if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
52 if ([ '/401', '/404' ].includes(event.url)) return 55 if ([ '/401', '/404' ].includes(event.url)) return
53 56
diff --git a/client/src/app/core/server/server.service.ts b/client/src/app/core/server/server.service.ts
index 9db455cb8..0829d87d5 100644
--- a/client/src/app/core/server/server.service.ts
+++ b/client/src/app/core/server/server.service.ts
@@ -40,7 +40,7 @@ export class ServerService {
40 40
41 loadHTMLConfig () { 41 loadHTMLConfig () {
42 try { 42 try {
43 return this.loadHTMLConfigLocally() 43 this.loadHTMLConfigLocally()
44 } catch (err) { 44 } catch (err) {
45 // Expected in dev mode since we can't inject the config in the HTML 45 // Expected in dev mode since we can't inject the config in the HTML
46 if (environment.production !== false) { 46 if (environment.production !== false) {
diff --git a/config/default.yaml b/config/default.yaml
index 37059e9e0..bb4a823fa 100644
--- a/config/default.yaml
+++ b/config/default.yaml
@@ -236,12 +236,14 @@ open_telemetry:
236 236
237trending: 237trending:
238 videos: 238 videos:
239 interval_days: 7 # Compute trending videos for the last x days 239 interval_days: 7 # Compute trending videos for the last x days for 'most-viewed' algorithm
240
240 algorithms: 241 algorithms:
241 enabled: 242 enabled:
242 - 'hot' # adaptation of Reddit's 'Hot' algorithm 243 - 'hot' # Adaptation of Reddit's 'Hot' algorithm
243 - 'most-viewed' # default, used initially by PeerTube as the trending page 244 - 'most-viewed' # Number of views in the last x days
244 - 'most-liked' 245 - 'most-liked' # Global views since the upload of the video
246
245 default: 'most-viewed' 247 default: 'most-viewed'
246 248
247# Cache remote videos on your server, to help other instances to broadcast the video 249# Cache remote videos on your server, to help other instances to broadcast the video
diff --git a/config/production.yaml.example b/config/production.yaml.example
index 906fb7e1f..f1ebf9095 100644
--- a/config/production.yaml.example
+++ b/config/production.yaml.example
@@ -234,12 +234,14 @@ open_telemetry:
234 234
235trending: 235trending:
236 videos: 236 videos:
237 interval_days: 7 # Compute trending videos for the last x days 237 interval_days: 7 # Compute trending videos for the last x days for 'most-viewed' algorithm
238
238 algorithms: 239 algorithms:
239 enabled: 240 enabled:
240 - 'hot' # adaptation of Reddit's 'Hot' algorithm 241 - 'hot' # Adaptation of Reddit's 'Hot' algorithm
241 - 'most-viewed' # default, used initially by PeerTube as the trending page 242 - 'most-viewed' # Number of views in the last x days
242 - 'most-liked' 243 - 'most-liked' # Global views since the upload of the video
244
243 default: 'most-viewed' 245 default: 'most-viewed'
244 246
245# Cache remote videos on your server, to help other instances to broadcast the video 247# Cache remote videos on your server, to help other instances to broadcast the video