mirror of https://github.com/Chocobozzz/PeerTube
Add auth user client hook actions
parent
2e257e36b7
commit
faeec106ef
|
@ -3,13 +3,29 @@ import { mergeMap, switchMap } from 'rxjs/operators'
|
||||||
import { Injectable } from '@angular/core'
|
import { Injectable } from '@angular/core'
|
||||||
import { PluginService } from '@app/core/plugins/plugin.service'
|
import { PluginService } from '@app/core/plugins/plugin.service'
|
||||||
import { ClientActionHookName, ClientFilterHookName, PluginClientScope } from '@shared/models'
|
import { ClientActionHookName, ClientFilterHookName, PluginClientScope } from '@shared/models'
|
||||||
|
import { AuthService, AuthStatus } from '../auth'
|
||||||
|
|
||||||
type RawFunction<U, T> = (params: U) => T
|
type RawFunction<U, T> = (params: U) => T
|
||||||
type ObservableFunction<U, T> = RawFunction<U, Observable<T>>
|
type ObservableFunction<U, T> = RawFunction<U, Observable<T>>
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class HooksService {
|
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() }))
|
||||||
|
|
||||||
|
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
|
wrapObsFun
|
||||||
<P, R, H1 extends ClientFilterHookName, H2 extends ClientFilterHookName>
|
<P, R, H1 extends ClientFilterHookName, H2 extends ClientFilterHookName>
|
||||||
|
|
|
@ -235,6 +235,12 @@ export class PluginService implements ClientHook {
|
||||||
.toPromise()
|
.toPromise()
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getServerConfig: () => {
|
||||||
|
return this.server.getConfig()
|
||||||
|
.pipe(catchError(res => this.restExtractor.handleError(res)))
|
||||||
|
.toPromise()
|
||||||
|
},
|
||||||
|
|
||||||
isLoggedIn: () => {
|
isLoggedIn: () => {
|
||||||
return this.authService.isLoggedIn()
|
return this.authService.isLoggedIn()
|
||||||
},
|
},
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model'
|
import { RegisterClientFormFieldOptions, RegisterClientVideoFieldOptions } from '@shared/models/plugins/register-client-form-field.model'
|
||||||
import { RegisterClientHookOptions } from '@shared/models/plugins/register-client-hook.model'
|
import { RegisterClientHookOptions } from '@shared/models/plugins/register-client-hook.model'
|
||||||
|
import { ServerConfig } from '@shared/models/server'
|
||||||
|
|
||||||
export type RegisterClientOptions = {
|
export type RegisterClientOptions = {
|
||||||
registerHook: (options: RegisterClientHookOptions) => void
|
registerHook: (options: RegisterClientHookOptions) => void
|
||||||
|
@ -16,6 +17,8 @@ export type RegisterClientHelpers = {
|
||||||
|
|
||||||
getSettings: () => Promise<{ [ name: string ]: string }>
|
getSettings: () => Promise<{ [ name: string ]: string }>
|
||||||
|
|
||||||
|
getServerConfig: () => Promise<ServerConfig>
|
||||||
|
|
||||||
notifier: {
|
notifier: {
|
||||||
info: (text: string, title?: string, timeout?: number) => void,
|
info: (text: string, title?: string, timeout?: number) => void,
|
||||||
error: (text: string, title?: string, timeout?: number) => void,
|
error: (text: string, title?: string, timeout?: number) => void,
|
||||||
|
|
|
@ -94,6 +94,12 @@ export const clientActionHookObject = {
|
||||||
// Fired when the "Go Live" page is being initalized
|
// Fired when the "Go Live" page is being initalized
|
||||||
'action:go-live.init': true,
|
'action:go-live.init': true,
|
||||||
|
|
||||||
|
// Fired when the user explicitely logged in/logged out
|
||||||
|
'action:auth-user.logged-in': true,
|
||||||
|
'action:auth-user.logged-out': true,
|
||||||
|
// Fired when the application loaded user information (using tokens from the local storage or after a successful login)
|
||||||
|
'action:auth-user.information-loaded': true,
|
||||||
|
|
||||||
// Fired when the modal to download a video/caption is shown
|
// Fired when the modal to download a video/caption is shown
|
||||||
'action:modal.video-download.shown': true,
|
'action:modal.video-download.shown': true,
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue