Skip to content

Commit d4e3015

Browse files
committed
MOBILE-3389 login: Make error URL clickable
1 parent 09e3e00 commit d4e3015

File tree

3 files changed

+43
-13
lines changed

3 files changed

+43
-13
lines changed

src/core/login/pages/site/site.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,16 @@ <h2>{{site.name}}</h2>
4949
</div>
5050

5151
<!-- Error. -->
52-
<div padding-top *ngIf="errorMessage" >
52+
<div padding-top *ngIf="error" >
5353
<ion-card class="core-site-error">
5454
<ion-card-header>
5555
{{ 'core.whoops' | translate }}
5656
</ion-card-header>
5757
<ion-card-content>
58-
<p><core-format-text [text]="errorMessage" [filter]="false"></core-format-text></p>
59-
<ng-container *ngIf="errorUrl">
58+
<p><core-format-text [text]="error.message" [filter]="false"></core-format-text></p>
59+
<ng-container *ngIf="error.url">
6060
<p>{{ 'core.login.problemconnectingerror' | translate }}</p>
61-
<p padding>{{ errorUrl }}</p>
61+
<p padding><a [href]="error.fullUrl" core-link>{{ error.url }}</a></p>
6262
<p><strong>{{ 'core.login.problemconnectingerrorcontinue' | translate }}</strong></p>
6363
</ng-container>
6464
</ion-card-content>
@@ -73,8 +73,8 @@ <h2>{{site.name}}</h2>
7373
</div>
7474

7575
<!-- Help. -->
76-
<ion-list>
77-
<a ion-item text-center (click)="showHelp()" detail-none>
76+
<ion-list no-lines>
77+
<a ion-item text-center class="core-login-need-help" (click)="showHelp()" detail-none>
7878
{{ 'core.needhelp' | translate }}
7979
</a>
8080
</ion-list>

src/core/login/pages/site/site.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,8 @@ ion-app.app-root page-core-login-site {
2626
font-weight: bold;
2727
}
2828
}
29+
30+
.core-login-need-help {
31+
text-decoration: underline;
32+
}
2933
}

src/core/login/pages/site/site.ts

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,33 @@ import { CoreAppProvider } from '@providers/app';
1818
import { CoreEventsProvider } from '@providers/events';
1919
import { CoreSitesProvider, CoreSiteCheckResponse } from '@providers/sites';
2020
import { CoreDomUtilsProvider } from '@providers/utils/dom';
21+
import { CoreUrlUtilsProvider } from '@providers/utils/url';
2122
import { CoreConfigConstants } from '../../../../configconstants';
2223
import { CoreLoginHelperProvider } from '../../providers/helper';
2324
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
2425
import { CoreUrl } from '@classes/utils/url';
2526
import { TranslateService } from '@ngx-translate/core';
2627

28+
/**
29+
* Data about an error when connecting to a site.
30+
*/
31+
type CoreLoginSiteError = {
32+
/**
33+
* The error message that ocurred.
34+
*/
35+
message: string;
36+
37+
/**
38+
* URL the user entered.
39+
*/
40+
url?: string;
41+
42+
/**
43+
* URL the user entered with protocol added if needed.
44+
*/
45+
fullUrl?: string;
46+
};
47+
2748
/**
2849
* Page to enter or select the site URL to connect to.
2950
*/
@@ -42,8 +63,7 @@ export class CoreLoginSitePage {
4263
fixedDisplay = 'buttons';
4364
showKeyboard = false;
4465
filter = '';
45-
errorUrl: string;
46-
errorMessage: string;
66+
error: CoreLoginSiteError;
4767

4868
constructor(navParams: NavParams,
4969
protected navCtrl: NavController,
@@ -54,7 +74,8 @@ export class CoreLoginSitePage {
5474
protected modalCtrl: ModalController,
5575
protected domUtils: CoreDomUtilsProvider,
5676
protected eventsProvider: CoreEventsProvider,
57-
protected translate: TranslateService) {
77+
protected translate: TranslateService,
78+
protected urlUtils: CoreUrlUtilsProvider) {
5879

5980
this.showKeyboard = !!navParams.get('showKeyboard');
6081

@@ -180,8 +201,7 @@ export class CoreLoginSitePage {
180201
* Hide the login error.
181202
*/
182203
protected hideLoginIssue(): void {
183-
this.errorUrl = null;
184-
this.errorMessage = null;
204+
this.error = null;
185205
}
186206

187207
/**
@@ -191,8 +211,14 @@ export class CoreLoginSitePage {
191211
* @param error Error to display.
192212
*/
193213
protected showLoginIssue(url: string, error: any): void {
194-
this.errorUrl = url;
195-
this.errorMessage = this.domUtils.getErrorMessage(error);
214+
this.error = {
215+
url: url,
216+
message: this.domUtils.getErrorMessage(error),
217+
};
218+
219+
if (url) {
220+
this.error.fullUrl = this.urlUtils.isAbsoluteURL(url) ? url : 'https://' + url;
221+
}
196222
}
197223

198224
/**

0 commit comments

Comments
 (0)