MOBILE-2061 sync: Fix errors displayed while syncing
parent
e4248a8a44
commit
15b4b6b8d1
|
@ -308,7 +308,7 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
if (error && this.utils.isWebServiceError(error)) {
|
if (error && this.utils.isWebServiceError(error)) {
|
||||||
// A WebService has thrown an error, this means it cannot be submitted. Discard the submission.
|
// A WebService has thrown an error, this means it cannot be submitted. Discard the submission.
|
||||||
discardError = error.message || error.error || error.content || error.body;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
@ -402,7 +402,7 @@ export class AddonModAssignSyncProvider extends CoreSyncBaseProvider {
|
||||||
}).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.
|
||||||
discardError = error.message || error.error || error.content || error.body;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
|
|
@ -176,7 +176,7 @@ export class AddonModChoiceSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -295,10 +295,10 @@ export class AddonModDataSyncProvider extends CoreSyncBaseProvider {
|
||||||
promises.push(actionPromise.catch((error) => {
|
promises.push(actionPromise.catch((error) => {
|
||||||
if (error && error.wserror) {
|
if (error && error.wserror) {
|
||||||
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
||||||
discardError = error.error;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error && error.error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// Delete the offline data.
|
// Delete the offline data.
|
||||||
|
|
|
@ -251,12 +251,12 @@ export class AddonModFeedbackSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: feedback.name,
|
name: feedback.name,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error && error.error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -227,7 +227,7 @@ export class AddonModForumSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -399,7 +399,7 @@ export class AddonModForumSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -198,7 +198,7 @@ export class AddonModGlossarySyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: data.concept,
|
name: data.concept,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -401,7 +401,7 @@ export class AddonModLessonSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: lesson.name,
|
name: lesson.name,
|
||||||
error: error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -485,7 +485,7 @@ export class AddonModLessonSyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: lesson.name,
|
name: lesson.name,
|
||||||
error: error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -173,13 +173,13 @@ export class AddonModSurveySyncProvider extends CoreSyncBaseProvider {
|
||||||
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
result.warnings.push(this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.componentTranslate,
|
component: this.componentTranslate,
|
||||||
name: data.name,
|
name: data.name,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error && error.error);
|
return Promise.reject(error);
|
||||||
});
|
});
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
if (courseId) {
|
if (courseId) {
|
||||||
|
|
|
@ -291,7 +291,7 @@ export class AddonModWikiSyncProvider extends CoreSyncBaseProvider {
|
||||||
const warning = this.translate.instant('core.warningofflinedatadeleted', {
|
const warning = this.translate.instant('core.warningofflinedatadeleted', {
|
||||||
component: this.translate.instant('addon.mod_wiki.wikipage'),
|
component: this.translate.instant('addon.mod_wiki.wikipage'),
|
||||||
name: page.title,
|
name: page.title,
|
||||||
error: error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
});
|
});
|
||||||
|
|
||||||
result.discarded.push({
|
result.discarded.push({
|
||||||
|
|
|
@ -340,7 +340,7 @@ export class AddonModWorkshopSyncProvider extends CoreSyncBaseProvider {
|
||||||
}).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 performed. Discard.
|
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
||||||
discardError = error.message || error.error;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
@ -421,7 +421,7 @@ export class AddonModWorkshopSyncProvider extends CoreSyncBaseProvider {
|
||||||
}).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 performed. Discard.
|
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
||||||
discardError = error.message || error.error;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error);
|
return Promise.reject(error);
|
||||||
|
@ -480,10 +480,10 @@ export class AddonModWorkshopSyncProvider extends CoreSyncBaseProvider {
|
||||||
evaluate.gradeover, siteId).catch((error) => {
|
evaluate.gradeover, siteId).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 performed. Discard.
|
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
||||||
discardError = error.message || error.error;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error && error.error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// Delete the offline data.
|
// Delete the offline data.
|
||||||
|
@ -539,10 +539,10 @@ export class AddonModWorkshopSyncProvider extends CoreSyncBaseProvider {
|
||||||
evaluate.gradinggradeover, siteId).catch((error) => {
|
evaluate.gradinggradeover, siteId).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 performed. Discard.
|
// The WebService has thrown an error, this means it cannot be performed. Discard.
|
||||||
discardError = error.message || error.error;
|
discardError = this.textUtils.getErrorMessageFromError(error);
|
||||||
} else {
|
} else {
|
||||||
// Couldn't connect to server, reject.
|
// Couldn't connect to server, reject.
|
||||||
return Promise.reject(error && error.error);
|
return Promise.reject(error);
|
||||||
}
|
}
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// Delete the offline data.
|
// Delete the offline data.
|
||||||
|
|
|
@ -145,7 +145,7 @@ export class CoreCourseSyncProvider extends CoreSyncBaseProvider {
|
||||||
// Responses deleted, add a warning.
|
// Responses deleted, add a warning.
|
||||||
result.warnings.push(this.translate.instant('core.course.warningofflinemanualcompletiondeleted', {
|
result.warnings.push(this.translate.instant('core.course.warningofflinemanualcompletiondeleted', {
|
||||||
name: entry.coursename || courseId,
|
name: entry.coursename || courseId,
|
||||||
error: error.error
|
error: this.textUtils.getErrorMessageFromError(error)
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import { Injectable } from '@angular/core';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
import { CoreSitesProvider } from '@providers/sites';
|
import { CoreSitesProvider } from '@providers/sites';
|
||||||
import { CoreDomUtilsProvider } from '@providers/utils/dom';
|
import { CoreDomUtilsProvider } from '@providers/utils/dom';
|
||||||
|
import { CoreTextUtilsProvider } from '@providers/utils/text';
|
||||||
import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler';
|
import { CoreContentLinksHandlerBase } from '@core/contentlinks/classes/base-handler';
|
||||||
import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate';
|
import { CoreContentLinksAction } from '@core/contentlinks/providers/delegate';
|
||||||
import { CoreLoginHelperProvider } from '@core/login/providers/helper';
|
import { CoreLoginHelperProvider } from '@core/login/providers/helper';
|
||||||
|
@ -34,7 +35,8 @@ export class CoreCoursesCourseLinkHandler extends CoreContentLinksHandlerBase {
|
||||||
|
|
||||||
constructor(private sitesProvider: CoreSitesProvider, private coursesProvider: CoreCoursesProvider,
|
constructor(private sitesProvider: CoreSitesProvider, private coursesProvider: CoreCoursesProvider,
|
||||||
private loginHelper: CoreLoginHelperProvider, private domUtils: CoreDomUtilsProvider,
|
private loginHelper: CoreLoginHelperProvider, private domUtils: CoreDomUtilsProvider,
|
||||||
private translate: TranslateService, private courseProvider: CoreCourseProvider) {
|
private translate: TranslateService, private courseProvider: CoreCourseProvider,
|
||||||
|
private textUtils: CoreTextUtilsProvider) {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +152,7 @@ export class CoreCoursesCourseLinkHandler extends CoreContentLinksHandlerBase {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
error = error.message || error.error || error.content || error.body || error;
|
error = this.textUtils.getErrorMessageFromError(error) || error;
|
||||||
}
|
}
|
||||||
if (!error) {
|
if (!error) {
|
||||||
error = this.translate.instant('core.courses.notenroled');
|
error = this.translate.instant('core.courses.notenroled');
|
||||||
|
@ -232,7 +234,7 @@ export class CoreCoursesCourseLinkHandler extends CoreContentLinksHandlerBase {
|
||||||
|
|
||||||
if (typeof password != 'undefined') {
|
if (typeof password != 'undefined') {
|
||||||
// The user attempted a password. Show an error message.
|
// The user attempted a password. Show an error message.
|
||||||
this.domUtils.showErrorModal(error.message);
|
this.domUtils.showErrorModal(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.domUtils.showPrompt(body, title, placeholder).then((password) => {
|
return this.domUtils.showPrompt(body, title, placeholder).then((password) => {
|
||||||
|
|
|
@ -276,7 +276,7 @@ export class CoreLoginEmailSignupPage {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error && error.error, 'core.login.usernotaddederror', true);
|
this.domUtils.showErrorModalDefault(error, 'core.login.usernotaddederror', true);
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
});
|
});
|
||||||
|
|
|
@ -70,7 +70,7 @@ export class CoreLoginForgottenPasswordPage {
|
||||||
this.navCtrl.pop();
|
this.navCtrl.pop();
|
||||||
}
|
}
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModal(error.error);
|
this.domUtils.showErrorModal(error);
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
});
|
});
|
||||||
|
|
|
@ -88,7 +88,7 @@ export class CoreLoginSitePolicyPage {
|
||||||
this.policyLoaded = true;
|
this.policyLoaded = true;
|
||||||
});
|
});
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error && error.error, 'Error getting site policy.');
|
this.domUtils.showErrorModalDefault(error, 'Error getting site policy.');
|
||||||
this.cancel();
|
this.cancel();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ export class CoreLoginSitePolicyPage {
|
||||||
return this.loginHelper.goToSiteInitialPage();
|
return this.loginHelper.goToSiteInitialPage();
|
||||||
});
|
});
|
||||||
}).catch((error) => {
|
}).catch((error) => {
|
||||||
this.domUtils.showErrorModalDefault(error.message, 'Error accepting site policy.');
|
this.domUtils.showErrorModalDefault(error, 'Error accepting site policy.');
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
modal.dismiss();
|
modal.dismiss();
|
||||||
});
|
});
|
||||||
|
|
|
@ -1001,9 +1001,9 @@ export class CoreLoginHelperProvider {
|
||||||
*/
|
*/
|
||||||
treatUserTokenError(siteUrl: string, error: any): void {
|
treatUserTokenError(siteUrl: string, error: any): void {
|
||||||
if (error.errorcode == 'forcepasswordchangenotice') {
|
if (error.errorcode == 'forcepasswordchangenotice') {
|
||||||
this.openChangePassword(siteUrl, error.error || error.message || error.body || error.content);
|
this.openChangePassword(siteUrl, this.textUtils.getErrorMessageFromError(error));
|
||||||
} else if (error.errorcode == 'legacymoodleversion') {
|
} else if (error.errorcode == 'legacymoodleversion') {
|
||||||
this.showLegacyNoticeModal(error.error);
|
this.showLegacyNoticeModal(this.textUtils.getErrorMessageFromError(error));
|
||||||
} else {
|
} else {
|
||||||
this.domUtils.showErrorModal(error);
|
this.domUtils.showErrorModal(error);
|
||||||
}
|
}
|
||||||
|
|
|
@ -388,7 +388,7 @@ export class CoreSitesProvider {
|
||||||
const promise = this.http.post(siteUrl + '/login/token.php', data).timeout(CoreConstants.WS_TIMEOUT).toPromise();
|
const promise = this.http.post(siteUrl + '/login/token.php', data).timeout(CoreConstants.WS_TIMEOUT).toPromise();
|
||||||
|
|
||||||
return promise.catch((error) => {
|
return promise.catch((error) => {
|
||||||
return Promise.reject(error.message);
|
return Promise.reject(error);
|
||||||
}).then((data: any) => {
|
}).then((data: any) => {
|
||||||
if (data.errorcode && (data.errorcode == 'enablewsdescription' || data.errorcode == 'requirecorrectaccess')) {
|
if (data.errorcode && (data.errorcode == 'enablewsdescription' || data.errorcode == 'requirecorrectaccess')) {
|
||||||
return Promise.reject({ errorcode: data.errorcode, error: data.error });
|
return Promise.reject({ errorcode: data.errorcode, error: data.error });
|
||||||
|
|
|
@ -1005,15 +1005,10 @@ export class CoreDomUtilsProvider {
|
||||||
if (error.coreCanceled) {
|
if (error.coreCanceled) {
|
||||||
// It's a canceled error, don't display an error.
|
// It's a canceled error, don't display an error.
|
||||||
return;
|
return;
|
||||||
} else if (typeof error.content != 'undefined') {
|
}
|
||||||
error = error.content;
|
|
||||||
} else if (typeof error.body != 'undefined') {
|
error = this.textUtils.getErrorMessageFromError(error);
|
||||||
error = error.body;
|
if (!error) {
|
||||||
} else if (typeof error.message != 'undefined') {
|
|
||||||
error = error.message;
|
|
||||||
} else if (typeof error.error != 'undefined') {
|
|
||||||
error = error.error;
|
|
||||||
} else {
|
|
||||||
// No common properties found, just stringify it.
|
// No common properties found, just stringify it.
|
||||||
error = JSON.stringify(error);
|
error = JSON.stringify(error);
|
||||||
extraInfo = ''; // No need to add extra info because it's already in the error.
|
extraInfo = ''; // No need to add extra info because it's already in the error.
|
||||||
|
@ -1058,7 +1053,7 @@ export class CoreDomUtilsProvider {
|
||||||
let errorMessage = error;
|
let errorMessage = error;
|
||||||
|
|
||||||
if (error && typeof error != 'string') {
|
if (error && typeof error != 'string') {
|
||||||
errorMessage = error.message || error.error || error.content || error.body;
|
errorMessage = this.textUtils.getErrorMessageFromError(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.showErrorModal(typeof errorMessage == 'string' ? error : defaultError, needsTranslate, autocloseTime);
|
return this.showErrorModal(typeof errorMessage == 'string' ? error : defaultError, needsTranslate, autocloseTime);
|
||||||
|
|
|
@ -400,6 +400,16 @@ export class CoreTextUtilsProvider {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the error message from an error object.
|
||||||
|
*
|
||||||
|
* @param {any} error Error object.
|
||||||
|
* @return {string} Error message, undefined if not found.
|
||||||
|
*/
|
||||||
|
getErrorMessageFromError(error: any): string {
|
||||||
|
return error && (error.message || error.error || error.content || error.body);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the pluginfile URL to replace @@PLUGINFILE@@ wildcards.
|
* Get the pluginfile URL to replace @@PLUGINFILE@@ wildcards.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue