From 4ee4692cd67094cb3a1d74f182a653d43ec2d921 Mon Sep 17 00:00:00 2001 From: Dani Palou <dani@moodle.com> Date: Wed, 21 Aug 2019 11:05:10 +0200 Subject: [PATCH] MOBILE-3106 login: Check redirect if get site info fails --- src/classes/site.ts | 10 +++++++++- src/providers/sites.ts | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/classes/site.ts b/src/classes/site.ts index e01cb15cc..07bf12cca 100644 --- a/src/classes/site.ts +++ b/src/classes/site.ts @@ -1454,7 +1454,15 @@ export class CoreSite { preSets.noLogin = true; preSets.useGet = true; - return this.wsProvider.callAjax('tool_mobile_get_public_config', {}, preSets); + return this.wsProvider.callAjax('tool_mobile_get_public_config', {}, preSets).catch((error2) => { + if (this.getInfo() && this.isVersionGreaterEqualThan('3.8')) { + // GET is supported, return the second error. + return Promise.reject(error2); + } else { + // GET not supported or we don't know if it's supported. Return first error. + return Promise.reject(error); + } + }); } return Promise.reject(error); diff --git a/src/providers/sites.ts b/src/providers/sites.ts index a80aca762..9588a3e60 100644 --- a/src/providers/sites.ts +++ b/src/providers/sites.ts @@ -470,6 +470,20 @@ export class CoreSitesProvider { // Service supported but an error happened. Return error. error.critical = true; + if (error.errorcode == 'codingerror') { + // This could be caused by a redirect. Check if it's the case. + return this.utils.checkRedirect(siteUrl).then((redirect) => { + if (redirect) { + error.error = this.translate.instant('core.login.sitehasredirect'); + } else { + // We can't be sure if there is a redirect or not. Display cannot connect error. + error.error = this.translate.instant('core.cannotconnect'); + } + + return Promise.reject(error); + }); + } + return Promise.reject(error); }