MOBILE-2527 course: Prefetch section summary files
This commit is contained in:
		
							parent
							
								
									5c176b93b8
								
							
						
					
					
						commit
						890a8105e9
					
				| @ -43,6 +43,8 @@ export class CoreCourseProvider { | ||||
|     static COMPLETION_COMPLETE_PASS = 2; | ||||
|     static COMPLETION_COMPLETE_FAIL = 3; | ||||
| 
 | ||||
|     static COMPONENT = 'CoreCourse'; | ||||
| 
 | ||||
|     protected ROOT_CACHE_KEY = 'mmCourse:'; | ||||
| 
 | ||||
|     // Variables for database.
 | ||||
|  | ||||
| @ -401,11 +401,15 @@ export class CoreCourseHelperProvider { | ||||
|      * @return {Promise<any>} Promise resolved if the user confirms or there's no need to confirm. | ||||
|      */ | ||||
|     confirmDownloadSizeSection(courseId: number, section?: any, sections?: any[], alwaysConfirm?: boolean): Promise<any> { | ||||
|         let sizePromise; | ||||
|         let sizePromise, | ||||
|             haveEmbeddedFiles = false; | ||||
| 
 | ||||
|         // Calculate the size of the download.
 | ||||
|         if (section && section.id != CoreCourseProvider.ALL_SECTIONS_ID) { | ||||
|             sizePromise = this.prefetchDelegate.getDownloadSize(section.modules, courseId); | ||||
| 
 | ||||
|             // Check if the section has embedded files in the description.
 | ||||
|             haveEmbeddedFiles = this.domUtils.extractDownloadableFilesFromHtml(section.summary).length > 0; | ||||
|         } else { | ||||
|             const promises = [], | ||||
|                 results = { | ||||
| @ -419,6 +423,11 @@ export class CoreCourseHelperProvider { | ||||
|                         results.total = results.total && sectionSize.total; | ||||
|                         results.size += sectionSize.size; | ||||
|                     })); | ||||
| 
 | ||||
|                     // Check if the section has embedded files in the description.
 | ||||
|                     if (!haveEmbeddedFiles && this.domUtils.extractDownloadableFilesFromHtml(s.summary).length > 0) { | ||||
|                         haveEmbeddedFiles = true; | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
| @ -428,6 +437,10 @@ export class CoreCourseHelperProvider { | ||||
|         } | ||||
| 
 | ||||
|         return sizePromise.then((size) => { | ||||
|             if (haveEmbeddedFiles) { | ||||
|                 size.total = false; | ||||
|             } | ||||
| 
 | ||||
|             // Show confirm modal if needed.
 | ||||
|             return this.domUtils.confirmDownloadSize(size, undefined, undefined, undefined, undefined, alwaysConfirm); | ||||
|         }); | ||||
| @ -1272,10 +1285,12 @@ export class CoreCourseHelperProvider { | ||||
|             return Promise.resolve(); | ||||
|         } | ||||
| 
 | ||||
|         const promises = []; | ||||
| 
 | ||||
|         section.isDownloading = true; | ||||
| 
 | ||||
|         // Validate the section needs to be downloaded and calculate amount of modules that need to be downloaded.
 | ||||
|         return this.prefetchDelegate.getModulesStatus(section.modules, courseId, section.id).then((result) => { | ||||
|         promises.push(this.prefetchDelegate.getModulesStatus(section.modules, courseId, section.id).then((result) => { | ||||
|             if (result.status == CoreConstants.DOWNLOADED || result.status == CoreConstants.NOT_DOWNLOADABLE) { | ||||
|                 // Section is downloaded or not downloadable, nothing to do.
 | ||||
|                 return; | ||||
| @ -1286,7 +1301,18 @@ export class CoreCourseHelperProvider { | ||||
|             section.isDownloading = false; | ||||
| 
 | ||||
|             return Promise.reject(error); | ||||
|         }); | ||||
|         })); | ||||
| 
 | ||||
|         // Download the files in the section description.
 | ||||
|         const introFiles = this.domUtils.extractDownloadableFilesFromHtmlAsFakeFileObjects(section.summary), | ||||
|             siteId = this.sitesProvider.getCurrentSiteId(); | ||||
| 
 | ||||
|         promises.push(this.filepoolProvider.addFilesToQueue(siteId, introFiles, CoreCourseProvider.COMPONENT, courseId) | ||||
|                 .catch(() => { | ||||
|             // Ignore errors.
 | ||||
|         })); | ||||
| 
 | ||||
|         return Promise.all(promises); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user