forked from CIT/Vmeda.Online
		
	MOBILE-3213 assign: Discard grade drafts after successful sync
This commit is contained in:
		
							parent
							
								
									81d45266ca
								
							
						
					
					
						commit
						c255feeeef
					
				| @ -29,6 +29,7 @@ import { CoreSyncBaseProvider } from '@classes/base-sync'; | |||||||
| import { AddonModAssignProvider, AddonModAssignAssign } from './assign'; | import { AddonModAssignProvider, AddonModAssignAssign } from './assign'; | ||||||
| import { AddonModAssignOfflineProvider } from './assign-offline'; | import { AddonModAssignOfflineProvider } from './assign-offline'; | ||||||
| import { AddonModAssignSubmissionDelegate } from './submission-delegate'; | import { AddonModAssignSubmissionDelegate } from './submission-delegate'; | ||||||
|  | import { AddonModAssignFeedbackDelegate } from './feedback-delegate'; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Data returned by an assign sync. |  * Data returned by an assign sync. | ||||||
| @ -55,13 +56,22 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider { | |||||||
| 
 | 
 | ||||||
|     protected componentTranslate: string; |     protected componentTranslate: string; | ||||||
| 
 | 
 | ||||||
|     constructor(loggerProvider: CoreLoggerProvider, sitesProvider: CoreSitesProvider, appProvider: CoreAppProvider, |     constructor(loggerProvider: CoreLoggerProvider, | ||||||
|             syncProvider: CoreSyncProvider, textUtils: CoreTextUtilsProvider, translate: TranslateService, |             sitesProvider: CoreSitesProvider, | ||||||
|             private courseProvider: CoreCourseProvider, private eventsProvider: CoreEventsProvider, |             appProvider: CoreAppProvider, | ||||||
|             private assignProvider: AddonModAssignProvider, private assignOfflineProvider: AddonModAssignOfflineProvider, |             syncProvider: CoreSyncProvider, | ||||||
|             private utils: CoreUtilsProvider, private submissionDelegate: AddonModAssignSubmissionDelegate, |             textUtils: CoreTextUtilsProvider, | ||||||
|             private gradesHelper: CoreGradesHelperProvider, timeUtils: CoreTimeUtilsProvider, |             translate: TranslateService, | ||||||
|             private logHelper: CoreCourseLogHelperProvider) { |             timeUtils: CoreTimeUtilsProvider, | ||||||
|  |             protected courseProvider: CoreCourseProvider, | ||||||
|  |             protected eventsProvider: CoreEventsProvider, | ||||||
|  |             protected assignProvider: AddonModAssignProvider, | ||||||
|  |             protected assignOfflineProvider: AddonModAssignOfflineProvider, | ||||||
|  |             protected utils: CoreUtilsProvider, | ||||||
|  |             protected submissionDelegate: AddonModAssignSubmissionDelegate, | ||||||
|  |             protected feedbackDelegate: AddonModAssignFeedbackDelegate, | ||||||
|  |             protected gradesHelper: CoreGradesHelperProvider, | ||||||
|  |             protected logHelper: CoreCourseLogHelperProvider) { | ||||||
| 
 | 
 | ||||||
|         super('AddonModAssignSyncProvider', loggerProvider, sitesProvider, appProvider, syncProvider, textUtils, translate, |         super('AddonModAssignSyncProvider', loggerProvider, sitesProvider, appProvider, syncProvider, textUtils, translate, | ||||||
|                 timeUtils); |                 timeUtils); | ||||||
| @ -403,9 +413,19 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider { | |||||||
|                 return this.assignProvider.submitGradingFormOnline(assign.id, userId, offlineData.grade, offlineData.attemptnumber, |                 return this.assignProvider.submitGradingFormOnline(assign.id, userId, offlineData.grade, offlineData.attemptnumber, | ||||||
|                         offlineData.addattempt, offlineData.workflowstate, offlineData.applytoall, offlineData.outcomes, |                         offlineData.addattempt, offlineData.workflowstate, offlineData.applytoall, offlineData.outcomes, | ||||||
|                         offlineData.plugindata, siteId).then(() => { |                         offlineData.plugindata, siteId).then(() => { | ||||||
|  |                     // Grades sent.
 | ||||||
|  |                     // Discard grades drafts.
 | ||||||
|  |                     const promises = []; | ||||||
|  |                     if (status.feedback && status.feedback.plugins) { | ||||||
|  |                         status.feedback.plugins.forEach((plugin) => { | ||||||
|  |                             promises.push(this.feedbackDelegate.discardPluginFeedbackData(assign.id, userId, plugin, siteId)); | ||||||
|  |                         }); | ||||||
|  |                     } | ||||||
| 
 | 
 | ||||||
|                     // Grades sent, update cached data. No need to block the user for this.
 |                     // Update cached data.
 | ||||||
|                     this.assignProvider.getSubmissionStatus(assign.id, userId, undefined, false, true, true, siteId); |                     promises.push(this.assignProvider.getSubmissionStatus(assign.id, userId, undefined, false, true, true, siteId)); | ||||||
|  | 
 | ||||||
|  |                     return Promise.all(promises); | ||||||
|                 }).catch((error) => { |                 }).catch((error) => { | ||||||
|                     if (error && this.utils.isWebServiceError(error)) { |                     if (error && this.utils.isWebServiceError(error)) { | ||||||
|                         // The WebService has thrown an error, this means it cannot be submitted. Discard the offline data.
 |                         // The WebService has thrown an error, this means it cannot be submitted. Discard the offline data.
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user