forked from EVOgeek/Vmeda.Online
		
	MOBILE-3806 dashboard: Remove download all courses from some blocks
This commit is contained in:
		
							parent
							
								
									c24bb2e5cc
								
							
						
					
					
						commit
						3f201849a4
					
				@ -3,20 +3,6 @@
 | 
				
			|||||||
        <h2>{{ 'addon.block_recentlyaccessedcourses.pluginname' | translate }}</h2>
 | 
					        <h2>{{ 'addon.block_recentlyaccessedcourses.pluginname' | translate }}</h2>
 | 
				
			||||||
    </ion-label>
 | 
					    </ion-label>
 | 
				
			||||||
    <div slot="end" class="flex-row">
 | 
					    <div slot="end" class="flex-row">
 | 
				
			||||||
        <div *ngIf="downloadCoursesEnabled && downloadEnabled && courses && courses.length > 1" class="core-button-spinner">
 | 
					 | 
				
			||||||
            <ion-button *ngIf="prefetchCoursesData.icon && !prefetchCoursesData.loading" fill="clear" color="dark"
 | 
					 | 
				
			||||||
                (click)="prefetchCourses()" [attr.aria-label]="'core.courses.downloadcourses' | translate">
 | 
					 | 
				
			||||||
                <ion-icon [name]="prefetchCoursesData.icon" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					 | 
				
			||||||
            </ion-button>
 | 
					 | 
				
			||||||
            <ion-badge class="core-course-download-courses-progress" *ngIf="prefetchCoursesData.badge" role="progressbar"
 | 
					 | 
				
			||||||
                [attr.aria-valuemax]="prefetchCoursesData.total" [attr.aria-valuenow]="prefetchCoursesData.count"
 | 
					 | 
				
			||||||
                [attr.aria-valuetext]="prefetchCoursesData.badgeA11yText">
 | 
					 | 
				
			||||||
                {{prefetchCoursesData.badge}}
 | 
					 | 
				
			||||||
            </ion-badge>
 | 
					 | 
				
			||||||
            <ion-spinner *ngIf="!prefetchCoursesData.icon || prefetchCoursesData.loading" [attr.aria-label]="'core.loading' | translate">
 | 
					 | 
				
			||||||
            </ion-spinner>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <core-horizontal-scroll-controls #scrollControls [aria-controls]="scrollElementId">
 | 
					        <core-horizontal-scroll-controls #scrollControls [aria-controls]="scrollElementId">
 | 
				
			||||||
        </core-horizontal-scroll-controls>
 | 
					        </core-horizontal-scroll-controls>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
@ -25,7 +11,8 @@
 | 
				
			|||||||
    <core-empty-box *ngIf="courses.length == 0" image="assets/img/icons/courses.svg" inline="true"
 | 
					    <core-empty-box *ngIf="courses.length == 0" image="assets/img/icons/courses.svg" inline="true"
 | 
				
			||||||
        [message]="'addon.block_recentlyaccessedcourses.nocourses' | translate"></core-empty-box>
 | 
					        [message]="'addon.block_recentlyaccessedcourses.nocourses' | translate"></core-empty-box>
 | 
				
			||||||
    <!-- List of courses. -->
 | 
					    <!-- List of courses. -->
 | 
				
			||||||
    <div [id]="scrollElementId" class="core-horizontal-scroll" (scroll)="scrollControls.updateScrollPosition()">
 | 
					    <div [hidden]="courses.length === 0" [id]="scrollElementId" class="core-horizontal-scroll"
 | 
				
			||||||
 | 
					        (scroll)="scrollControls.updateScrollPosition()">
 | 
				
			||||||
        <div (onResize)="scrollControls.updateScrollPosition()" class="flex-row">
 | 
					        <div (onResize)="scrollControls.updateScrollPosition()" class="flex-row">
 | 
				
			||||||
            <div class="safe-area-pseudo-padding-start"></div>
 | 
					            <div class="safe-area-pseudo-padding-start"></div>
 | 
				
			||||||
            <ng-container *ngFor="let course of courses">
 | 
					            <ng-container *ngFor="let course of courses">
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
// See the License for the specific language governing permissions and
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
// limitations under the License.
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Component, OnInit, OnDestroy, Input, OnChanges, SimpleChange } from '@angular/core';
 | 
					import { Component, OnInit, OnDestroy, Input } from '@angular/core';
 | 
				
			||||||
import { CoreEventObserver, CoreEvents } from '@singletons/events';
 | 
					import { CoreEventObserver, CoreEvents } from '@singletons/events';
 | 
				
			||||||
