Skip to content

Commit 6d7a96d

Browse files
committed
MOBILE-3200 database: Do not need courseId to delete an offline entry
1 parent 1652e4d commit 6d7a96d

File tree

1 file changed

+44
-29
lines changed

1 file changed

+44
-29
lines changed

src/addon/mod/data/providers/helper.ts

Lines changed: 44 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { CoreEventsProvider } from '@providers/events';
1818
import { CoreSitesProvider } from '@providers/sites';
1919
import { CoreDomUtilsProvider } from '@providers/utils/dom';
2020
import { CoreTextUtilsProvider } from '@providers/utils/text';
21-
import { CoreUtilsProvider } from '@providers/utils/utils';
2221
import { CoreCourseProvider } from '@core/course/providers/course';
2322
import { CoreFileUploaderProvider } from '@core/fileuploader/providers/fileuploader';
2423
import { AddonModDataFieldsDelegate } from './fields-delegate';
@@ -35,12 +34,19 @@ import { CoreRatingOfflineProvider } from '@core/rating/providers/offline';
3534
@Injectable()
3635
export class AddonModDataHelperProvider {
3736

38-
constructor(private sitesProvider: CoreSitesProvider, protected dataProvider: AddonModDataProvider,
39-
private translate: TranslateService, private fieldsDelegate: AddonModDataFieldsDelegate,
40-
private dataOffline: AddonModDataOfflineProvider, private fileUploaderProvider: CoreFileUploaderProvider,
41-
private textUtils: CoreTextUtilsProvider, private eventsProvider: CoreEventsProvider, private utils: CoreUtilsProvider,
42-
private domUtils: CoreDomUtilsProvider, private courseProvider: CoreCourseProvider,
43-
private ratingOffline: CoreRatingOfflineProvider) {}
37+
constructor(
38+
protected sitesProvider: CoreSitesProvider,
39+
protected dataProvider: AddonModDataProvider,
40+
protected translate: TranslateService,
41+
protected fieldsDelegate: AddonModDataFieldsDelegate,
42+
protected dataOffline: AddonModDataOfflineProvider,
43+
protected fileUploaderProvider: CoreFileUploaderProvider,
44+
protected textUtils: CoreTextUtilsProvider,
45+
protected eventsProvider: CoreEventsProvider,
46+
protected domUtils: CoreDomUtilsProvider,
47+
protected courseProvider: CoreCourseProvider,
48+
protected ratingOffline: CoreRatingOfflineProvider
49+
) {}
4450

4551
/**
4652
* Returns the record with the offline actions applied.
@@ -632,35 +638,44 @@ export class AddonModDataHelperProvider {
632638
* @param courseId Course ID. It not defined, it will be fetched.
633639
* @param siteId Site ID. If not defined, current site.
634640
*/
635-
showDeleteEntryModal(dataId: number, entryId: number, courseId?: number, siteId?: string): void {
641+
async showDeleteEntryModal(dataId: number, entryId: number, courseId?: number, siteId?: string): Promise<void> {
636642
siteId = siteId || this.sitesProvider.getCurrentSiteId();
637643

638-
this.domUtils.showDeleteConfirm('addon.mod_data.confirmdeleterecord').then(() => {
639-
const modal = this.domUtils.showModalLoading();
644+
let modal;
645+
try {
646+
await this.domUtils.showDeleteConfirm('addon.mod_data.confirmdeleterecord');
640647

641-
return this.getActivityCourseIdIfNotSet(dataId, courseId, siteId).then((courseId) => {
642-
return this.dataProvider.deleteEntry(dataId, entryId, courseId, siteId);
643-
}).catch((message) => {
648+
modal = this.domUtils.showModalLoading();
649+
650+
try {
651+
if (entryId > 0) {
652+
courseId = await this.getActivityCourseIdIfNotSet(dataId, courseId, siteId);
653+
}
654+
655+
this.dataProvider.deleteEntry(dataId, entryId, courseId, siteId);
656+
} catch (message) {
644657
this.domUtils.showErrorModalDefault(message, 'addon.mod_data.errordeleting', true);
645658

646-
return Promise.reject(null);
647-
}).then(() => {
648-
return this.utils.allPromises([
649-
this.dataProvider.invalidateEntryData(dataId, entryId, siteId),
650-
this.dataProvider.invalidateEntriesData(dataId, siteId)
651-
]).catch(() => {
652-
// Ignore errors.
653-
});
654-
}).then(() => {
655-
this.eventsProvider.trigger(AddonModDataProvider.ENTRY_CHANGED, {dataId, entryId, deleted: true}, siteId);
659+
modal && modal.dismiss();
656660

657-
this.domUtils.showToast('addon.mod_data.recorddeleted', true, 3000);
658-
}).finally(() => {
659-
modal.dismiss();
660-
});
661-
}).catch(() => {
661+
return;
662+
}
663+
664+
try {
665+
await this.dataProvider.invalidateEntryData(dataId, entryId, siteId);
666+
await this.dataProvider.invalidateEntriesData(dataId, siteId);
667+
} catch (error) {
668+
// Ignore errors.
669+
}
670+
671+
this.eventsProvider.trigger(AddonModDataProvider.ENTRY_CHANGED, {dataId, entryId, deleted: true}, siteId);
672+
673+
this.domUtils.showToast('addon.mod_data.recorddeleted', true, 3000);
674+
} catch (error) {
662675
// Ignore error, it was already displayed.
663-
});
676+
}
677+
678+
modal && modal.dismiss();
664679
}
665680

666681
/**

0 commit comments

Comments
 (0)