Skip to content

Commit c255fee

Browse files
committed
MOBILE-3213 assign: Discard grade drafts after successful sync
1 parent 81d4526 commit c255fee

File tree

1 file changed

+29
-9
lines changed

1 file changed

+29
-9
lines changed

src/addon/mod/assign/providers/assign-sync.ts

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { CoreSyncBaseProvider } from '@classes/base-sync';
2929
import { AddonModAssignProvider, AddonModAssignAssign } from './assign';
3030
import { AddonModAssignOfflineProvider } from './assign-offline';
3131
import { 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

Comments
 (0)