import { CoreSites } from '@services/sites';
 | 
					import { CoreSites } from '@services/sites';
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
@ -22,12 +22,10 @@ import {
 | 
				
			|||||||
    CoreCourseSummaryData,
 | 
					    CoreCourseSummaryData,
 | 
				
			||||||
} from '@features/courses/services/courses';
 | 
					} from '@features/courses/services/courses';
 | 
				
			||||||
import { CoreCourseSearchedDataWithExtraInfoAndOptions, CoreCoursesHelper } from '@features/courses/services/courses-helper';
 | 
					import { CoreCourseSearchedDataWithExtraInfoAndOptions, CoreCoursesHelper } from '@features/courses/services/courses-helper';
 | 
				
			||||||
import { CoreCourseHelper, CorePrefetchStatusInfo } from '@features/course/services/course-helper';
 | 
					 | 
				
			||||||
import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
 | 
					import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
 | 
				
			||||||
import { AddonCourseCompletion } from '@/addons/coursecompletion/services/coursecompletion';
 | 
					import { AddonCourseCompletion } from '@/addons/coursecompletion/services/coursecompletion';
 | 
				
			||||||
import { CoreBlockBaseComponent } from '@features/block/classes/base-block-component';
 | 
					import { CoreBlockBaseComponent } from '@features/block/classes/base-block-component';
 | 
				
			||||||
import { CoreUtils } from '@services/utils/utils';
 | 
					import { CoreUtils } from '@services/utils/utils';
 | 
				
			||||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Component to render a recent courses block.
 | 
					 * Component to render a recent courses block.
 | 
				
			||||||
