@@ -29,6 +29,7 @@ import { CoreSyncBaseProvider } from '@classes/base-sync';
2929import { AddonModAssignProvider , AddonModAssignAssign } from './assign' ;
3030import { AddonModAssignOfflineProvider } from './assign-offline' ;
3131import { AddonModAssignSubmissionDelegate } from './submission-delegate' ;
32+ import { AddonModAssignFeedbackDelegate } from './feedback-delegate' ;
3233
3334/**
3435 * Data returned by an assign sync.
@@ -55,13 +56,22 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
5556
5657 protected componentTranslate : string ;
5758
58- constructor ( loggerProvider : CoreLoggerProvider , sitesProvider : CoreSitesProvider , appProvider : CoreAppProvider ,
59- syncProvider : CoreSyncProvider , textUtils : CoreTextUtilsProvider , translate : TranslateService ,
60- private courseProvider : CoreCourseProvider , private eventsProvider : CoreEventsProvider ,
61- private assignProvider : AddonModAssignProvider , private assignOfflineProvider : AddonModAssignOfflineProvider ,
62- private utils : CoreUtilsProvider , private submissionDelegate : AddonModAssignSubmissionDelegate ,
63- private gradesHelper : CoreGradesHelperProvider , timeUtils : CoreTimeUtilsProvider ,
64- private logHelper : CoreCourseLogHelperProvider ) {
59+ constructor ( loggerProvider : CoreLoggerProvider ,
60+ sitesProvider : CoreSitesProvider ,
61+ appProvider : CoreAppProvider ,
62+ syncProvider : CoreSyncProvider ,
63+ textUtils : CoreTextUtilsProvider ,
64+ translate : TranslateService ,
65+ timeUtils : CoreTimeUtilsProvider ,
66+ protected courseProvider : CoreCourseProvider ,
67+ protected eventsProvider : CoreEventsProvider ,
68+ protected assignProvider : AddonModAssignProvider ,
69+ protected assignOfflineProvider : AddonModAssignOfflineProvider ,
70+ protected utils : CoreUtilsProvider ,
71+ protected submissionDelegate : AddonModAssignSubmissionDelegate ,
72+ protected feedbackDelegate : AddonModAssignFeedbackDelegate ,
73+ protected gradesHelper : CoreGradesHelperProvider ,
74+ protected logHelper : CoreCourseLogHelperProvider ) {
6575
6676 super ( 'AddonModAssignSyncProvider' , loggerProvider , sitesProvider , appProvider , syncProvider , textUtils , translate ,
6777 timeUtils ) ;
@@ -403,9 +413,19 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
403413 return this . assignProvider . submitGradingFormOnline ( assign . id , userId , offlineData . grade , offlineData . attemptnumber ,
404414 offlineData . addattempt , offlineData . workflowstate , offlineData . applytoall , offlineData . outcomes ,
405415 offlineData . plugindata , siteId ) . then ( ( ) => {
416+ // Grades sent.
417+ // Discard grades drafts.
418+ const promises = [ ] ;
419+ if ( status . feedback && status . feedback . plugins ) {
420+ status . feedback . plugins . forEach ( ( plugin ) => {
421+ promises . push ( this . feedbackDelegate . discardPluginFeedbackData ( assign . id , userId , plugin , siteId ) ) ;
422+ } ) ;
423+ }
406424
407- // Grades sent, update cached data. No need to block the user for this.
408- this . assignProvider . getSubmissionStatus ( assign . id , userId , undefined , false , true , true , siteId ) ;
425+ // Update cached data.
426+ promises . push ( this . assignProvider . getSubmissionStatus ( assign . id , userId , undefined , false , true , true , siteId ) ) ;
427+
428+ return Promise . all ( promises ) ;
409429 } ) . catch ( ( error ) => {
410430 if ( error && this . utils . isWebServiceError ( error ) ) {
411431 // The WebService has thrown an error, this means it cannot be submitted. Discard the offline data.
0 commit comments