Merge pull request #2065 from crazyserver/MOBILE-3117

Mobile 3117
main
Juan Leyva 2019-08-22 12:11:21 +01:00 committed by GitHub
commit 7f755e4bca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 28 deletions

View File

@ -25,6 +25,7 @@ import { CoreCustomURLSchemesProvider } from '@providers/urlschemes';
import { CoreLoginHelperProvider } from '@core/login/providers/helper'; import { CoreLoginHelperProvider } from '@core/login/providers/helper';
import { Keyboard } from '@ionic-native/keyboard'; import { Keyboard } from '@ionic-native/keyboard';
import { ScreenOrientation } from '@ionic-native/screen-orientation'; import { ScreenOrientation } from '@ionic-native/screen-orientation';
import { CoreLoginSitesPage } from '@core/login/pages/sites/sites';
@Component({ @Component({
templateUrl: 'app.html' templateUrl: 'app.html'
@ -74,7 +75,9 @@ export class MoodleMobileApp implements OnInit {
ngOnInit(): void { ngOnInit(): void {
this.eventsProvider.on(CoreEventsProvider.LOGOUT, () => { this.eventsProvider.on(CoreEventsProvider.LOGOUT, () => {
// Go to sites page when user is logged out. // Go to sites page when user is logged out.
this.appProvider.getRootNavController().setRoot('CoreLoginSitesPage'); // Due to DeepLinker, we need to use the ViewCtrl instead of name.
// Otherwise some pages are re-created when they shouldn't.
this.appProvider.getRootNavController().setRoot(CoreLoginSitesPage);
// Unload lang custom strings. // Unload lang custom strings.
this.langProvider.clearCustomStrings(); this.langProvider.clearCustomStrings();

View File

@ -81,6 +81,13 @@ export class CoreLoginCredentialsPage {
} }
} }
/**
* View enter.
*/
ionViewDidEnter(): void {
this.viewLeft = false;
}
/** /**
* View left. * View left.
*/ */

View File

@ -39,7 +39,7 @@
<ion-grid> <ion-grid>
<ion-row> <ion-row>
<ion-col> <ion-col>
<a ion-button block color="light" (click)="cancel()">{{ 'core.login.cancel' | translate }}</a> <a ion-button block color="light" (click)="cancel($event)">{{ 'core.login.cancel' | translate }}</a>
</ion-col> </ion-col>
<ion-col> <ion-col>
<button ion-button block [disabled]="!credForm.valid">{{ 'core.login.loginbutton' | translate }}</button> <button ion-button block [disabled]="!credForm.valid">{{ 'core.login.loginbutton' | translate }}</button>

View File

@ -101,13 +101,16 @@ export class CoreLoginReconnectPage {
/** /**
* Cancel reconnect. * Cancel reconnect.
*
* @param {Event} [e] Event.
*/ */
cancel(): void { cancel(e?: Event): void {
this.sitesProvider.logout().catch(() => { if (e) {
// Ignore errors (shouldn't happen). e.preventDefault();
}).finally(() => { e.stopPropagation();
this.navCtrl.setRoot('CoreLoginSitesPage'); }
});
this.sitesProvider.logout();
} }
/** /**

View File

@ -27,7 +27,6 @@ import { CoreConfigConstants } from '../configconstants';
import { CoreSite } from '@classes/site'; import { CoreSite } from '@classes/site';
import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb'; import { SQLiteDB, SQLiteDBTableSchema } from '@classes/sqlitedb';
import { Md5 } from 'ts-md5/dist/md5'; import { Md5 } from 'ts-md5/dist/md5';
import { Location } from '@angular/common';
import { WP_PROVIDER } from '@app/app.module'; import { WP_PROVIDER } from '@app/app.module';
/** /**
@ -326,7 +325,7 @@ export class CoreSitesProvider {
constructor(logger: CoreLoggerProvider, private http: HttpClient, private sitesFactory: CoreSitesFactoryProvider, constructor(logger: CoreLoggerProvider, private http: HttpClient, private sitesFactory: CoreSitesFactoryProvider,
private appProvider: CoreAppProvider, private translate: TranslateService, private urlUtils: CoreUrlUtilsProvider, private appProvider: CoreAppProvider, private translate: TranslateService, private urlUtils: CoreUrlUtilsProvider,
private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider, private location: Location, private eventsProvider: CoreEventsProvider, private textUtils: CoreTextUtilsProvider,
private utils: CoreUtilsProvider, private injector: Injector) { private utils: CoreUtilsProvider, private injector: Injector) {
this.logger = logger.getInstance('CoreSitesProvider'); this.logger = logger.getInstance('CoreSitesProvider');
@ -1235,14 +1234,12 @@ export class CoreSitesProvider {
* @return {Promise<any>} Promise resolved when the user is logged out. * @return {Promise<any>} Promise resolved when the user is logged out.
*/ */
logout(): Promise<any> { logout(): Promise<any> {
if (!this.currentSite) { let siteId;
// Already logged out. const promises = [];
return Promise.resolve();
}
const siteId = this.currentSite.getId(), if (this.currentSite) {
siteConfig = this.currentSite.getStoredConfig(), const siteConfig = this.currentSite.getStoredConfig();
promises = []; siteId = this.currentSite.getId();
this.currentSite = undefined; this.currentSite = undefined;
@ -1251,11 +1248,9 @@ export class CoreSitesProvider {
} }
promises.push(this.appDB.deleteRecords(this.CURRENT_SITE_TABLE, { id: 1 })); promises.push(this.appDB.deleteRecords(this.CURRENT_SITE_TABLE, { id: 1 }));
}
return Promise.all(promises).finally(() => { return Promise.all(promises).finally(() => {
// Due to DeepLinker, we need to remove the path from the URL, otherwise some pages are re-created when they shouldn't.
this.location.replaceState('');
this.eventsProvider.trigger(CoreEventsProvider.LOGOUT, {}, siteId); this.eventsProvider.trigger(CoreEventsProvider.LOGOUT, {}, siteId);
}); });
} }