]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/core/plugins/hooks.service.ts
Fix build
[github/Chocobozzz/PeerTube.git] / client / src / app / core / plugins / hooks.service.ts
index 93dac1167cdecb8d6ee009089a8b5ea99c0652a8..a6a444c326a4b3392f1cd651890c07894922b224 100644 (file)
@@ -16,25 +16,26 @@ export class HooksService {
     private pluginService: PluginService
   ) { }
 
-  wrapObject<T, U extends ClientFilterHookName> (result: T, hookName: U) {
-    return this.pluginService.runHook(hookName, result)
-  }
-
   wrapObsFun
     <P, R, H1 extends ClientFilterHookName, H2 extends ClientFilterHookName>
     (fun: ObservableFunction<P, R>, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) {
     return from(this.pluginService.ensurePluginsAreLoaded(scope))
       .pipe(
-        mergeMap(() => this.wrapObject(params, hookParamName)),
+        mergeMap(() => this.wrapObjectWithoutScopeLoad(params, hookParamName)),
         switchMap(params => fun(params)),
         mergeMap(result => this.pluginService.runHook(hookResultName, result, params))
       )
   }
 
-  async wrapFun<U, T, V extends ClientFilterHookName> (fun: RawFunction<U, T>, params: U, hookName: V) {
-    const result = fun(params)
+  async wrapFun
+    <P, R, H1 extends ClientFilterHookName, H2 extends ClientFilterHookName>
+    (fun: RawFunction<P, R>, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) {
+    await this.pluginService.ensurePluginsAreLoaded(scope)
+
+    const newParams = await this.wrapObjectWithoutScopeLoad(params, hookParamName)
+    const result = fun(newParams)
 
-    return this.pluginService.runHook(hookName, result, params)
+    return this.pluginService.runHook(hookResultName, result, params)
   }
 
   runAction<T, U extends ClientActionHookName> (hookName: U, scope: PluginClientScope, params?: T) {
@@ -42,4 +43,14 @@ export class HooksService {
         .then(() => this.pluginService.runHook(hookName, undefined, params))
         .catch((err: any) => console.error('Fatal hook error.', { err }))
   }
+
+  async wrapObject<T, U extends ClientFilterHookName> (result: T, scope: PluginClientScope, hookName: U) {
+    await this.pluginService.ensurePluginsAreLoaded(scope)
+
+    return this.wrapObjectWithoutScopeLoad(result, hookName)
+  }
+
+  private wrapObjectWithoutScopeLoad<T, U extends ClientFilterHookName> (result: T, hookName: U) {
+    return this.pluginService.runHook(hookName, result)
+  }
 }