X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fcore%2Fplugins%2Fhooks.service.ts;h=29db75d89bea8b7d24ddb073d517cdb4bee4fc6f;hb=2c8380a46f34631e705b1564938343cacfa4b0bc;hp=ec47aa48c562fa621857c3b608e07edea5481dd1;hpb=67ed6552b831df66713bac9e672738796128d33f;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/core/plugins/hooks.service.ts b/client/src/app/core/plugins/hooks.service.ts index ec47aa48c..29db75d89 100644 --- a/client/src/app/core/plugins/hooks.service.ts +++ b/client/src/app/core/plugins/hooks.service.ts @@ -2,18 +2,34 @@ import { from, Observable } from 'rxjs' import { mergeMap, switchMap } from 'rxjs/operators' import { Injectable } from '@angular/core' import { PluginService } from '@app/core/plugins/plugin.service' +import { logger } from '@root-helpers/logger' import { ClientActionHookName, ClientFilterHookName, PluginClientScope } from '@shared/models' +import { AuthService, AuthStatus } from '../auth' type RawFunction = (params: U) => T type ObservableFunction = RawFunction> @Injectable() export class HooksService { - constructor (private pluginService: PluginService) { } + constructor ( + private authService: AuthService, + private pluginService: PluginService + ) { + // Run auth hooks + this.authService.userInformationLoaded + .subscribe(() => this.runAction('action:auth-user.information-loaded', 'common', { user: this.authService.getUser() })) - wrapObsFun -
- (fun: ObservableFunction
, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) { + this.authService.loginChangedSource.subscribe(obj => { + if (obj === AuthStatus.LoggedIn) { + this.runAction('action:auth-user.logged-in', 'common') + } else if (obj === AuthStatus.LoggedOut) { + this.runAction('action:auth-user.logged-out', 'common') + } + }) + } + + wrapObsFun
+ (fun: ObservableFunction
, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) { return from(this.pluginService.ensurePluginsAreLoaded(scope)) .pipe( mergeMap(() => this.wrapObjectWithoutScopeLoad(params, hookParamName)), @@ -22,9 +38,8 @@ export class HooksService { ) } - async wrapFun -
- (fun: RawFunction
, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) { + async wrapFun
+ (fun: RawFunction
, params: P, scope: PluginClientScope, hookParamName: H1, hookResultName: H2) {
await this.pluginService.ensurePluginsAreLoaded(scope)
const newParams = await this.wrapObjectWithoutScopeLoad(params, hookParamName)
@@ -34,9 +49,12 @@ export class HooksService {
}
runAction