From a5896799f169d3313b63165fe6a79d4149fa6df1 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 30 Apr 2020 09:28:39 +0200 Subject: Add plugin settings change watcher --- server/lib/plugins/plugin-manager.ts | 45 +++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 14 deletions(-) (limited to 'server/lib/plugins/plugin-manager.ts') diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index f7b84b1ff..950acf7ad 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -144,20 +144,6 @@ export class PluginManager implements ServerHook { return this.translations[locale] || {} } - onLogout (npmName: string, authName: string, user: MUser) { - const auth = this.getAuth(npmName, authName) - - if (auth?.onLogout) { - logger.info('Running onLogout function from auth %s of plugin %s', authName, npmName) - - try { - auth.onLogout(user) - } catch (err) { - logger.warn('Cannot run onLogout function from auth %s of plugin %s.', authName, npmName, { err }) - } - } - } - async isTokenValid (token: MOAuthTokenUser, type: 'access' | 'refresh') { const auth = this.getAuth(token.User.pluginAuth, token.authName) if (!auth) return true @@ -180,6 +166,37 @@ export class PluginManager implements ServerHook { return true } + // ###################### External events ###################### + + onLogout (npmName: string, authName: string, user: MUser) { + const auth = this.getAuth(npmName, authName) + + if (auth?.onLogout) { + logger.info('Running onLogout function from auth %s of plugin %s', authName, npmName) + + try { + auth.onLogout(user) + } catch (err) { + logger.warn('Cannot run onLogout function from auth %s of plugin %s.', authName, npmName, { err }) + } + } + } + + onSettingsChanged (name: string, settings: any) { + const registered = this.getRegisteredPluginByShortName(name) + if (!registered) { + logger.error('Cannot find plugin %s to call on settings changed.', name) + } + + for (const cb of registered.registerHelpersStore.getOnSettingsChangedCallbacks()) { + try { + cb(settings) + } catch (err) { + logger.error('Cannot run on settings changed callback for %s.', registered.npmName, { err }) + } + } + } + // ###################### Hooks ###################### async runHook (hookName: ServerHookName, result?: T, params?: any): Promise { -- cgit v1.2.3