hooks filter:api.my-lib.playlist-elems.get.* (#5098)

* hooks filter:api.my-lib.playlist-elems.get.*

closes #4776

* Introduce my-library plugin scope

Co-authored-by: Chocobozzz <me@florianbigard.com>
pull/5115/head
kontrollanten 2022-07-08 10:50:10 +02:00 committed by GitHub
parent edd7b1256b
commit f8b4a71d42
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 4 deletions

View File

@ -2,7 +2,7 @@ import { Subject, Subscription } from 'rxjs'
import { CdkDragDrop } from '@angular/cdk/drag-drop'
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core'
import { ActivatedRoute, Router } from '@angular/router'
import { ComponentPagination, ConfirmService, Notifier, ScreenService } from '@app/core'
import { ComponentPagination, ConfirmService, HooksService, Notifier, ScreenService } from '@app/core'
import { DropdownAction } from '@app/shared/shared-main'
import { VideoShareComponent } from '@app/shared/shared-share-modal'
import { VideoPlaylist, VideoPlaylistElement, VideoPlaylistService } from '@app/shared/shared-video-playlist'
@ -32,6 +32,7 @@ export class MyVideoPlaylistElementsComponent implements OnInit, OnDestroy {
private paramsSub: Subscription
constructor (
private hooks: HooksService,
private notifier: Notifier,
private router: Router,
private confirmService: ConfirmService,
@ -155,7 +156,13 @@ export class MyVideoPlaylistElementsComponent implements OnInit, OnDestroy {
}
private loadElements () {
this.videoPlaylistService.getPlaylistVideos({ videoPlaylistId: this.videoPlaylistId, componentPagination: this.pagination })
this.hooks.wrapObsFun(
this.videoPlaylistService.getPlaylistVideos.bind(this.videoPlaylistService),
{ videoPlaylistId: this.videoPlaylistId, componentPagination: this.pagination },
'my-library',
'filter:api.my-library.video-playlist-elements.list.params',
'filter:api.my-library.video-playlist-elements.list.result'
)
.subscribe(({ total, data }) => {
this.playlistElements = this.playlistElements.concat(data)
this.pagination.totalItems = total

View File

@ -67,7 +67,8 @@ class PluginsManager {
signup: new ReplaySubject<boolean>(1),
login: new ReplaySubject<boolean>(1),
'video-edit': new ReplaySubject<boolean>(1),
embed: new ReplaySubject<boolean>(1)
embed: new ReplaySubject<boolean>(1),
'my-library': new ReplaySubject<boolean>(1)
}
private readonly peertubeHelpersFactory: PeertubeHelpersFactory

View File

@ -51,6 +51,10 @@ export const clientFilterHookObject = {
// Filter form
'filter:api.signup.registration.create.params': true,
// Filter params/result of the function that fetch video playlist elements of the my-library page
'filter:api.my-library.video-playlist-elements.list.params': true,
'filter:api.my-library.video-playlist-elements.list.result': true,
// Filter the options to create our player
'filter:internal.video-watch.player.build-options.params': true,
'filter:internal.video-watch.player.build-options.result': true,

View File

@ -6,4 +6,5 @@ export type PluginClientScope =
'login' |
'embed' |
'video-edit' |
'admin-plugin'
'admin-plugin' |
'my-library'