@@ -18,7 +18,6 @@ import { CoreEventsProvider } from '@providers/events';
1818import { CoreSitesProvider } from '@providers/sites' ;
1919import { CoreDomUtilsProvider } from '@providers/utils/dom' ;
2020import { CoreTextUtilsProvider } from '@providers/utils/text' ;
21- import { CoreUtilsProvider } from '@providers/utils/utils' ;
2221import { CoreCourseProvider } from '@core/course/providers/course' ;
2322import { CoreFileUploaderProvider } from '@core/fileuploader/providers/fileuploader' ;
2423import { AddonModDataFieldsDelegate } from './fields-delegate' ;
@@ -35,12 +34,19 @@ import { CoreRatingOfflineProvider } from '@core/rating/providers/offline';
3534@Injectable ( )
3635export 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