diff options
Diffstat (limited to 'client/src')
21 files changed, 55 insertions, 57 deletions
diff --git a/client/src/app/+accounts/accounts.component.ts b/client/src/app/+accounts/accounts.component.ts index e8339b78b..d9786fb5c 100644 --- a/client/src/app/+accounts/accounts.component.ts +++ b/client/src/app/+accounts/accounts.component.ts | |||
@@ -7,7 +7,6 @@ import { catchError, distinctUntilChanged, map, switchMap, tap } from 'rxjs/oper | |||
7 | import { Subscription } from 'rxjs' | 7 | import { Subscription } from 'rxjs' |
8 | import { AuthService, Notifier, RedirectService } from '@app/core' | 8 | import { AuthService, Notifier, RedirectService } from '@app/core' |
9 | import { User, UserRight } from '../../../../shared' | 9 | import { User, UserRight } from '../../../../shared' |
10 | import { I18n } from '@ngx-translate/i18n-polyfill' | ||
11 | 10 | ||
12 | @Component({ | 11 | @Component({ |
13 | templateUrl: './accounts.component.html', | 12 | templateUrl: './accounts.component.html', |
diff --git a/client/src/app/+video-channels/video-channel-playlists/video-channel-playlists.component.html b/client/src/app/+video-channels/video-channel-playlists/video-channel-playlists.component.html index 0d9fba375..befc7143c 100644 --- a/client/src/app/+video-channels/video-channel-playlists/video-channel-playlists.component.html +++ b/client/src/app/+video-channels/video-channel-playlists/video-channel-playlists.component.html | |||
@@ -1,5 +1,5 @@ | |||
1 | <div i18n class="title-page title-page-single"> | 1 | <div i18n class="title-page title-page-single"> |
2 | Created {{pagination.totalItems}} playlists | 2 | Created {{ pagination.totalItems }} playlists |
3 | </div> | 3 | </div> |
4 | 4 | ||
5 | <div i18n class="no-results" *ngIf="pagination.totalItems === 0">This channel does not have playlists.</div> | 5 | <div i18n class="no-results" *ngIf="pagination.totalItems === 0">This channel does not have playlists.</div> |
diff --git a/client/src/app/shared/forms/form-reactive.ts b/client/src/app/shared/forms/form-reactive.ts index b9873af2c..0d40b6f4a 100644 --- a/client/src/app/shared/forms/form-reactive.ts +++ b/client/src/app/shared/forms/form-reactive.ts | |||
@@ -59,7 +59,7 @@ export abstract class FormReactive { | |||
59 | const isDirty = control.dirty || forceCheck === true | 59 | const isDirty = control.dirty || forceCheck === true |
60 | if (control && isDirty && !control.valid) { | 60 | if (control && isDirty && !control.valid) { |
61 | const messages = validationMessages[ field ] | 61 | const messages = validationMessages[ field ] |
62 | for (const key in control.errors) { | 62 | for (const key of Object.keys(control.errors)) { |
63 | formErrors[ field ] += messages[ key ] + ' ' | 63 | formErrors[ field ] += messages[ key ] + ' ' |
64 | } | 64 | } |
65 | } | 65 | } |
diff --git a/client/src/app/shared/misc/utils.ts b/client/src/app/shared/misc/utils.ts index 8a1d342c9..85fc1c3a0 100644 --- a/client/src/app/shared/misc/utils.ts +++ b/client/src/app/shared/misc/utils.ts | |||
@@ -78,10 +78,10 @@ function objectToUrlEncoded (obj: any) { | |||
78 | 78 | ||
79 | // Thanks: https://gist.github.com/ghinda/8442a57f22099bdb2e34 | 79 | // Thanks: https://gist.github.com/ghinda/8442a57f22099bdb2e34 |
80 | function objectToFormData (obj: any, form?: FormData, namespace?: string) { | 80 | function objectToFormData (obj: any, form?: FormData, namespace?: string) { |
81 | let fd = form || new FormData() | 81 | const fd = form || new FormData() |
82 | let formKey | 82 | let formKey |
83 | 83 | ||
84 | for (let key of Object.keys(obj)) { | 84 | for (const key of Object.keys(obj)) { |
85 | if (namespace) formKey = `${namespace}[${key}]` | 85 | if (namespace) formKey = `${namespace}[${key}]` |
86 | else formKey = key | 86 | else formKey = key |
87 | 87 | ||
diff --git a/client/src/app/shared/renderer/markdown.service.ts b/client/src/app/shared/renderer/markdown.service.ts index 69dc60aaf..9a9066351 100644 --- a/client/src/app/shared/renderer/markdown.service.ts +++ b/client/src/app/shared/renderer/markdown.service.ts | |||
@@ -45,7 +45,7 @@ export class MarkdownService { | |||
45 | 45 | ||
46 | const markdownIt = new MarkdownItClass('zero', { linkify: true, breaks: true }) | 46 | const markdownIt = new MarkdownItClass('zero', { linkify: true, breaks: true }) |
47 | 47 | ||
48 | for (let rule of rules) { | 48 | for (const rule of rules) { |
49 | markdownIt.enable(rule) | 49 | markdownIt.enable(rule) |
50 | } | 50 | } |
51 | 51 | ||
diff --git a/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.html b/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.html index 4764fc0e1..ab5a78928 100644 --- a/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.html +++ b/client/src/app/shared/video-playlist/video-playlist-element-miniature.component.html | |||
@@ -19,7 +19,7 @@ | |||
19 | <a *ngIf="accountLink" tabindex="-1" class="video-info-account" [routerLink]="[ '/accounts', video.byAccount ]">{{ video.byAccount }}</a> | 19 | <a *ngIf="accountLink" tabindex="-1" class="video-info-account" [routerLink]="[ '/accounts', video.byAccount ]">{{ video.byAccount }}</a> |
20 | <span *ngIf="!accountLink" tabindex="-1" class="video-info-account">{{ video.byAccount }}</span> | 20 | <span *ngIf="!accountLink" tabindex="-1" class="video-info-account">{{ video.byAccount }}</span> |
21 | 21 | ||
22 | <span tabindex="-1" class="video-info-timestamp">{{ formatTimestamp(video)}}</span> | 22 | <span tabindex="-1" class="video-info-timestamp">{{ formatTimestamp(video) }}</span> |
23 | </div> | 23 | </div> |
24 | </a> | 24 | </a> |
25 | 25 | ||
@@ -66,7 +66,7 @@ | |||
66 | </div> | 66 | </div> |
67 | 67 | ||
68 | <span class="dropdown-item" (click)="removeFromPlaylist(video)"> | 68 | <span class="dropdown-item" (click)="removeFromPlaylist(video)"> |
69 | <my-global-icon iconName="delete"></my-global-icon> <ng-container i18n>Delete from {{playlist?.displayName}}</ng-container> | 69 | <my-global-icon iconName="delete"></my-global-icon> <ng-container i18n>Delete from {{ playlist?.displayName }}</ng-container> |
70 | </span> | 70 | </span> |
71 | </div> | 71 | </div> |
72 | </div> | 72 | </div> |
diff --git a/client/src/app/shared/video-playlist/video-playlist-miniature.component.html b/client/src/app/shared/video-playlist/video-playlist-miniature.component.html index c01c73012..faf906c59 100644 --- a/client/src/app/shared/video-playlist/video-playlist-miniature.component.html +++ b/client/src/app/shared/video-playlist/video-playlist-miniature.component.html | |||
@@ -6,7 +6,7 @@ | |||
6 | <img alt="" [attr.aria-labelledby]="playlist.displayName" [attr.src]="playlist.thumbnailUrl" /> | 6 | <img alt="" [attr.aria-labelledby]="playlist.displayName" [attr.src]="playlist.thumbnailUrl" /> |
7 | 7 | ||
8 | <div class="miniature-playlist-info-overlay"> | 8 | <div class="miniature-playlist-info-overlay"> |
9 | <ng-container i18n>{playlist.videosLength, plural, =0 {No videos} =1 {1 video} other {{{playlist.videosLength}} videos}}</ng-container> | 9 | <ng-container i18n>{playlist.videosLength, plural, =0 {No videos} =1 {1 video} other {{{ playlist.videosLength }} videos}}</ng-container> |
10 | </div> | 10 | </div> |
11 | 11 | ||
12 | <div class="play-overlay"> | 12 | <div class="play-overlay"> |
diff --git a/client/src/app/videos/+video-watch/video-watch.component.html b/client/src/app/videos/+video-watch/video-watch.component.html index 91f77cbf3..ad1d04b70 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.html +++ b/client/src/app/videos/+video-watch/video-watch.component.html | |||
@@ -22,7 +22,7 @@ | |||
22 | <div class="playlist-by-index"> | 22 | <div class="playlist-by-index"> |
23 | <div class="playlist-by">{{ playlist.ownerBy }}</div> | 23 | <div class="playlist-by">{{ playlist.ownerBy }}</div> |
24 | <div class="playlist-index"> | 24 | <div class="playlist-index"> |
25 | <span>{{currentPlaylistPosition}}</span><span>{{playlistPagination.totalItems}}</span> | 25 | <span>{{ currentPlaylistPosition }}</span><span>{{ playlistPagination.totalItems }}</span> |
26 | </div> | 26 | </div> |
27 | </div> | 27 | </div> |
28 | </div> | 28 | </div> |
diff --git a/client/src/assets/player/p2p-media-loader/segment-url-builder.ts b/client/src/assets/player/p2p-media-loader/segment-url-builder.ts index 32e7ce4f2..fb990a19d 100644 --- a/client/src/assets/player/p2p-media-loader/segment-url-builder.ts +++ b/client/src/assets/player/p2p-media-loader/segment-url-builder.ts | |||
@@ -8,8 +8,8 @@ function segmentUrlBuilderFactory (baseUrls: string[]) { | |||
8 | 8 | ||
9 | if (i === max - 1) return segment.url | 9 | if (i === max - 1) return segment.url |
10 | 10 | ||
11 | let newBaseUrl = baseUrls[i] | 11 | const newBaseUrl = baseUrls[i] |
12 | let middlePart = newBaseUrl.endsWith('/') ? '' : '/' | 12 | const middlePart = newBaseUrl.endsWith('/') ? '' : '/' |
13 | 13 | ||
14 | return newBaseUrl + middlePart + basename(segment.url) | 14 | return newBaseUrl + middlePart + basename(segment.url) |
15 | } | 15 | } |
diff --git a/client/src/assets/player/utils.ts b/client/src/assets/player/utils.ts index 54f131310..0966027ac 100644 --- a/client/src/assets/player/utils.ts +++ b/client/src/assets/player/utils.ts | |||
@@ -61,12 +61,12 @@ function secondsToTime (seconds: number, full = false, symbol?: string) { | |||
61 | const minuteSymbol = (symbol || 'm') | 61 | const minuteSymbol = (symbol || 'm') |
62 | const secondsSymbol = full ? '' : 's' | 62 | const secondsSymbol = full ? '' : 's' |
63 | 63 | ||
64 | let hours = Math.floor(seconds / 3600) | 64 | const hours = Math.floor(seconds / 3600) |
65 | if (hours >= 1) time = hours + hourSymbol | 65 | if (hours >= 1) time = hours + hourSymbol |
66 | else if (full) time = '0' + hourSymbol | 66 | else if (full) time = '0' + hourSymbol |
67 | 67 | ||
68 | seconds %= 3600 | 68 | seconds %= 3600 |
69 | let minutes = Math.floor(seconds / 60) | 69 | const minutes = Math.floor(seconds / 60) |
70 | if (minutes >= 1 && minutes < 10 && full) time += '0' + minutes + minuteSymbol | 70 | if (minutes >= 1 && minutes < 10 && full) time += '0' + minutes + minuteSymbol |
71 | else if (minutes >= 1) time += minutes + minuteSymbol | 71 | else if (minutes >= 1) time += minutes + minuteSymbol |
72 | else if (full) time += '00' + minuteSymbol | 72 | else if (full) time += '00' + minuteSymbol |
diff --git a/client/src/assets/player/videojs-components/resolution-menu-button.ts b/client/src/assets/player/videojs-components/resolution-menu-button.ts index abcc16411..cff44de72 100644 --- a/client/src/assets/player/videojs-components/resolution-menu-button.ts +++ b/client/src/assets/player/videojs-components/resolution-menu-button.ts | |||
@@ -49,7 +49,7 @@ class ResolutionMenuButton extends MenuButton { | |||
49 | 49 | ||
50 | private addClickListener (component: any) { | 50 | private addClickListener (component: any) { |
51 | component.on('click', () => { | 51 | component.on('click', () => { |
52 | let children = this.menu.children() | 52 | const children = this.menu.children() |
53 | 53 | ||
54 | for (const child of children) { | 54 | for (const child of children) { |
55 | if (component !== child) { | 55 | if (component !== child) { |
diff --git a/client/src/assets/player/videojs-components/settings-menu-button.ts b/client/src/assets/player/videojs-components/settings-menu-button.ts index 14cb8ba43..5e09032b4 100644 --- a/client/src/assets/player/videojs-components/settings-menu-button.ts +++ b/client/src/assets/player/videojs-components/settings-menu-button.ts | |||
@@ -53,7 +53,7 @@ class SettingsButton extends Button { | |||
53 | 53 | ||
54 | onDisposeSettingsItem (event: any, name: string) { | 54 | onDisposeSettingsItem (event: any, name: string) { |
55 | if (name === undefined) { | 55 | if (name === undefined) { |
56 | let children = this.menu.children() | 56 | const children = this.menu.children() |
57 | 57 | ||
58 | while (children.length > 0) { | 58 | while (children.length > 0) { |
59 | children[0].dispose() | 59 | children[0].dispose() |
@@ -62,7 +62,7 @@ class SettingsButton extends Button { | |||
62 | 62 | ||
63 | this.addClass('vjs-hidden') | 63 | this.addClass('vjs-hidden') |
64 | } else { | 64 | } else { |
65 | let item = this.menu.getChild(name) | 65 | const item = this.menu.getChild(name) |
66 | 66 | ||
67 | if (item) { | 67 | if (item) { |
68 | item.dispose() | 68 | item.dispose() |
@@ -148,8 +148,8 @@ class SettingsButton extends Button { | |||
148 | return | 148 | return |
149 | } | 149 | } |
150 | 150 | ||
151 | let offset = this.options_.setup.maxHeightOffset | 151 | const offset = this.options_.setup.maxHeightOffset |
152 | let maxHeight = this.playerComponent.el_.offsetHeight - offset | 152 | const maxHeight = this.playerComponent.el_.offsetHeight - offset |
153 | 153 | ||
154 | if (height > maxHeight) { | 154 | if (height > maxHeight) { |
155 | height = maxHeight | 155 | height = maxHeight |
@@ -166,7 +166,7 @@ class SettingsButton extends Button { | |||
166 | buildMenu () { | 166 | buildMenu () { |
167 | this.menu = new Menu(this.player()) | 167 | this.menu = new Menu(this.player()) |
168 | this.menu.addClass('vjs-main-menu') | 168 | this.menu.addClass('vjs-main-menu') |
169 | let entries = this.options_.entries | 169 | const entries = this.options_.entries |
170 | 170 | ||
171 | if (entries.length === 0) { | 171 | if (entries.length === 0) { |
172 | this.addClass('vjs-hidden') | 172 | this.addClass('vjs-hidden') |
@@ -174,7 +174,7 @@ class SettingsButton extends Button { | |||
174 | return | 174 | return |
175 | } | 175 | } |
176 | 176 | ||
177 | for (let entry of entries) { | 177 | for (const entry of entries) { |
178 | this.addMenuItem(entry, this.options_) | 178 | this.addMenuItem(entry, this.options_) |
179 | } | 179 | } |
180 | 180 | ||
@@ -191,7 +191,7 @@ class SettingsButton extends Button { | |||
191 | } | 191 | } |
192 | 192 | ||
193 | options.name = toTitleCase(entry) | 193 | options.name = toTitleCase(entry) |
194 | let settingsMenuItem = new SettingsMenuItem(this.player(), options, entry, this as any) | 194 | const settingsMenuItem = new SettingsMenuItem(this.player(), options, entry, this as any) |
195 | 195 | ||
196 | this.menu.addChild(settingsMenuItem) | 196 | this.menu.addChild(settingsMenuItem) |
197 | 197 | ||
@@ -204,7 +204,7 @@ class SettingsButton extends Button { | |||
204 | } | 204 | } |
205 | 205 | ||
206 | resetChildren () { | 206 | resetChildren () { |
207 | for (let menuChild of this.menu.children()) { | 207 | for (const menuChild of this.menu.children()) { |
208 | menuChild.reset() | 208 | menuChild.reset() |
209 | } | 209 | } |
210 | } | 210 | } |
@@ -213,7 +213,7 @@ class SettingsButton extends Button { | |||
213 | * Hide all the sub menus | 213 | * Hide all the sub menus |
214 | */ | 214 | */ |
215 | hideChildren () { | 215 | hideChildren () { |
216 | for (let menuChild of this.menu.children()) { | 216 | for (const menuChild of this.menu.children()) { |
217 | menuChild.hideSubMenu() | 217 | menuChild.hideSubMenu() |
218 | } | 218 | } |
219 | } | 219 | } |
diff --git a/client/src/assets/player/videojs-components/settings-menu-item.ts b/client/src/assets/player/videojs-components/settings-menu-item.ts index f14959f9c..78879a2ec 100644 --- a/client/src/assets/player/videojs-components/settings-menu-item.ts +++ b/client/src/assets/player/videojs-components/settings-menu-item.ts | |||
@@ -167,7 +167,7 @@ class SettingsMenuItem extends MenuItem { | |||
167 | * @method PrefixedEvent | 167 | * @method PrefixedEvent |
168 | */ | 168 | */ |
169 | PrefixedEvent (element: any, type: any, callback: any, action = 'addEvent') { | 169 | PrefixedEvent (element: any, type: any, callback: any, action = 'addEvent') { |
170 | let prefix = ['webkit', 'moz', 'MS', 'o', ''] | 170 | const prefix = ['webkit', 'moz', 'MS', 'o', ''] |
171 | 171 | ||
172 | for (let p = 0; p < prefix.length; p++) { | 172 | for (let p = 0; p < prefix.length; p++) { |
173 | if (!prefix[p]) { | 173 | if (!prefix[p]) { |
@@ -249,7 +249,7 @@ class SettingsMenuItem extends MenuItem { | |||
249 | 249 | ||
250 | update (event?: any) { | 250 | update (event?: any) { |
251 | let target: HTMLElement = null | 251 | let target: HTMLElement = null |
252 | let subMenu = this.subMenu.name() | 252 | const subMenu = this.subMenu.name() |
253 | 253 | ||
254 | if (event && event.type === 'tap') { | 254 | if (event && event.type === 'tap') { |
255 | target = event.target | 255 | target = event.target |
@@ -264,7 +264,7 @@ class SettingsMenuItem extends MenuItem { | |||
264 | setTimeout(() => this.settingsSubMenuValueEl_.innerHTML = this.subMenu.labelEl_.innerHTML, 250) | 264 | setTimeout(() => this.settingsSubMenuValueEl_.innerHTML = this.subMenu.labelEl_.innerHTML, 250) |
265 | } else { | 265 | } else { |
266 | // Loop trough the submenu items to find the selected child | 266 | // Loop trough the submenu items to find the selected child |
267 | for (let subMenuItem of this.subMenu.menu.children_) { | 267 | for (const subMenuItem of this.subMenu.menu.children_) { |
268 | if (!(subMenuItem instanceof component)) { | 268 | if (!(subMenuItem instanceof component)) { |
269 | continue | 269 | continue |
270 | } | 270 | } |
@@ -287,7 +287,7 @@ class SettingsMenuItem extends MenuItem { | |||
287 | } | 287 | } |
288 | 288 | ||
289 | bindClickEvents () { | 289 | bindClickEvents () { |
290 | for (let item of this.subMenu.menu.children()) { | 290 | for (const item of this.subMenu.menu.children()) { |
291 | if (!(item instanceof component)) { | 291 | if (!(item instanceof component)) { |
292 | continue | 292 | continue |
293 | } | 293 | } |
@@ -307,7 +307,7 @@ class SettingsMenuItem extends MenuItem { | |||
307 | } | 307 | } |
308 | 308 | ||
309 | setMargin () { | 309 | setMargin () { |
310 | let [width] = this.size | 310 | const [ width ] = this.size |
311 | 311 | ||
312 | this.settingsSubMenuEl_.style.marginRight = `-${width}px` | 312 | this.settingsSubMenuEl_.style.marginRight = `-${width}px` |
313 | } | 313 | } |
diff --git a/client/src/assets/player/webtorrent/peertube-chunk-store.ts b/client/src/assets/player/webtorrent/peertube-chunk-store.ts index 54cc0ea64..66762bef8 100644 --- a/client/src/assets/player/webtorrent/peertube-chunk-store.ts +++ b/client/src/assets/player/webtorrent/peertube-chunk-store.ts | |||
@@ -131,7 +131,7 @@ export class PeertubeChunkStore extends EventEmitter { | |||
131 | // Chunk in store | 131 | // Chunk in store |
132 | this.db.transaction('r', this.db.chunks, async () => { | 132 | this.db.transaction('r', this.db.chunks, async () => { |
133 | const result = await this.db.chunks.get({ id: index }) | 133 | const result = await this.db.chunks.get({ id: index }) |
134 | if (result === undefined) return cb(null, new Buffer(0)) | 134 | if (result === undefined) return cb(null, Buffer.alloc(0)) |
135 | 135 | ||
136 | const buf = result.buf | 136 | const buf = result.buf |
137 | if (!opts) return this.nextTick(cb, null, buf) | 137 | if (!opts) return this.nextTick(cb, null, buf) |
@@ -162,13 +162,13 @@ export class PeertubeChunkStore extends EventEmitter { | |||
162 | } | 162 | } |
163 | 163 | ||
164 | if (this.db) { | 164 | if (this.db) { |
165 | await this.db.close() | 165 | this.db.close() |
166 | 166 | ||
167 | await this.dropDatabase(this.databaseName) | 167 | await this.dropDatabase(this.databaseName) |
168 | } | 168 | } |
169 | 169 | ||
170 | if (this.expirationDB) { | 170 | if (this.expirationDB) { |
171 | await this.expirationDB.close() | 171 | this.expirationDB.close() |
172 | this.expirationDB = null | 172 | this.expirationDB = null |
173 | } | 173 | } |
174 | 174 | ||
diff --git a/client/src/assets/player/webtorrent/video-renderer.ts b/client/src/assets/player/webtorrent/video-renderer.ts index a3415937b..4dce87112 100644 --- a/client/src/assets/player/webtorrent/video-renderer.ts +++ b/client/src/assets/player/webtorrent/video-renderer.ts | |||
@@ -29,7 +29,7 @@ function renderVideo ( | |||
29 | 29 | ||
30 | function renderMedia (file: any, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) { | 30 | function renderMedia (file: any, elem: HTMLVideoElement, opts: RenderMediaOptions, callback: (err: Error, renderer?: any) => void) { |
31 | const extension = extname(file.name).toLowerCase() | 31 | const extension = extname(file.name).toLowerCase() |
32 | let preparedElem: any = undefined | 32 | let preparedElem: any |
33 | let currentTime = 0 | 33 | let currentTime = 0 |
34 | let renderer: any | 34 | let renderer: any |
35 | 35 | ||
diff --git a/client/src/assets/player/webtorrent/webtorrent-plugin.ts b/client/src/assets/player/webtorrent/webtorrent-plugin.ts index c7182acc9..eee3d4db9 100644 --- a/client/src/assets/player/webtorrent/webtorrent-plugin.ts +++ b/client/src/assets/player/webtorrent/webtorrent-plugin.ts | |||
@@ -347,7 +347,7 @@ class WebTorrentPlugin extends Plugin { | |||
347 | if (!averageDownloadSpeed) averageDownloadSpeed = this.getAndSaveActualDownloadSpeed() | 347 | if (!averageDownloadSpeed) averageDownloadSpeed = this.getAndSaveActualDownloadSpeed() |
348 | 348 | ||
349 | // Limit resolution according to player height | 349 | // Limit resolution according to player height |
350 | const playerHeight = this.playerElement.offsetHeight as number | 350 | const playerHeight = this.playerElement.offsetHeight |
351 | 351 | ||
352 | // We take the first resolution just above the player height | 352 | // We take the first resolution just above the player height |
353 | // Example: player height is 530px, we want the 720p file instead of 480p | 353 | // Example: player height is 530px, we want the 720p file instead of 480p |
diff --git a/client/src/polyfills.ts b/client/src/polyfills.ts index 368908432..b68c07fdb 100644 --- a/client/src/polyfills.ts +++ b/client/src/polyfills.ts | |||
@@ -76,6 +76,7 @@ import 'core-js/es7/object' | |||
76 | /*************************************************************************************************** | 76 | /*************************************************************************************************** |
77 | * Zone JS is required by default for Angular itself. | 77 | * Zone JS is required by default for Angular itself. |
78 | */ | 78 | */ |
79 | // tslint:disable | ||
79 | import 'zone.js/dist/zone' // Included with Angular CLI. | 80 | import 'zone.js/dist/zone' // Included with Angular CLI. |
80 | 81 | ||
81 | /*************************************************************************************************** | 82 | /*************************************************************************************************** |
diff --git a/client/src/standalone/player/definitions.ts b/client/src/standalone/player/definitions.ts index 7f9ef9b6f..afd10541b 100644 --- a/client/src/standalone/player/definitions.ts +++ b/client/src/standalone/player/definitions.ts | |||
@@ -1,6 +1,4 @@ | |||
1 | export interface EventHandler<T> { | 1 | export type EventHandler<T> = (ev: T) => void |
2 | (ev: T): void | ||
3 | } | ||
4 | 2 | ||
5 | export type PlayerEventType = | 3 | export type PlayerEventType = |
6 | 'pause' | 'play' | | 4 | 'pause' | 'play' | |
diff --git a/client/src/standalone/player/events.ts b/client/src/standalone/player/events.ts index f1639ef19..28a13c727 100644 --- a/client/src/standalone/player/events.ts +++ b/client/src/standalone/player/events.ts | |||
@@ -13,13 +13,13 @@ export class EventRegistrar { | |||
13 | private eventRegistrations: PlayerEventRegistrationMap = {} | 13 | private eventRegistrations: PlayerEventRegistrationMap = {} |
14 | 14 | ||
15 | public bindToChannel (channel: Channel.MessagingChannel) { | 15 | public bindToChannel (channel: Channel.MessagingChannel) { |
16 | for (let name of Object.keys(this.eventRegistrations)) { | 16 | for (const name of Object.keys(this.eventRegistrations)) { |
17 | channel.bind(name, (txn, params) => this.fire(name, params)) | 17 | channel.bind(name, (txn, params) => this.fire(name, params)) |
18 | } | 18 | } |
19 | } | 19 | } |
20 | 20 | ||
21 | public registerTypes (names: string[]) { | 21 | public registerTypes (names: string[]) { |
22 | for (let name of names) { | 22 | for (const name of names) { |
23 | this.eventRegistrations[ name ] = { registrations: [] } | 23 | this.eventRegistrations[ name ] = { registrations: [] } |
24 | } | 24 | } |
25 | } | 25 | } |
diff --git a/client/src/standalone/videos/embed.ts b/client/src/standalone/videos/embed.ts index b55b4bace..626d55a7c 100644 --- a/client/src/standalone/videos/embed.ts +++ b/client/src/standalone/videos/embed.ts | |||
@@ -40,7 +40,7 @@ class PeerTubeEmbedApi { | |||
40 | } | 40 | } |
41 | 41 | ||
42 | private constructChannel () { | 42 | private constructChannel () { |
43 | let channel = Channel.build({ window: window.parent, origin: '*', scope: this.embed.scope }) | 43 | const channel = Channel.build({ window: window.parent, origin: '*', scope: this.embed.scope }) |
44 | 44 | ||
45 | channel.bind('play', (txn, params) => this.embed.player.play()) | 45 | channel.bind('play', (txn, params) => this.embed.player.play()) |
46 | channel.bind('pause', (txn, params) => this.embed.player.pause()) | 46 | channel.bind('pause', (txn, params) => this.embed.player.pause()) |
@@ -82,8 +82,8 @@ class PeerTubeEmbedApi { | |||
82 | let currentState: 'playing' | 'paused' | 'unstarted' = 'unstarted' | 82 | let currentState: 'playing' | 'paused' | 'unstarted' = 'unstarted' |
83 | 83 | ||
84 | setInterval(() => { | 84 | setInterval(() => { |
85 | let position = this.element.currentTime | 85 | const position = this.element.currentTime |
86 | let volume = this.element.volume | 86 | const volume = this.element.volume |
87 | 87 | ||
88 | this.channel.notify({ | 88 | this.channel.notify({ |
89 | method: 'playbackStatusUpdate', | 89 | method: 'playbackStatusUpdate', |
@@ -114,8 +114,8 @@ class PeerTubeEmbedApi { | |||
114 | } | 114 | } |
115 | 115 | ||
116 | private loadWebTorrentResolutions () { | 116 | private loadWebTorrentResolutions () { |
117 | let resolutions = [] | 117 | const resolutions = [] |
118 | let currentResolutionId = this.embed.player.webtorrent().getCurrentResolutionId() | 118 | const currentResolutionId = this.embed.player.webtorrent().getCurrentResolutionId() |
119 | 119 | ||
120 | for (const videoFile of this.embed.player.webtorrent().videoFiles) { | 120 | for (const videoFile of this.embed.player.webtorrent().videoFiles) { |
121 | let label = videoFile.resolution.label | 121 | let label = videoFile.resolution.label |
@@ -235,7 +235,7 @@ class PeerTubeEmbed { | |||
235 | 235 | ||
236 | private loadParams () { | 236 | private loadParams () { |
237 | try { | 237 | try { |
238 | let params = new URL(window.location.toString()).searchParams | 238 | const params = new URL(window.location.toString()).searchParams |
239 | 239 | ||
240 | this.autoplay = this.getParamToggle(params, 'autoplay') | 240 | this.autoplay = this.getParamToggle(params, 'autoplay') |
241 | this.controls = this.getParamToggle(params, 'controls') | 241 | this.controls = this.getParamToggle(params, 'controls') |
diff --git a/client/src/standalone/videos/test-embed.ts b/client/src/standalone/videos/test-embed.ts index 30a298573..8e83d92a9 100644 --- a/client/src/standalone/videos/test-embed.ts +++ b/client/src/standalone/videos/test-embed.ts | |||
@@ -7,13 +7,13 @@ window.addEventListener('load', async () => { | |||
7 | const lastPart = urlParts[ urlParts.length - 1 ] | 7 | const lastPart = urlParts[ urlParts.length - 1 ] |
8 | const videoId = lastPart.indexOf('?') === -1 ? lastPart : lastPart.split('?')[ 0 ] | 8 | const videoId = lastPart.indexOf('?') === -1 ? lastPart : lastPart.split('?')[ 0 ] |
9 | 9 | ||
10 | let iframe = document.createElement('iframe') | 10 | const iframe = document.createElement('iframe') |
11 | iframe.src = `/videos/embed/${videoId}?autoplay=1&controls=0&api=1` | 11 | iframe.src = `/videos/embed/${videoId}?autoplay=1&controls=0&api=1` |
12 | let mainElement = document.querySelector('#host') | 12 | const mainElement = document.querySelector('#host') |
13 | mainElement.appendChild(iframe) | 13 | mainElement.appendChild(iframe) |
14 | 14 | ||
15 | console.log(`Document finished loading.`) | 15 | console.log(`Document finished loading.`) |
16 | let player = new PeerTubePlayer(document.querySelector('iframe')) | 16 | const player = new PeerTubePlayer(document.querySelector('iframe')) |
17 | 17 | ||
18 | window[ 'player' ] = player | 18 | window[ 'player' ] = player |
19 | 19 | ||
@@ -21,7 +21,7 @@ window.addEventListener('load', async () => { | |||
21 | await player.ready | 21 | await player.ready |
22 | console.log(`Player is ready.`) | 22 | console.log(`Player is ready.`) |
23 | 23 | ||
24 | let monitoredEvents = [ | 24 | const monitoredEvents = [ |
25 | 'pause', | 25 | 'pause', |
26 | 'play', | 26 | 'play', |
27 | 'playbackStatusUpdate', | 27 | 'playbackStatusUpdate', |
@@ -36,18 +36,18 @@ window.addEventListener('load', async () => { | |||
36 | let playbackRates: number[] = [] | 36 | let playbackRates: number[] = [] |
37 | let currentRate = await player.getPlaybackRate() | 37 | let currentRate = await player.getPlaybackRate() |
38 | 38 | ||
39 | let updateRates = async () => { | 39 | const updateRates = async () => { |
40 | let rateListEl = document.querySelector('#rate-list') | 40 | const rateListEl = document.querySelector('#rate-list') |
41 | rateListEl.innerHTML = '' | 41 | rateListEl.innerHTML = '' |
42 | 42 | ||
43 | playbackRates.forEach(rate => { | 43 | playbackRates.forEach(rate => { |
44 | if (currentRate === rate) { | 44 | if (currentRate === rate) { |
45 | let itemEl = document.createElement('strong') | 45 | const itemEl = document.createElement('strong') |
46 | itemEl.innerText = `${rate} (active)` | 46 | itemEl.innerText = `${rate} (active)` |
47 | itemEl.style.display = 'block' | 47 | itemEl.style.display = 'block' |
48 | rateListEl.appendChild(itemEl) | 48 | rateListEl.appendChild(itemEl) |
49 | } else { | 49 | } else { |
50 | let itemEl = document.createElement('a') | 50 | const itemEl = document.createElement('a') |
51 | itemEl.href = 'javascript:;' | 51 | itemEl.href = 'javascript:;' |
52 | itemEl.innerText = rate.toString() | 52 | itemEl.innerText = rate.toString() |
53 | itemEl.addEventListener('click', () => { | 53 | itemEl.addEventListener('click', () => { |
@@ -66,18 +66,18 @@ window.addEventListener('load', async () => { | |||
66 | updateRates() | 66 | updateRates() |
67 | }) | 67 | }) |
68 | 68 | ||
69 | let updateResolutions = ((resolutions: PeerTubeResolution[]) => { | 69 | const updateResolutions = ((resolutions: PeerTubeResolution[]) => { |
70 | let resolutionListEl = document.querySelector('#resolution-list') | 70 | const resolutionListEl = document.querySelector('#resolution-list') |
71 | resolutionListEl.innerHTML = '' | 71 | resolutionListEl.innerHTML = '' |
72 | 72 | ||
73 | resolutions.forEach(resolution => { | 73 | resolutions.forEach(resolution => { |
74 | if (resolution.active) { | 74 | if (resolution.active) { |
75 | let itemEl = document.createElement('strong') | 75 | const itemEl = document.createElement('strong') |
76 | itemEl.innerText = `${resolution.label} (active)` | 76 | itemEl.innerText = `${resolution.label} (active)` |
77 | itemEl.style.display = 'block' | 77 | itemEl.style.display = 'block' |
78 | resolutionListEl.appendChild(itemEl) | 78 | resolutionListEl.appendChild(itemEl) |
79 | } else { | 79 | } else { |
80 | let itemEl = document.createElement('a') | 80 | const itemEl = document.createElement('a') |
81 | itemEl.href = 'javascript:;' | 81 | itemEl.href = 'javascript:;' |
82 | itemEl.innerText = resolution.label | 82 | itemEl.innerText = resolution.label |
83 | itemEl.addEventListener('click', () => { | 83 | itemEl.addEventListener('click', () => { |