mirror of https://github.com/Chocobozzz/PeerTube
				
				
				
			Merge branch 'release/1.4.0' into develop
						commit
						001ed2d40c
					
				|  | @ -86,7 +86,8 @@ | |||
|           "options": { | ||||
|             "baseHref": "/", | ||||
|             "deployUrl": "client/", | ||||
|             "browserTarget": "PeerTube:build" | ||||
|             "browserTarget": "PeerTube:build", | ||||
|             "proxyConfig": "proxy.config.json" | ||||
|           }, | ||||
|           "configurations": { | ||||
|             "production": { | ||||
|  | @ -96,7 +97,8 @@ | |||
|               "browserTarget": "PeerTube:build:hmr" | ||||
|             }, | ||||
|             "e2e": { | ||||
|               "browserTarget": "PeerTube:build:e2e" | ||||
|               "browserTarget": "PeerTube:build:e2e", | ||||
|               "proxyConfig": "e2e/proxy.config.json" | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|  |  | |||
|  | @ -0,0 +1,37 @@ | |||
| { | ||||
|   "/api": { | ||||
|     "target": "http://localhost:9000", | ||||
|     "secure": false | ||||
|   }, | ||||
|   "/plugins": { | ||||
|     "target": "http://localhost:9000", | ||||
|     "secure": false | ||||
|   }, | ||||
|   "/themes": { | ||||
|     "target": "http://localhost:9000", | ||||
|     "secure": false | ||||
|   }, | ||||
|   "/static": { | ||||
|     "target": "http://localhost:9000", | ||||
|     "secure": false | ||||
|   }, | ||||
|   "/lazy-static": { | ||||
|     "target": "http://localhost:9000", | ||||
|     "secure": false | ||||
|   }, | ||||
|   "/socket.io": { | ||||
|     "target": "ws://localhost:9000", | ||||
|     "secure": false, | ||||
|     "ws": true | ||||
|   }, | ||||
|   "/!(client)**": { | ||||
|     "target": "http://localhost:3333/client/index.html", | ||||
|     "secure": false, | ||||
|     "logLevel": "debug" | ||||
|   }, | ||||
|   "/!(client)**/**": { | ||||
|     "target": "http://localhost:3333/client/index.html", | ||||
|     "secure": false, | ||||
|     "logLevel": "debug" | ||||
|   } | ||||
| } | ||||
|  | @ -3,6 +3,7 @@ | |||
| 
 | ||||
| .plugin { | ||||
|   margin: 15px 0; | ||||
|   background-color: var(--submenuColor); | ||||
| } | ||||
| 
 | ||||
| .first-row { | ||||
|  |  | |||
|  | @ -8,9 +8,11 @@ import { debounceTime, filter, map, pairwise, skip } from 'rxjs/operators' | |||
| import { Hotkey, HotkeysService } from 'angular2-hotkeys' | ||||
| import { I18n } from '@ngx-translate/i18n-polyfill' | ||||
| import { fromEvent } from 'rxjs' | ||||
| import { ViewportScroller } from '@angular/common' | ||||
| import { PlatformLocation, ViewportScroller } from '@angular/common' | ||||
| import { PluginService } from '@app/core/plugins/plugin.service' | ||||
| import { HooksService } from '@app/core/plugins/hooks.service' | ||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | ||||
| import { POP_STATE_MODAL_DISMISS } from '@app/shared/misc/constants' | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'my-app', | ||||
|  | @ -35,7 +37,9 @@ export class AppComponent implements OnInit { | |||
|     private screenService: ScreenService, | ||||
|     private hotkeysService: HotkeysService, | ||||
|     private themeService: ThemeService, | ||||
|     private hooks: HooksService | ||||
|     private hooks: HooksService, | ||||
|     private location: PlatformLocation, | ||||
|     private modalService: NgbModal | ||||
|   ) { } | ||||
| 
 | ||||
|   get serverVersion () { | ||||
|  | @ -90,6 +94,8 @@ export class AppComponent implements OnInit { | |||
|     fromEvent(window, 'resize') | ||||
|       .pipe(debounceTime(200)) | ||||
|       .subscribe(() => this.onResize()) | ||||
| 
 | ||||
|     this.location.onPopState(() => this.modalService.dismissAll(POP_STATE_MODAL_DISMISS)) | ||||
|   } | ||||
| 
 | ||||
|   isUserLoggedIn () { | ||||
|  | @ -110,7 +116,6 @@ export class AppComponent implements OnInit { | |||
|     const eventsObs = this.router.events | ||||
| 
 | ||||
|     const scrollEvent = eventsObs.pipe(filter((e: Event): e is Scroll => e instanceof Scroll)) | ||||
|     const navigationEndEvent = eventsObs.pipe(filter((e: Event): e is NavigationEnd => e instanceof NavigationEnd)) | ||||
| 
 | ||||
|     scrollEvent.subscribe(e => { | ||||
|       if (e.position) { | ||||
|  | @ -126,6 +131,8 @@ export class AppComponent implements OnInit { | |||
|       } | ||||
|     }) | ||||
| 
 | ||||
|     const navigationEndEvent = eventsObs.pipe(filter((e: Event): e is NavigationEnd => e instanceof NavigationEnd)) | ||||
| 
 | ||||
|     // When we add the a-state parameter, we don't want to alter the scroll
 | ||||
|     navigationEndEvent.pipe(pairwise()) | ||||
|                       .subscribe(([ e1, e2 ]) => { | ||||
|  |  | |||
|  | @ -18,12 +18,16 @@ export class ConfirmService { | |||
|   confirm (message: string, title = '', confirmButtonText?: string) { | ||||
|     this.showConfirm.next({ title, message, confirmButtonText }) | ||||
| 
 | ||||
|     return this.confirmResponse.asObservable().pipe(first()).toPromise() | ||||
|     return this.confirmResponse.asObservable() | ||||
|                .pipe(first()) | ||||
|                .toPromise() | ||||
|   } | ||||
| 
 | ||||
|   confirmWithInput (message: string, inputLabel: string, expectedInputValue: string, title = '', confirmButtonText?: string) { | ||||
|     this.showConfirm.next({ title, message, inputLabel, expectedInputValue, confirmButtonText }) | ||||
| 
 | ||||
|     return this.confirmResponse.asObservable().pipe(first()).toPromise() | ||||
|     return this.confirmResponse.asObservable() | ||||
|                .pipe(first()) | ||||
|                .toPromise() | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ import { ConfirmService } from '@app/core/confirm/confirm.service' | |||
| import { I18n } from '@ngx-translate/i18n-polyfill' | ||||
| import { NgbModal } from '@ng-bootstrap/ng-bootstrap' | ||||
| import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' | ||||
| import { POP_STATE_MODAL_DISMISS } from '@app/shared/misc/constants' | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'my-confirm', | ||||
|  | @ -63,6 +64,11 @@ export class ConfirmComponent implements OnInit { | |||
| 
 | ||||
|     this.openedModal.result | ||||
|         .then(() => this.confirmService.confirmResponse.next(true)) | ||||
|         .catch(() => this.confirmService.confirmResponse.next(false)) | ||||
|         .catch((reason: string) => { | ||||
|           // If the reason was that the user used the back button, we don't care about the confirm dialog result
 | ||||
|           if (!reason || reason !== POP_STATE_MODAL_DISMISS) { | ||||
|             this.confirmService.confirmResponse.next(false) | ||||
|           } | ||||
|         }) | ||||
|   } | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1 @@ | |||
| export const POP_STATE_MODAL_DISMISS = 'pop state dismiss' | ||||
|  | @ -34,6 +34,7 @@ import { VideoWatchPlaylistComponent } from '@app/videos/+video-watch/video-watc | |||
| import { getStoredTheater } from '../../../assets/player/peertube-player-local-storage' | ||||
| import { PluginService } from '@app/core/plugins/plugin.service' | ||||
| import { HooksService } from '@app/core/plugins/hooks.service' | ||||
| import { PlatformLocation } from '@angular/common' | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'my-video-watch', | ||||
|  | @ -95,6 +96,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
|     private i18n: I18n, | ||||
|     private hotkeysService: HotkeysService, | ||||
|     private hooks: HooksService, | ||||
|     private location: PlatformLocation, | ||||
|     @Inject(LOCALE_ID) private localeId: string | ||||
|   ) {} | ||||
| 
 | ||||
|  | @ -374,13 +376,13 @@ export class VideoWatchComponent implements OnInit, OnDestroy { | |||
|         this.i18n('This video contains mature or explicit content. Are you sure you want to watch it?'), | ||||
|         this.i18n('Mature or explicit content') | ||||
|       ) | ||||
|       if (res === false) return this.redirectService.redirectToHomepage() | ||||
|       if (res === false) return this.location.back() | ||||
|     } | ||||
| 
 | ||||
|     // Flush old player if needed
 | ||||
|     this.flushPlayer() | ||||
| 
 | ||||
|     // Build video element, because videojs remove it on dispose
 | ||||
|     // Build video element, because videojs removes it on dispose
 | ||||
|     const playerElementWrapper = this.elementRef.nativeElement.querySelector('#videojs-wrapper') | ||||
|     this.playerElement = document.createElement('video') | ||||
|     this.playerElement.className = 'video-js vjs-peertube-skin' | ||||
|  |  | |||
|  | @ -44,6 +44,8 @@ async function getAvatar (req: express.Request, res: express.Response) { | |||
|   } | ||||
| 
 | ||||
|   const avatar = await AvatarModel.loadByName(filename) | ||||
|   if (!avatar) return res.sendStatus(404) | ||||
| 
 | ||||
|   if (avatar.onDisk === false) { | ||||
|     if (!avatar.fileUrl) return res.sendStatus(404) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Chocobozzz
						Chocobozzz