forked from CIT/Vmeda.Online
		
	Merge pull request #3500 from dpalou/MOBILE-4081
MOBILE-4081 mainmenu: Don't change tab on resize
This commit is contained in:
		
						commit
						b030fca880
					
				@ -118,10 +118,10 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
 | 
			
		||||
        this.updateVisibility();
 | 
			
		||||
 | 
			
		||||
        this.subscription = CoreMainMenuDelegate.getHandlersObservable().subscribe((handlers) => {
 | 
			
		||||
            // Remove the handlers that should only appear in the More menu.
 | 
			
		||||
            const previousHandlers = this.allHandlers;
 | 
			
		||||
            this.allHandlers = handlers;
 | 
			
		||||
 | 
			
		||||
            this.updateHandlers();
 | 
			
		||||
            this.updateHandlers(previousHandlers);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        this.badgeUpdateObserver = CoreEvents.on(CoreMainMenuProvider.MAIN_MENU_HANDLER_BADGE_UPDATED, (data) => {
 | 
			
		||||
@ -154,8 +154,10 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Update handlers on change (size or handlers).
 | 
			
		||||
     *
 | 
			
		||||
     * @param previousHandlers Previous handlers (if they haave just been updated).
 | 
			
		||||
     */
 | 
			
		||||
    async updateHandlers(): Promise<void> {
 | 
			
		||||
    async updateHandlers(previousHandlers?: CoreMainMenuHandlerToDisplay[]): Promise<void> {
 | 
			
		||||
        if (!this.allHandlers) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
@ -167,7 +169,6 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
 | 
			
		||||
            .slice(0, CoreMainMenu.getNumItems()); // Get main handlers.
 | 
			
		||||
 | 
			
		||||
        // Re-build the list of tabs. If a handler is already in the list, use existing object to prevent re-creating the tab.
 | 
			
		||||
        const previousTabs = this.tabs.map(tab => tab.page);
 | 
			
		||||
        const newTabs: CoreMainMenuHandlerToDisplay[] = [];
 | 
			
		||||
 | 
			
		||||
        for (let i = 0; i < handlers.length; i++) {
 | 
			
		||||
@ -190,13 +191,18 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
        this.updateMoreBadge();
 | 
			
		||||
 | 
			
		||||
        const removedTabs = previousTabs.filter(page => !this.tabs.some(tab => tab.page === page));
 | 
			
		||||
        const mainMenuTab = CoreNavigator.getCurrentMainMenuTab();
 | 
			
		||||
        let removedHandlersPages: string[] = [];
 | 
			
		||||
        if (previousHandlers) {
 | 
			
		||||
            const allHandlers = this.allHandlers;
 | 
			
		||||
            removedHandlersPages = previousHandlers.map(handler => handler.page)
 | 
			
		||||
                .filter(page => !allHandlers.some(handler => handler.page === page));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const mainMenuTab = CoreNavigator.getCurrentMainMenuTab();
 | 
			
		||||
        this.loaded = CoreMainMenuDelegate.areHandlersLoaded();
 | 
			
		||||
 | 
			
		||||
        if (this.loaded && (!mainMenuTab || removedTabs.includes(mainMenuTab))) {
 | 
			
		||||
            // No tab selected, select the first one.
 | 
			
		||||
        if (this.loaded && (!mainMenuTab || removedHandlersPages.includes(mainMenuTab))) {
 | 
			
		||||
            // No tab selected or handler no longer available, select the first one.
 | 
			
		||||
            await CoreUtils.nextTick();
 | 
			
		||||
 | 
			
		||||
            const tabPage = this.tabs[0] ? this.tabs[0].page : this.morePageName;
 | 
			
		||||
@ -205,6 +211,7 @@ export class CoreMainMenuPage implements OnInit, OnDestroy {
 | 
			
		||||
 | 
			
		||||
            // Use navigate instead of mainTabs.select to be able to pass page params.
 | 
			
		||||
            CoreNavigator.navigateToSitePath(tabPage, {
 | 
			
		||||
                preferCurrentTab: false,
 | 
			
		||||
                params: {
 | 
			
		||||
                    urlToOpen: this.urlToOpen,
 | 
			
		||||
                    redirectPath: this.redirectPath,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user