From fec29ecca12e8d42d030916ea9ad2f062c8c1aaf Mon Sep 17 00:00:00 2001
From: Dani Palou <dani@moodle.com>
Date: Mon, 4 Dec 2023 09:02:13 +0100
Subject: [PATCH] MOBILE-4479 siteplugins: Only add default module-info if
 needed

---
 .../module-index/core-siteplugins-module-index.html          | 3 ++-
 .../siteplugins/components/module-index/module-index.ts      | 2 ++
 .../siteplugins/components/plugin-content/plugin-content.ts  | 5 +++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/core/features/siteplugins/components/module-index/core-siteplugins-module-index.html b/src/core/features/siteplugins/components/module-index/core-siteplugins-module-index.html
index 7eb7bd09a..b5cb3a882 100644
--- a/src/core/features/siteplugins/components/module-index/core-siteplugins-module-index.html
+++ b/src/core/features/siteplugins/components/module-index/core-siteplugins-module-index.html
@@ -6,7 +6,8 @@
 </core-navbar-buttons>
 
 <!-- Activity info. -->
-<core-course-module-info [module]="module" [courseId]="courseId" [component]="component" [componentId]="module.id" />
+<core-course-module-info *ngIf="addDefaultModuleInfo" [module]="module" [courseId]="courseId" [component]="component"
+    [componentId]="module.id" />
 
 <core-site-plugins-plugin-content *ngIf="component && method" [component]="component" [method]="method" [args]="args"
     [initResult]="initResult" [data]="jsData" [pageTitle]="pageTitle" [preSets]="preSets" (onContentLoaded)="contentLoaded($event)"
diff --git a/src/core/features/siteplugins/components/module-index/module-index.ts b/src/core/features/siteplugins/components/module-index/module-index.ts
index e7464fca3..f7e5a0180 100644
--- a/src/core/features/siteplugins/components/module-index/module-index.ts
+++ b/src/core/features/siteplugins/components/module-index/module-index.ts
@@ -58,6 +58,7 @@ export class CoreSitePluginsModuleIndexComponent implements OnInit, OnDestroy, C
     description?: string;
 
     collapsibleFooterAppearOnBottom = true;
+    addDefaultModuleInfo = false;
 
     displayOpenInBrowser = true;
     displayDescription = true;
@@ -133,6 +134,7 @@ export class CoreSitePluginsModuleIndexComponent implements OnInit, OnDestroy, C
      * Function called when the data of the site plugin content is loaded.
      */
     contentLoaded(data: CoreSitePluginsPluginContentLoadedData): void {
+        this.addDefaultModuleInfo = !data.content.includes('<core-course-module-info');
         if (data.success) {
             CoreCourse.storeModuleViewed(this.courseId, this.module.id, {
                 sectionId: this.module.section,
diff --git a/src/core/features/siteplugins/components/plugin-content/plugin-content.ts b/src/core/features/siteplugins/components/plugin-content/plugin-content.ts
index a2a2ad5a3..9e215702d 100644
--- a/src/core/features/siteplugins/components/plugin-content/plugin-content.ts
+++ b/src/core/features/siteplugins/components/plugin-content/plugin-content.ts
@@ -142,11 +142,11 @@ export class CoreSitePluginsPluginContentComponent implements OnInit, DoCheck {
                 this.updateModuleCourseContent(cmId, alreadyFetched);
             this.jsData.updateCachedContent = () => this.updateCachedContent();
 
-            this.onContentLoaded.emit({ refresh: !!refresh, success: true });
+            this.onContentLoaded.emit({ refresh: !!refresh, success: true, content: this.content });
         } catch (error) {
             // Make it think it's loaded - otherwise it sticks on 'loading' and stops navigation working.
             this.content = '<div></div>';
-            this.onContentLoaded.emit({ refresh: !!refresh, success: false });
+            this.onContentLoaded.emit({ refresh: !!refresh, success: false, content: this.content });
 
             CoreDomUtils.showErrorModalDefault(error, 'core.errorloadingcontent', true);
         } finally {
@@ -282,4 +282,5 @@ export class CoreSitePluginsPluginContentComponent implements OnInit, DoCheck {
 export type CoreSitePluginsPluginContentLoadedData = {
     refresh: boolean;
     success: boolean;
+    content: string;
 };