@ -36,24 +34,15 @@ import { CoreDomUtils } from '@services/utils/dom';
 | 
				
			|||||||
    selector: 'addon-block-recentlyaccessedcourses',
 | 
					    selector: 'addon-block-recentlyaccessedcourses',
 | 
				
			||||||
    templateUrl: 'addon-block-recentlyaccessedcourses.html',
 | 
					    templateUrl: 'addon-block-recentlyaccessedcourses.html',
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseComponent implements OnInit, OnChanges, OnDestroy {
 | 
					export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseComponent implements OnInit, OnDestroy {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Input() downloadEnabled = false;
 | 
					    @Input() downloadEnabled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    courses: (Omit<CoreCourseSummaryData, 'visible'> & CoreCourseSearchedDataWithExtraInfoAndOptions)[] = [];
 | 
					    courses: (Omit<CoreCourseSummaryData, 'visible'> & CoreCourseSearchedDataWithExtraInfoAndOptions)[] = [];
 | 
				
			||||||
    prefetchCoursesData: CorePrefetchStatusInfo = {
 | 
					 | 
				
			||||||
        icon: '',
 | 
					 | 
				
			||||||
        statusTranslatable: 'core.loading',
 | 
					 | 
				
			||||||
        status: '',
 | 
					 | 
				
			||||||
        loading: true,
 | 
					 | 
				
			||||||
        badge: '',
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    downloadCourseEnabled = false;
 | 
					    downloadCourseEnabled = false;
 | 
				
			||||||
    downloadCoursesEnabled = false;
 | 
					 | 
				
			||||||
    scrollElementId!: string;
 | 
					    scrollElementId!: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected prefetchIconsInitialized = false;
 | 
					 | 
				
			||||||
    protected isDestroyed = false;
 | 
					    protected isDestroyed = false;
 | 
				
			||||||
    protected coursesObserver?: CoreEventObserver;
 | 
					    protected coursesObserver?: CoreEventObserver;
 | 
				
			||||||
    protected updateSiteObserver?: CoreEventObserver;
 | 
					    protected updateSiteObserver?: CoreEventObserver;
 | 
				
			||||||
@ -74,12 +63,10 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Refresh the enabled flags if enabled.
 | 
					        // Refresh the enabled flags if enabled.
 | 
				
			||||||
        this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
					        this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
				
			||||||
        this.downloadCoursesEnabled = !CoreCourses.isDownloadCoursesDisabledInSite();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Refresh the enabled flags if site is updated.
 | 
					        // Refresh the enabled flags if site is updated.
 | 
				
			||||||
        this.updateSiteObserver = CoreEvents.on(CoreEvents.SITE_UPDATED, () => {
 | 
					        this.updateSiteObserver = CoreEvents.on(CoreEvents.SITE_UPDATED, () => {
 | 
				
			||||||
            this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
					            this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
				
			||||||
            this.downloadCoursesEnabled = !CoreCourses.isDownloadCoursesDisabledInSite();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }, CoreSites.getCurrentSiteId());
 | 
					        }, CoreSites.getCurrentSiteId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -94,16 +81,6 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
 | 
				
			|||||||
        super.ngOnInit();
 | 
					        super.ngOnInit();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * @inheritdoc
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    ngOnChanges(changes: {[name: string]: SimpleChange}): void {
 | 
					 | 
				
			||||||
        if (changes.downloadEnabled && !changes.downloadEnabled.previousValue && this.downloadEnabled && this.loaded) {
 | 
					 | 
				
			||||||
            // Download all courses is enabled now, initialize it.
 | 
					 | 
				
			||||||
            this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @inheritdoc
 | 
					     * @inheritdoc
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@ -136,9 +113,7 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
 | 
				
			|||||||
            promises.push(CoreCourses.invalidateCoursesByField('ids', courseIds.join(',')));
 | 
					            promises.push(CoreCourses.invalidateCoursesByField('ids', courseIds.join(',')));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        await CoreUtils.allPromises(promises).finally(() => {
 | 
					        await CoreUtils.allPromises(promises);
 | 
				
			||||||
            this.prefetchIconsInitialized = false;
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -172,22 +147,6 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
 | 
				
			|||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        await CoreCoursesHelper.loadCoursesColorAndImage(courses);
 | 
					        await CoreCoursesHelper.loadCoursesColorAndImage(courses);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Initialize the prefetch icon for selected courses.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    protected async initPrefetchCoursesIcons(): Promise<void> {
 | 
					 | 
				
			||||||
        if (this.prefetchIconsInitialized || !this.downloadEnabled) {
 | 
					 | 
				
			||||||
            // Already initialized.
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.prefetchIconsInitialized = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.prefetchCoursesData = await CoreCourseHelper.initPrefetchCoursesIcons(this.courses, this.prefetchCoursesData);
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -221,26 +180,6 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom
 | 
				
			|||||||
            data.state == CoreCoursesProvider.STATE_FAVOURITE && course) {
 | 
					            data.state == CoreCoursesProvider.STATE_FAVOURITE && course) {
 | 
				
			||||||
            course.isfavourite = !!data.value;
 | 
					            course.isfavourite = !!data.value;
 | 
				
			||||||
            await this.invalidateCourses([course.id]);
 | 
					            await this.invalidateCourses([course.id]);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Prefetch all the shown courses.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return Promise resolved when done.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    async prefetchCourses(): Promise<void> {
 | 
					 | 
				
			||||||
        const initialIcon = this.prefetchCoursesData.icon;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            await CoreCourseHelper.prefetchCourses(this.courses, this.prefetchCoursesData);
 | 
					 | 
				
			||||||
        } catch (error) {
 | 
					 | 
				
			||||||
            if (!this.isDestroyed) {
 | 
					 | 
				
			||||||
                CoreDomUtils.showErrorModalDefault(error, 'core.course.errordownloadingcourse', true);
 | 
					 | 
				
			||||||
                this.prefetchCoursesData.icon = initialIcon;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -3,20 +3,6 @@
 | 
				
			|||||||
        <h2>{{ 'addon.block_starredcourses.pluginname' | translate }}</h2>
 | 
					        <h2>{{ 'addon.block_starredcourses.pluginname' | translate }}</h2>
 | 
				
			||||||
    </ion-label>
 | 
					    </ion-label>
 | 
				
			||||||
    <div slot="end" class="flex-row">
 | 
					    <div slot="end" class="flex-row">
 | 
				
			||||||
        <div *ngIf="downloadCoursesEnabled && downloadEnabled && courses && courses.length > 1" class="core-button-spinner">
 | 
					 | 
				
			||||||
            <ion-button *ngIf="prefetchCoursesData.icon && !prefetchCoursesData.loading" fill="clear" color="dark"
 | 
					 | 
				
			||||||
                (click)="prefetchCourses()" [attr.aria-label]="'core.courses.downloadcourses' | translate">
 | 
					 | 
				
			||||||
                <ion-icon [name]="prefetchCoursesData.icon" slot="icon-only" aria-hidden="true"></ion-icon>
 | 
					 | 
				
			||||||
            </ion-button>
 | 
					 | 
				
			||||||
            <ion-badge class="core-course-download-courses-progress" *ngIf="prefetchCoursesData.badge" role="progressbar"
 | 
					 | 
				
			||||||
                [attr.aria-valuemax]="prefetchCoursesData.total" [attr.aria-valuenow]="prefetchCoursesData.count"
 | 
					 | 
				
			||||||
                [attr.aria-valuetext]="prefetchCoursesData.badgeA11yText">
 | 
					 | 
				
			||||||
                {{prefetchCoursesData.badge}}
 | 
					 | 
				
			||||||
            </ion-badge>
 | 
					 | 
				
			||||||
            <ion-spinner *ngIf="!prefetchCoursesData.icon || prefetchCoursesData.loading" [attr.aria-label]="'core.loading' | translate">
 | 
					 | 
				
			||||||
            </ion-spinner>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <core-horizontal-scroll-controls #scrollControls [aria-controls]="scrollElementId">
 | 
					        <core-horizontal-scroll-controls #scrollControls [aria-controls]="scrollElementId">
 | 
				
			||||||
        </core-horizontal-scroll-controls>
 | 
					        </core-horizontal-scroll-controls>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
				
			|||||||
@ -12,17 +12,15 @@
 | 
				
			|||||||
// See the License for the specific language governing permissions and
 | 
					// See the License for the specific language governing permissions and
 | 
				
			||||||
// limitations under the License.
 | 
					// limitations under the License.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import { Component, OnInit, OnDestroy, Input, OnChanges, SimpleChange } from '@angular/core';
 | 
					import { Component, OnInit, OnDestroy, Input } from '@angular/core';
 | 
				
			||||||
import { CoreEventObserver, CoreEvents } from '@singletons/events';
 | 
					import { CoreEventObserver, CoreEvents } from '@singletons/events';
 | 
				
			||||||
import { CoreSites } from '@services/sites';
 | 
					import { CoreSites } from '@services/sites';
 | 
				
			||||||
import { CoreCoursesProvider, CoreCoursesMyCoursesUpdatedEventData, CoreCourses } from '@features/courses/services/courses';
 | 
					import { CoreCoursesProvider, CoreCoursesMyCoursesUpdatedEventData, CoreCourses } from '@features/courses/services/courses';
 | 
				
			||||||
import { CoreCoursesHelper, CoreEnrolledCourseDataWithOptions } from '@features/courses/services/courses-helper';
 | 
					import { CoreCoursesHelper, CoreEnrolledCourseDataWithOptions } from '@features/courses/services/courses-helper';
 | 
				
			||||||
import { CoreCourseHelper, CorePrefetchStatusInfo } from '@features/course/services/course-helper';
 | 
					 | 
				
			||||||
import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
 | 
					import { CoreCourseOptionsDelegate } from '@features/course/services/course-options-delegate';
 | 
				
			||||||
import { AddonCourseCompletion } from '@/addons/coursecompletion/services/coursecompletion';
 | 
					import { AddonCourseCompletion } from '@/addons/coursecompletion/services/coursecompletion';
 | 
				
			||||||
import { CoreBlockBaseComponent } from '@features/block/classes/base-block-component';
 | 
					import { CoreBlockBaseComponent } from '@features/block/classes/base-block-component';
 | 
				
			||||||
import { CoreUtils } from '@services/utils/utils';
 | 
					import { CoreUtils } from '@services/utils/utils';
 | 
				
			||||||
import { CoreDomUtils } from '@services/utils/dom';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Component to render a starred courses block.
 | 
					 * Component to render a starred courses block.
 | 
				
			||||||
@ -31,24 +29,15 @@ import { CoreDomUtils } from '@services/utils/dom';
 | 
				
			|||||||
    selector: 'addon-block-starredcourses',
 | 
					    selector: 'addon-block-starredcourses',
 | 
				
			||||||
    templateUrl: 'addon-block-starredcourses.html',
 | 
					    templateUrl: 'addon-block-starredcourses.html',
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent implements OnInit, OnChanges, OnDestroy {
 | 
					export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent implements OnInit, OnDestroy {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Input() downloadEnabled = false;
 | 
					    @Input() downloadEnabled = false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    courses: CoreEnrolledCourseDataWithOptions [] = [];
 | 
					    courses: CoreEnrolledCourseDataWithOptions [] = [];
 | 
				
			||||||
    prefetchCoursesData: CorePrefetchStatusInfo = {
 | 
					 | 
				
			||||||
        icon: '',
 | 
					 | 
				
			||||||
        statusTranslatable: 'core.loading',
 | 
					 | 
				
			||||||
        status: '',
 | 
					 | 
				
			||||||
        loading: true,
 | 
					 | 
				
			||||||
        badge: '',
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    downloadCourseEnabled = false;
 | 
					    downloadCourseEnabled = false;
 | 
				
			||||||
    downloadCoursesEnabled = false;
 | 
					 | 
				
			||||||
    scrollElementId!: string;
 | 
					    scrollElementId!: string;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected prefetchIconsInitialized = false;
 | 
					 | 
				
			||||||
    protected isDestroyed = false;
 | 
					    protected isDestroyed = false;
 | 
				
			||||||
    protected coursesObserver?: CoreEventObserver;
 | 
					    protected coursesObserver?: CoreEventObserver;
 | 
				
			||||||
    protected updateSiteObserver?: CoreEventObserver;
 | 
					    protected updateSiteObserver?: CoreEventObserver;
 | 
				
			||||||
@ -69,12 +58,10 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // Refresh the enabled flags if enabled.
 | 
					        // Refresh the enabled flags if enabled.
 | 
				
			||||||
        this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
					        this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
				
			||||||
        this.downloadCoursesEnabled = !CoreCourses.isDownloadCoursesDisabledInSite();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Refresh the enabled flags if site is updated.
 | 
					        // Refresh the enabled flags if site is updated.
 | 
				
			||||||
        this.updateSiteObserver = CoreEvents.on(CoreEvents.SITE_UPDATED, () => {
 | 
					        this.updateSiteObserver = CoreEvents.on(CoreEvents.SITE_UPDATED, () => {
 | 
				
			||||||
            this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
					            this.downloadCourseEnabled = !CoreCourses.isDownloadCourseDisabledInSite();
 | 
				
			||||||
            this.downloadCoursesEnabled = !CoreCourses.isDownloadCoursesDisabledInSite();
 | 
					 | 
				
			||||||
        }, CoreSites.getCurrentSiteId());
 | 
					        }, CoreSites.getCurrentSiteId());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        this.coursesObserver = CoreEvents.on(
 | 
					        this.coursesObserver = CoreEvents.on(
 | 
				
			||||||
@ -89,16 +76,6 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
 | 
				
			|||||||
        super.ngOnInit();
 | 
					        super.ngOnInit();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * @inheritdoc
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    ngOnChanges(changes: {[name: string]: SimpleChange}): void {
 | 
					 | 
				
			||||||
        if (changes.downloadEnabled && !changes.downloadEnabled.previousValue && this.downloadEnabled && this.loaded) {
 | 
					 | 
				
			||||||
            // Download all courses is enabled now, initialize it.
 | 
					 | 
				
			||||||
            this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @inheritdoc
 | 
					     * @inheritdoc
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@ -131,9 +108,7 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
 | 
				
			|||||||
            promises.push(CoreCourses.invalidateCoursesByField('ids', courseIds.join(',')));
 | 
					            promises.push(CoreCourses.invalidateCoursesByField('ids', courseIds.join(',')));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        await CoreUtils.allPromises(promises).finally(() => {
 | 
					        await CoreUtils.allPromises(promises);
 | 
				
			||||||
            this.prefetchIconsInitialized = false;
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -145,8 +120,6 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        // @TODO: Sort won't coincide with website because timemodified is not informed.
 | 
					        // @TODO: Sort won't coincide with website because timemodified is not informed.
 | 
				
			||||||
        this.courses = await CoreCoursesHelper.getUserCoursesWithOptions('timemodified', 0, 'isfavourite', showCategories);
 | 
					        this.courses = await CoreCoursesHelper.getUserCoursesWithOptions('timemodified', 0, 'isfavourite', showCategories);
 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@ -182,43 +155,10 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            await this.invalidateCourses([course.id]);
 | 
					            await this.invalidateCourses([course.id]);
 | 
				
			||||||
            this.initPrefetchCoursesIcons();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Initialize the prefetch icon for selected courses.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    protected async initPrefetchCoursesIcons(): Promise<void> {
 | 
					 | 
				
			||||||
        if (this.prefetchIconsInitialized || !this.downloadEnabled) {
 | 
					 | 
				
			||||||
            // Already initialized.
 | 
					 | 
				
			||||||
            return;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.prefetchIconsInitialized = true;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        this.prefetchCoursesData = await CoreCourseHelper.initPrefetchCoursesIcons(this.courses, this.prefetchCoursesData);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					 | 
				
			||||||
     * Prefetch all the shown courses.
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * @return Promise resolved when done.
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    async prefetchCourses(): Promise<void> {
 | 
					 | 
				
			||||||
        const initialIcon = this.prefetchCoursesData.icon;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        try {
 | 
					 | 
				
			||||||
            return CoreCourseHelper.prefetchCourses(this.courses, this.prefetchCoursesData);
 | 
					 | 
				
			||||||
        } catch (error) {
 | 
					 | 
				
			||||||
            if (!this.isDestroyed) {
 | 
					 | 
				
			||||||
                CoreDomUtils.showErrorModalDefault(error, 'core.course.errordownloadingcourse', true);
 | 
					 | 
				
			||||||
                this.prefetchCoursesData.icon = initialIcon;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @inheritdoc
 | 
					     * @inheritdoc
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user