MOBILE-2553 login: Improve error handling in check site

main
dpalou 2018-10-04 10:21:42 +02:00
parent ff08501397
commit 871b47369c
3 changed files with 21 additions and 19 deletions

View File

@ -9,7 +9,7 @@
"areyousure": "Are you sure?",
"back": "Back",
"cancel": "Cancel",
"cannotconnect": "Cannot connect: Verify that you have correctly typed the URL and that your site uses Moodle 2.4 or later.",
"cannotconnect": "Cannot connect: verify that you have typed correctly the URL.",
"cannotdownloadfiles": "File downloading is disabled. Please contact your site administrator.",
"captureaudio": "Record audio",
"capturedimage": "Taken picture.",

View File

@ -21,6 +21,7 @@ import { CoreLoggerProvider } from './logger';
import { CoreSitesFactoryProvider } from './sites-factory';
import { CoreTextUtilsProvider } from './utils/text';
import { CoreUrlUtilsProvider } from './utils/url';
import { CoreUtilsProvider } from './utils/utils';
import { CoreConstants } from '@core/constants';
import { CoreConfigConstants } from '../configconstants';
import { CoreSite } from '@classes/site';
@ -211,7 +212,8 @@ export class CoreSitesProvider {
constructor(logger: CoreLoggerProvider, private http: HttpClient, private sitesFactory: CoreSitesFactoryProvider,
private appProvider: CoreAppProvider, private translate: TranslateService, private urlUtils: CoreUrlUtilsProvider,
private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider) {
private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider,
private utils: CoreUtilsProvider) {
this.logger = logger.getInstance('CoreSitesProvider');
this.appDB = appProvider.getDB();
@ -258,14 +260,10 @@ export class CoreSitesProvider {
protocol = protocol == 'https://' ? 'http://' : 'https://';
return this.checkSiteWithProtocol(siteUrl, protocol).catch((secondError) => {
// Site doesn't exist.
if (secondError.error) {
return Promise.reject(secondError.error);
} else if (error.error) {
return Promise.reject(error.error);
}
return Promise.reject(this.translate.instant('core.login.checksiteversion'));
// Site doesn't exist. Return the error message.
return Promise.reject(this.textUtils.getErrorMessageFromError(error) ||
this.textUtils.getErrorMessageFromError(secondError) ||
this.translate.instant('core.cannotconnect'));
});
});
}
@ -286,7 +284,7 @@ export class CoreSitesProvider {
return this.siteExists(siteUrl).catch((error) => {
// Do not continue checking if WS are not enabled.
if (error.errorcode && error.errorcode == 'enablewsdescription') {
if (error.errorcode == 'enablewsdescription') {
return rejectWithCriticalError(error.error, error.errorcode);
}
@ -298,13 +296,13 @@ export class CoreSitesProvider {
siteUrl = treatedUrl;
}).catch((secondError) => {
// Do not continue checking if WS are not enabled.
if (secondError.errorcode && secondError.errorcode == 'enablewsdescription') {
if (secondError.errorcode == 'enablewsdescription') {
return rejectWithCriticalError(secondError.error, secondError.errorcode);
}
error = secondError || error;
return Promise.reject({ error: typeof error == 'object' ? error.error : error });
// Return the error message.
return Promise.reject(this.textUtils.getErrorMessageFromError(error) ||
this.textUtils.getErrorMessageFromError(secondError));
});
}).then(() => {
// Create a temporary site to check if local_mobile is installed.
@ -385,11 +383,11 @@ export class CoreSitesProvider {
data.service = 'c';
}
const promise = this.http.post(siteUrl + '/login/token.php', data).timeout(CoreConstants.WS_TIMEOUT).toPromise();
return promise.catch((error) => {
return Promise.reject(error);
return this.http.post(siteUrl + '/login/token.php', data).timeout(CoreConstants.WS_TIMEOUT).toPromise().catch(() => {
// Default error messages are kinda bad, return our own message.
return Promise.reject({error: this.translate.instant('core.cannotconnect')});
}).then((data: any) => {
if (data.errorcode && (data.errorcode == 'enablewsdescription' || data.errorcode == 'requirecorrectaccess')) {
return Promise.reject({ errorcode: data.errorcode, error: data.error });
} else if (data.error && data.error == 'Web services must be enabled in Advanced features.') {

View File

@ -407,6 +407,10 @@ export class CoreTextUtilsProvider {
* @return {string} Error message, undefined if not found.
*/
getErrorMessageFromError(error: any): string {
if (typeof error == 'string') {
return error;
}
return error && (error.message || error.error || error.content || error.body);
}