From 73f449245ed3c045f9caf54aedcbee8cf72c7dd7 Mon Sep 17 00:00:00 2001
From: Dani Palou <dani@moodle.com>
Date: Tue, 5 Feb 2019 13:13:07 +0100
Subject: [PATCH] MOBILE-2818 siteplugins: Allow specifying the component
 supported

---
 src/core/siteplugins/providers/helper.ts | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/core/siteplugins/providers/helper.ts b/src/core/siteplugins/providers/helper.ts
index c041de987..cc78d9509 100644
--- a/src/core/siteplugins/providers/helper.ts
+++ b/src/core/siteplugins/providers/helper.ts
@@ -564,7 +564,7 @@ export class CoreSitePluginsHelperProvider {
 
             delegate.registerHandler(handler);
 
-            return plugin.component;
+            return handlerSchema.moodlecomponent || plugin.component;
         }).catch((err) => {
             this.logger.error('Error executing main method', plugin.component, handlerSchema.method, err);
         });
@@ -583,7 +583,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.assignFeedbackDelegate,
                     (uniqueName: string, result: any) => {
 
-            const type = plugin.component.replace('assignfeedback_', ''),
+            const type = (handlerSchema.moodlecomponent || plugin.component).replace('assignfeedback_', ''),
                 prefix = this.getPrefixForStrings(plugin.addon);
 
             return new CoreSitePluginsAssignFeedbackHandler(this.translate, uniqueName, type, prefix);
@@ -603,7 +603,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.assignSubmissionDelegate,
                     (uniqueName: string, result: any) => {
 
-            const type = plugin.component.replace('assignsubmission_', ''),
+            const type = (handlerSchema.moodlecomponent || plugin.component).replace('assignsubmission_', ''),
                 prefix = this.getPrefixForStrings(plugin.addon);
 
             return new CoreSitePluginsAssignSubmissionHandler(this.translate, uniqueName, type, prefix);
@@ -623,7 +623,7 @@ export class CoreSitePluginsHelperProvider {
 
         // Create and register the handler.
         const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
-            formatName = plugin.component.replace('format_', '');
+            formatName = (handlerSchema.moodlecomponent || plugin.component).replace('format_', '');
         this.courseFormatDelegate.registerHandler(new CoreSitePluginsCourseFormatHandler(uniqueName, formatName, handlerSchema));
 
         return formatName;
@@ -709,7 +709,7 @@ export class CoreSitePluginsHelperProvider {
         // Create and register the handler.
         const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
             prefixedTitle = this.getPrefixedString(plugin.addon, handlerSchema.displaydata.title),
-            processorName = plugin.component.replace('message_', '');
+            processorName = (handlerSchema.moodlecomponent || plugin.component).replace('message_', '');
 
         this.messageOutputDelegate.registerHandler(new CoreSitePluginsMessageOutputHandler(uniqueName, processorName,
                 prefixedTitle, plugin, handlerSchema, initResult));
@@ -738,7 +738,7 @@ export class CoreSitePluginsHelperProvider {
 
         // Create and register the handler.
         const uniqueName = this.sitePluginsProvider.getHandlerUniqueName(plugin, handlerName),
-            modName = plugin.component.replace('mod_', '');
+            modName = (handlerSchema.moodlecomponent || plugin.component).replace('mod_', '');
 
         this.moduleDelegate.registerHandler(new CoreSitePluginsModuleHandler(uniqueName, modName, handlerSchema, initResult));
 
@@ -765,7 +765,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.questionDelegate,
                     (uniqueName: string, result: any) => {
 
-            return new CoreSitePluginsQuestionHandler(uniqueName, plugin.component);
+            return new CoreSitePluginsQuestionHandler(uniqueName, handlerSchema.moodlecomponent || plugin.component);
         });
     }
 
@@ -782,7 +782,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.questionBehaviourDelegate,
                     (uniqueName: string, result: any) => {
 
-            const type = plugin.component.replace('qbehaviour_', '');
+            const type = (handlerSchema.moodlecomponent || plugin.component).replace('qbehaviour_', '');
 
             return new CoreSitePluginsQuestionBehaviourHandler(this.questionProvider, uniqueName, type, result.templates.length);
         });
@@ -801,7 +801,8 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.accessRulesDelegate,
                     (uniqueName: string, result: any) => {
 
-            return new CoreSitePluginsQuizAccessRuleHandler(uniqueName, plugin.component, result.templates.length);
+            return new CoreSitePluginsQuizAccessRuleHandler(uniqueName, handlerSchema.moodlecomponent || plugin.component,
+                    result.templates.length);
         });
     }
 
@@ -876,7 +877,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.profileFieldDelegate,
                     (uniqueName: string, result: any) => {
 
-            const fieldType = plugin.component.replace('profilefield_', '');
+            const fieldType = (handlerSchema.moodlecomponent || plugin.component).replace('profilefield_', '');
 
             return new CoreSitePluginsUserProfileFieldHandler(uniqueName, fieldType);
         });
@@ -896,7 +897,7 @@ export class CoreSitePluginsHelperProvider {
         return this.registerComponentInitHandler(plugin, handlerName, handlerSchema, this.workshopAssessmentStrategyDelegate,
                     (uniqueName: string, result: any) => {
 
-            const strategyName = plugin.component.replace('workshopform_', '');
+            const strategyName = (handlerSchema.moodlecomponent || plugin.component).replace('workshopform_', '');
 
             return new CoreSitePluginsWorkshopAssessmentStrategyHandler(uniqueName, strategyName);
         });