From f94d67ed6ad5c6dcb8fb51d114867b4ffd4c141f Mon Sep 17 00:00:00 2001 From: Dani Palou Date: Wed, 24 Jul 2019 15:50:06 +0200 Subject: [PATCH] MOBILE-3102 core: Support disabling site plugins without exceptions --- src/core/siteplugins/providers/helper.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/core/siteplugins/providers/helper.ts b/src/core/siteplugins/providers/helper.ts index 2b1242d85..b598ac051 100644 --- a/src/core/siteplugins/providers/helper.ts +++ b/src/core/siteplugins/providers/helper.ts @@ -78,6 +78,8 @@ import { CoreSitePluginsBlockHandler } from '@core/siteplugins/classes/handlers/ */ @Injectable() export class CoreSitePluginsHelperProvider { + protected HANDLER_DISABLED = 'core_site_plugins_helper_handler_disabled'; + protected logger; constructor(logger: CoreLoggerProvider, private sitesProvider: CoreSitesProvider, private domUtils: CoreDomUtilsProvider, @@ -226,7 +228,9 @@ export class CoreSitePluginsHelperProvider { } // Create a "fake" instance to hold all the libraries. - const instance = {}; + const instance = { + HANDLER_DISABLED: this.HANDLER_DISABLED + }; this.compileProvider.injectLibraries(instance); // Add some data of the WS call result. @@ -238,6 +242,11 @@ export class CoreSitePluginsHelperProvider { // Now execute the javascript using this instance. result.jsResult = this.compileProvider.executeJavascript(instance, result.javascript); + if (result.jsResult == this.HANDLER_DISABLED) { + // The "disabled" field was added in 3.8, this is a workaround for previous versions. + result.disabled = true; + } + return result; }); } @@ -441,6 +450,13 @@ export class CoreSitePluginsHelperProvider { })); return Promise.all(promises).then(() => { + if (result && result.disabled) { + // This handler is disabled for the current user, stop. + this.logger.warn('Handler disabled by init function', plugin, handlerSchema); + + return; + } + if (cssCode) { // Load the styles. this.loadStyles(plugin, handlerName, handlerSchema.styles.url, cssCode, handlerSchema.styles.version, siteId);