From 35946f6f3101cdb902de89bba244e085de752d22 Mon Sep 17 00:00:00 2001 From: Alfonso Salces Date: Wed, 30 Nov 2022 12:07:04 +0100 Subject: [PATCH] MOBILE-4085 course-storage: Add change detection OnPush --- .../pages/course-storage/course-storage.ts | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/addons/storagemanager/pages/course-storage/course-storage.ts b/src/addons/storagemanager/pages/course-storage/course-storage.ts index 37fe9c5f7..ef3f3059c 100644 --- a/src/addons/storagemanager/pages/course-storage/course-storage.ts +++ b/src/addons/storagemanager/pages/course-storage/course-storage.ts @@ -13,7 +13,7 @@ // limitations under the License. import { CoreConstants } from '@/core/constants'; -import { Component, ElementRef, OnDestroy, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit } from '@angular/core'; import { CoreCourse, CoreCourseProvider } from '@features/course/services/course'; import { CoreCourseHelper, @@ -41,6 +41,7 @@ import { CoreEventObserver, CoreEvents } from '@singletons/events'; selector: 'page-addon-storagemanager-course-storage', templateUrl: 'course-storage.html', styleUrls: ['course-storage.scss'], + changeDetection: ChangeDetectionStrategy.OnPush, }) export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { @@ -71,7 +72,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { protected isDestroyed = false; protected isGuest = false; - constructor(protected elementRef: ElementRef) { + constructor(protected elementRef: ElementRef, protected changeDetectorRef: ChangeDetectorRef) { // Refresh the enabled flags if site is updated. this.siteUpdatedObserver = CoreEvents.on(CoreEvents.SITE_UPDATED, () => { this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite(); @@ -79,7 +80,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { this.initCoursePrefetch(); this.initModulePrefetch(); - + this.changeDetectorRef.markForCheck(); }, CoreSites.getCurrentSiteId()); } @@ -135,7 +136,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { this.initCoursePrefetch(), this.initModulePrefetch(), ]); - + this.changeDetectorRef.markForCheck(); } /** @@ -313,12 +314,13 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { } module.calculatingSize = true; + this.changeDetectorRef.markForCheck(); if (!section) { section = this.sections.find((section) => section.modules.some((mod) => mod.id === module.id)); if (section) { section.calculatingSize = true; - + this.changeDetectorRef.markForCheck(); } } @@ -336,7 +338,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { // Ignore errors, it shouldn't happen. } finally { module.calculatingSize = false; - + this.changeDetectorRef.markForCheck(); } })); @@ -344,7 +346,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { if (section) { section.calculatingSize = false; } - + this.changeDetectorRef.markForCheck(); } /** @@ -490,7 +492,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { await this.updateModulesSizes(modules, section); CoreCourseHelper.calculateSectionsStatus(this.sections, this.courseId, false, false); - + this.changeDetectorRef.markForCheck(); } } @@ -525,7 +527,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { */ async prefecthSection(section: AddonStorageManagerCourseSection): Promise { section.isCalculating = true; - + this.changeDetectorRef.markForCheck(); try { await CoreCourseHelper.confirmDownloadSizeSection(this.courseId, section, this.sections); @@ -538,18 +540,19 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { } } finally { await this.updateModulesSizes(section.modules, section); - + this.changeDetectorRef.markForCheck(); } } catch (error) { // User cancelled or there was an error calculating the size. if (!this.isDestroyed && error) { CoreDomUtils.showErrorModal(error); + this.changeDetectorRef.markForCheck(); return; } } finally { section.isCalculating = false; - + this.changeDetectorRef.markForCheck(); } } @@ -606,7 +609,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { module.downloadStatus = status; module.handlerData?.updateStatus?.(status); - + this.changeDetectorRef.markForCheck(); } /** @@ -646,7 +649,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { this.prefetchCourseData.icon = statusData.icon; this.prefetchCourseData.statusTranslatable = statusData.statusTranslatable; this.prefetchCourseData.loading = statusData.loading; - + this.changeDetectorRef.markForCheck(); } /** @@ -668,7 +671,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { } try { - + this.changeDetectorRef.markForCheck(); await CoreCourseHelper.confirmAndPrefetchCourse( this.prefetchCourseData, course, @@ -677,7 +680,7 @@ export class AddonStorageManagerCourseStoragePage implements OnInit, OnDestroy { isGuest: this.isGuest, }, ); - + this.changeDetectorRef.markForCheck(); } catch (error) { if (this.isDestroyed) { return;