X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fapp.component.ts;h=40eac7fb8df9689347e4c6ae254f227daa77e8e8;hb=20d211990425af8d9bb5c8eba204d2b485bcd19a;hp=fc4d6c6a27c4d5e92e29337d4b81ee85f5dab7f3;hpb=b5c4bfd6acfa6b3430b81e3915658d0129b2cd5f;p=github%2FChocobozzz%2FPeerTube.git
diff --git a/client/src/app/app.component.ts b/client/src/app/app.component.ts
index fc4d6c6a2..40eac7fb8 100644
--- a/client/src/app/app.component.ts
+++ b/client/src/app/app.component.ts
@@ -4,6 +4,8 @@ import { GuardsCheckStart, NavigationEnd, Router } from '@angular/router'
import { AuthService, RedirectService, ServerService } from '@app/core'
import { is18nPath } from '../../../shared/models/i18n'
import { ScreenService } from '@app/shared/misc/screen.service'
+import { skip } from 'rxjs/operators'
+import { HotkeysService, Hotkey } from 'angular2-hotkeys'
@Component({
selector: 'my-app',
@@ -34,7 +36,8 @@ export class AppComponent implements OnInit {
private serverService: ServerService,
private domSanitizer: DomSanitizer,
private redirectService: RedirectService,
- private screenService: ScreenService
+ private screenService: ScreenService,
+ private hotkeysService: HotkeysService
) { }
get serverVersion () {
@@ -89,25 +92,67 @@ export class AppComponent implements OnInit {
}
)
+ // Inject JS
this.serverService.configLoaded
- .subscribe(() => {
- const config = this.serverService.getConfig()
+ .subscribe(() => {
+ const config = this.serverService.getConfig()
+
+ if (config.instance.customizations.javascript) {
+ try {
+ // tslint:disable:no-eval
+ eval(config.instance.customizations.javascript)
+ } catch (err) {
+ console.error('Cannot eval custom JavaScript.', err)
+ }
+ }
+ })
- // We test customCSS if the admin removed the css
- if (this.customCSS || config.instance.customizations.css) {
- const styleTag = ''
- this.customCSS = this.domSanitizer.bypassSecurityTrustHtml(styleTag)
- }
+ // Inject CSS if modified (admin config settings)
+ this.serverService.configLoaded
+ .pipe(skip(1)) // We only want to subscribe to reloads, because the CSS is already injected by the server
+ .subscribe(() => {
+ const headStyle = document.querySelector('style.custom-css-style')
+ if (headStyle) headStyle.parentNode.removeChild(headStyle)
- if (config.instance.customizations.javascript) {
- try {
- // tslint:disable:no-eval
- eval(config.instance.customizations.javascript)
- } catch (err) {
- console.error('Cannot eval custom JavaScript.', err)
+ const config = this.serverService.getConfig()
+
+ // We test customCSS if the admin removed the css
+ if (this.customCSS || config.instance.customizations.css) {
+ const styleTag = ''
+ this.customCSS = this.domSanitizer.bypassSecurityTrustHtml(styleTag)
}
- }
- })
+ })
+
+ this.hotkeysService.add([
+ new Hotkey('/', (event: KeyboardEvent): boolean => {
+ document.getElementById('search-video').focus()
+ return false // Prevent bubbling
+ }, undefined, 'Focus the search bar'),
+ new Hotkey('g s', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/subscriptions' ])
+ return false
+ }, undefined, 'Go to the subscriptions videos page'),
+ new Hotkey('g o', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/overview' ])
+ return false
+ }, undefined, 'Go to the videos overview page'),
+ new Hotkey('g t', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/trending' ])
+ return false
+ }, undefined, 'Go to the trending videos page'),
+ new Hotkey('g r', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/recently-added' ])
+ return false
+ }, undefined, 'Go to the recently added videos page'),
+ new Hotkey('g l', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/local' ])
+ return false
+ }, undefined, 'Go to the local videos page'),
+ new Hotkey('g u', (event: KeyboardEvent): boolean => {
+ this.router.navigate([ '/videos/upload' ])
+ return false
+ }, undefined, 'Go to the videos upload page')
+ ])
}
isUserLoggedIn () {