From 51353d9a035fb6b81f903a8b5f391292841649fd Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 9 Nov 2021 10:11:20 +0100 Subject: Refactor video views Introduce viewers attribute for live videos Count views for live videos Reduce delay to see the viewer update for lives Add ability to configure video views buffer interval and view ip expiration --- client/src/app/+admin/system/jobs/jobs.component.ts | 2 +- client/src/app/+videos/+video-watch/video-watch.component.ts | 6 +++--- client/src/app/shared/shared-main/video/video.model.ts | 4 ++++ .../src/app/shared/shared-video/video-views-counter.component.html | 2 +- 4 files changed, 9 insertions(+), 5 deletions(-) (limited to 'client/src') diff --git a/client/src/app/+admin/system/jobs/jobs.component.ts b/client/src/app/+admin/system/jobs/jobs.component.ts index b12d7f80a..2cf1bff7a 100644 --- a/client/src/app/+admin/system/jobs/jobs.component.ts +++ b/client/src/app/+admin/system/jobs/jobs.component.ts @@ -36,7 +36,7 @@ export class JobsComponent extends RestTable implements OnInit { 'video-live-ending', 'video-redundancy', 'video-transcoding', - 'videos-views', + 'videos-views-stats', 'move-to-object-storage' ] diff --git a/client/src/app/+videos/+video-watch/video-watch.component.ts b/client/src/app/+videos/+video-watch/video-watch.component.ts index 5ca9d5fa9..fd61bcbf0 100644 --- a/client/src/app/+videos/+video-watch/video-watch.component.ts +++ b/client/src/app/+videos/+video-watch/video-watch.component.ts @@ -658,7 +658,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { return this.peertubeSocket.getLiveVideosObservable() .subscribe(({ type, payload }) => { if (type === 'state-change') return this.handleLiveStateChange(payload.state) - if (type === 'views-change') return this.handleLiveViewsChange(payload.views) + if (type === 'views-change') return this.handleLiveViewsChange(payload.viewers) }) } @@ -677,7 +677,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { this.loadVideo(videoUUID) } - private handleLiveViewsChange (newViews: number) { + private handleLiveViewsChange (newViewers: number) { if (!this.video) { console.error('Cannot update video live views because video is no defined.') return @@ -685,7 +685,7 @@ export class VideoWatchComponent implements OnInit, OnDestroy { console.log('Updating live views.') - this.video.views = newViews + this.video.viewers = newViewers } private initHotkeys () { diff --git a/client/src/app/shared/shared-main/video/video.model.ts b/client/src/app/shared/shared-main/video/video.model.ts index b11316471..472a8c810 100644 --- a/client/src/app/shared/shared-main/video/video.model.ts +++ b/client/src/app/shared/shared-main/video/video.model.ts @@ -57,6 +57,9 @@ export class Video implements VideoServerModel { url: string views: number + // If live + viewers?: number + likes: number dislikes: number nsfw: boolean @@ -150,6 +153,7 @@ export class Video implements VideoServerModel { this.url = hash.url this.views = hash.views + this.viewers = hash.viewers this.likes = hash.likes this.dislikes = hash.dislikes diff --git a/client/src/app/shared/shared-video/video-views-counter.component.html b/client/src/app/shared/shared-video/video-views-counter.component.html index a6679f74d..b19c8b137 100644 --- a/client/src/app/shared/shared-video/video-views-counter.component.html +++ b/client/src/app/shared/shared-video/video-views-counter.component.html @@ -4,6 +4,6 @@ - {video.views, plural, =1 {1 viewer} other {{{ video.views | myNumberFormatter }} viewers}} + {video.viewers, plural, =1 {1 viewer} other {{{ video.viewers | myNumberFormatter }} viewers}} -- cgit v1.2.3