MOBILE-3213 assign: Discard grade drafts after successful sync
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…
Reference in New Issue