MOBILE-3320 scorm: Fix sync race condition when leaving player
This commit is contained in:
		
							parent
							
								
									e3f3ae187d
								
							
						
					
					
						commit
						1ac0b7a0f4
					
				| @ -19,6 +19,7 @@ import { CoreCourseContentsPage } from '@features/course/pages/contents/contents | |||||||
| import { CoreCourse } from '@features/course/services/course'; | import { CoreCourse } from '@features/course/services/course'; | ||||||
| import { IonContent } from '@ionic/angular'; | import { IonContent } from '@ionic/angular'; | ||||||
| import { CoreNavigator } from '@services/navigator'; | import { CoreNavigator } from '@services/navigator'; | ||||||
|  | import { CoreSync } from '@services/sync'; | ||||||
| import { CoreDomUtils } from '@services/utils/dom'; | import { CoreDomUtils } from '@services/utils/dom'; | ||||||
| import { CoreUtils } from '@services/utils/utils'; | import { CoreUtils } from '@services/utils/utils'; | ||||||
| import { Translate } from '@singletons'; | import { Translate } from '@singletons'; | ||||||
| @ -584,9 +585,17 @@ export class AddonModScormIndexComponent extends CoreCourseModuleMainActivityCom | |||||||
|     /** |     /** | ||||||
|      * Performs the sync of the activity. |      * Performs the sync of the activity. | ||||||
|      * |      * | ||||||
|  |      * @param retries Number of retries done. | ||||||
|      * @return Promise resolved when done. |      * @return Promise resolved when done. | ||||||
|      */ |      */ | ||||||
|     protected async sync(): Promise<AddonModScormSyncResult> { |     protected async sync(retries = 0): Promise<AddonModScormSyncResult> { | ||||||
|  |         if (CoreSync.isBlocked(AddonModScormProvider.COMPONENT, this.scorm!.id) && retries < 5) { | ||||||
|  |             // Sync is currently blocked, this can happen when SCORM player is left. Retry in a bit.
 | ||||||
|  |             await CoreUtils.wait(400); | ||||||
|  | 
 | ||||||
|  |             return this.sync(retries + 1); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         const result = await AddonModScormSync.syncScorm(this.scorm!); |         const result = await AddonModScormSync.syncScorm(this.scorm!); | ||||||
| 
 | 
 | ||||||
|         if (!result.updated && this.dataSent) { |         if (!result.updated && this.dataSent) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user