]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/root-helpers/plugins-manager.ts
Handle hook with Promise as result
[github/Chocobozzz/PeerTube.git] / client / src / root-helpers / plugins-manager.ts
index 300f174b42a6d5e8209a08642a593007f382e4d7..31510d4e644d22c8b4af65b0fc17493bbcc77da0 100644 (file)
@@ -69,7 +69,8 @@ class PluginsManager {
     login: new ReplaySubject<boolean>(1),
     'video-edit': new ReplaySubject<boolean>(1),
     embed: new ReplaySubject<boolean>(1),
-    'my-library': new ReplaySubject<boolean>(1)
+    'my-library': new ReplaySubject<boolean>(1),
+    'video-channel': new ReplaySubject<boolean>(1)
   }
 
   private readonly peertubeHelpersFactory: PeertubeHelpersFactory
@@ -104,11 +105,16 @@ class PluginsManager {
     }
   }
 
-  async runHook<T> (hookName: ClientHookName, result?: T, params?: any) {
-    if (!this.hooks[hookName]) return result
+  async runHook<T> (hookName: ClientHookName, resultArg?: T | Promise<T>, params?: any) {
+    if (!this.hooks[hookName]) {
+      // eslint-disable-next-line no-return-await
+      return await resultArg
+    }
 
     const hookType = getHookType(hookName)
 
+    let result = await resultArg
+
     for (const hook of this.hooks[hookName]) {
       logger.info(`Running hook ${hookName} of plugin ${hook.plugin.name}`)