MOBILE-2416 core: Fix redirect to main menu

main
Dani Palou 2018-05-16 10:14:56 +02:00
parent e3aee5c3d1
commit e80f5a1301
4 changed files with 26 additions and 5 deletions

View File

@ -44,6 +44,8 @@ export class CoreIonTabsComponent extends Tabs {
}
}
@Input() selectedDisabled: boolean; // Whether the initial tab selected can be a disabled tab.
@ViewChild('originalTabs') originalTabsRef: ElementRef;
_loaded: boolean; // Whether tabs have been loaded.
@ -135,7 +137,16 @@ export class CoreIonTabsComponent extends Tabs {
if (!this.initialized && (this._loaded || typeof this._loaded == 'undefined')) {
this.initialized = true;
return super.initTabs();
return super.initTabs().then(() => {
// Tabs initialized. Force select the tab if it's not enabled.
if (this.selectedDisabled && typeof this.selectedIndex != 'undefined') {
const tab = this.getByIndex(this.selectedIndex);
if (tab && (!tab.enabled || !tab.show)) {
this.select(tab);
}
}
});
} else {
// Tabs not loaded yet. Set the tab bar position so the tab bar is shown, it'll have a spinner.
this.setTabbarPosition(-1, 0);

View File

@ -333,13 +333,13 @@ export class CoreCourseSectionPage implements OnDestroy {
* User entered the page.
*/
ionViewDidEnter(): void {
this.formatComponent.ionViewDidEnter();
this.formatComponent && this.formatComponent.ionViewDidEnter();
}
/**
* User left the page.
*/
ionViewDidLeave(): void {
this.formatComponent.ionViewDidLeave();
this.formatComponent && this.formatComponent.ionViewDidLeave();
}
}

View File

@ -13,6 +13,7 @@
// limitations under the License.
import { Injectable } from '@angular/core';
import { Location } from '@angular/common';
import { Platform } from 'ionic-angular';
import { TranslateService } from '@ngx-translate/core';
import { CoreAppProvider } from '@providers/app';
@ -81,7 +82,8 @@ export class CoreLoginHelperProvider {
private wsProvider: CoreWSProvider, private translate: TranslateService, private textUtils: CoreTextUtilsProvider,
private eventsProvider: CoreEventsProvider, private appProvider: CoreAppProvider, private utils: CoreUtilsProvider,
private urlUtils: CoreUrlUtilsProvider, private configProvider: CoreConfigProvider, private platform: Platform,
private initDelegate: CoreInitDelegate, private sitePluginsProvider: CoreSitePluginsProvider) {
private initDelegate: CoreInitDelegate, private sitePluginsProvider: CoreSitePluginsProvider,
private location: Location) {
this.logger = logger.getInstance('CoreLoginHelper');
}
@ -408,6 +410,10 @@ export class CoreLoginHelperProvider {
* @return {Promise<any>} Promise resolved when done.
*/
goToSiteInitialPage(): Promise<any> {
// Due to DeepLinker, we need to remove the path from the URL before going to main menu.
// IonTabs checks the URL to determine which path to load for deep linking, so we clear the URL.
this.location.replaceState('');
return this.appProvider.getRootNavController().setRoot('CoreMainMenuPage');
}
@ -597,6 +603,10 @@ export class CoreLoginHelperProvider {
* @param {any} params Params to pass to the page.
*/
protected loadPageInMainMenu(page: string, params: any): void {
// Due to DeepLinker, we need to remove the path from the URL before going to main menu.
// IonTabs checks the URL to determine which path to load for deep linking, so we clear the URL.
this.location.replaceState('');
this.appProvider.getRootNavController().setRoot('CoreMainMenuPage', { redirectPage: page, redirectParams: params });
}

View File

@ -1,4 +1,4 @@
<core-ion-tabs #mainTabs [hidden]="!showTabs" [loaded]="loaded" [selectedIndex]="initialTab" tabsPlacement="bottom" tabsLayout="title-hide">
<core-ion-tabs #mainTabs [hidden]="!showTabs" [loaded]="loaded" [selectedIndex]="initialTab" [selectedDisabled]="!!redirectPage" tabsPlacement="bottom" tabsLayout="title-hide">
<core-ion-tab [enabled]="false" [show]="false" [root]="redirectPage" [rootParams]="redirectParams"></core-ion-tab>
<core-ion-tab *ngFor="let tab of tabs" [root]="tab.page" [rootParams]="tab.pageParams" [tabTitle]="tab.title | translate" [tabIcon]="tab.icon" [tabBadge]="tab.badge" class="{{tab.class}}"></core-ion-tab>
<core-ion-tab root="CoreMainMenuMorePage" [tabTitle]="'core.more' | translate" tabIcon="more"></core-ion-tab>