diff --git a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts index 15da94709..231e52d0a 100644 --- a/client/src/app/shared/shared-custom-markup/custom-markup.service.ts +++ b/client/src/app/shared/shared-custom-markup/custom-markup.service.ts @@ -188,6 +188,9 @@ export class CustomMarkupService { categoryOneOf: this.buildArrayNumber(data.categoryOneOf) ?? [], languageOneOf: this.buildArrayString(data.languageOneOf) ?? [], + accountHandle: data.accountHandle || undefined, + channelHandle: data.channelHandle || undefined, + filter: this.buildBoolean(data.onlyLocal) ? 'local' as VideoFilter : undefined } diff --git a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts index afa4f4799..d9f77802b 100644 --- a/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts +++ b/client/src/app/shared/shared-custom-markup/peertube-custom-tags/videos-list-markup.component.ts @@ -23,6 +23,8 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit @Input() onlyDisplayTitle: boolean @Input() filter: VideoFilter @Input() maxRows: number + @Input() channelHandle: string + @Input() accountHandle: string @Output() loaded = new EventEmitter() @@ -66,6 +68,16 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit } } + return this.getVideosObservable() + .pipe(finalize(() => this.loaded.emit(true))) + .subscribe( + ({ data }) => this.videos = data, + + err => this.notifier.error('Error in videos list component: ' + err.message) + ) + } + + getVideosObservable () { const options = { videoPagination: { currentPage: 1, @@ -74,15 +86,14 @@ export class VideosListMarkupComponent implements CustomMarkupComponent, OnInit categoryOneOf: this.categoryOneOf, languageOneOf: this.languageOneOf, filter: this.filter, - sort: this.sort as VideoSortField + sort: this.sort as VideoSortField, + account: { nameWithHost: this.accountHandle }, + videoChannel: { nameWithHost: this.channelHandle } } - this.videoService.getVideos(options) - .pipe(finalize(() => this.loaded.emit(true))) - .subscribe( - ({ data }) => this.videos = data, + if (this.channelHandle) return this.videoService.getVideoChannelVideos(options) + if (this.accountHandle) return this.videoService.getAccountVideos(options) - err => this.notifier.error('Error in videos list component: ' + err.message) - ) + return this.videoService.getVideos(options) } } diff --git a/client/src/app/shared/shared-main/video/video.service.ts b/client/src/app/shared/shared-main/video/video.service.ts index 1410edd18..ac640c791 100644 --- a/client/src/app/shared/shared-main/video/video.service.ts +++ b/client/src/app/shared/shared-main/video/video.service.ts @@ -145,7 +145,7 @@ export class VideoService implements VideosProvider { } getAccountVideos (parameters: { - account: Account, + account: Pick, videoPagination: ComponentPaginationLight, sort: VideoSortField nsfwPolicy?: NSFWPolicyType @@ -180,7 +180,7 @@ export class VideoService implements VideosProvider { } getVideoChannelVideos (parameters: { - videoChannel: VideoChannel, + videoChannel: Pick, videoPagination: ComponentPaginationLight, sort: VideoSortField, nsfwPolicy?: NSFWPolicyType diff --git a/shared/models/custom-markup/custom-markup-data.model.ts b/shared/models/custom-markup/custom-markup-data.model.ts index c56494485..8cbe3cfa4 100644 --- a/shared/models/custom-markup/custom-markup-data.model.ts +++ b/shared/models/custom-markup/custom-markup-data.model.ts @@ -30,9 +30,12 @@ export type VideosListMarkupData = { sort?: string count?: string // number - categoryOneOf?: string // coma separated values + categoryOneOf?: string // coma separated values, number[] languageOneOf?: string // coma separated values + channelHandle?: string + accountHandle?: string + onlyLocal?: string // boolean }