forked from EVOgeek/Vmeda.Online
		
	MOBILE-3585 mainmenu: Fix go to root when tab clicked
This commit is contained in:
		
							parent
							
								
									07e5d2bbf2
								
							
						
					
					
						commit
						3d3890a70d
					
				| @ -45,6 +45,7 @@ export class AddonPrivateFilesMainMenuHandler implements CoreMainMenuHandler { | |||||||
|             icon: 'fa-folder', |             icon: 'fa-folder', | ||||||
|             title: 'addon.privatefiles.files', |             title: 'addon.privatefiles.files', | ||||||
|             page: 'addon-privatefiles', |             page: 'addon-privatefiles', | ||||||
|  |             subPage: 'root', | ||||||
|             class: 'addon-privatefiles-handler', |             class: 'addon-privatefiles-handler', | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -19,6 +19,7 @@ import { Subscription } from 'rxjs'; | |||||||
| 
 | 
 | ||||||
| import { CoreApp } from '@services/app'; | import { CoreApp } from '@services/app'; | ||||||
| import { CoreSites } from '@services/sites'; | import { CoreSites } from '@services/sites'; | ||||||
|  | import { CoreTextUtils } from '@services/utils/text'; | ||||||
| import { CoreEvents, CoreEventObserver, CoreEventLoadPageMainMenuData } from '@singletons/events'; | import { CoreEvents, CoreEventObserver, CoreEventLoadPageMainMenuData } from '@singletons/events'; | ||||||
| import { CoreMainMenu } from '../../services/mainmenu'; | import { CoreMainMenu } from '../../services/mainmenu'; | ||||||
| import { CoreMainMenuDelegate, CoreMainMenuHandlerToDisplay } from '../../services/mainmenu.delegate'; | import { CoreMainMenuDelegate, CoreMainMenuHandlerToDisplay } from '../../services/mainmenu.delegate'; | ||||||
| @ -242,8 +243,10 @@ export class CoreMainMenuPage implements OnInit, OnDestroy { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         const trimmedUrl = CoreTextUtils.instance.trimCharacter(this.router.url, '/'); | ||||||
|  | 
 | ||||||
|         // Current tab was clicked. Check if user is already at root level.
 |         // Current tab was clicked. Check if user is already at root level.
 | ||||||
|         if (this.router.url == '/mainmenu/' + page) { |         if (trimmedUrl  == CoreTextUtils.instance.trimCharacter(page, '/')) { | ||||||
|             // Already at root level, nothing to do.
 |             // Already at root level, nothing to do.
 | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
| @ -255,8 +258,17 @@ export class CoreMainMenuPage implements OnInit, OnDestroy { | |||||||
|         try { |         try { | ||||||
|             const tab = this.tabs.find((tab) => tab.page == page); |             const tab = this.tabs.find((tab) => tab.page == page); | ||||||
| 
 | 
 | ||||||
|  |             // Use tab's subPage to check if user is already at root level.
 | ||||||
|  |             if (tab?.subPage && trimmedUrl == | ||||||
|  |                 CoreTextUtils.instance.trimCharacter(CoreTextUtils.instance.concatenatePaths(tab.page, tab.subPage), '/')) { | ||||||
|  |                 // Already at root level, nothing to do.
 | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             if (tab?.title) { |             if (tab?.title) { | ||||||
|                 await CoreDomUtils.instance.showConfirm(Translate.instance.instant('core.confirmgotabroot', { name: tab.title })); |                 await CoreDomUtils.instance.showConfirm(Translate.instance.instant('core.confirmgotabroot', { | ||||||
|  |                     name: Translate.instance.instant(tab.title), | ||||||
|  |                 })); | ||||||
|             } else { |             } else { | ||||||
|                 await CoreDomUtils.instance.showConfirm(Translate.instance.instant('core.confirmgotabrootdefault')); |                 await CoreDomUtils.instance.showConfirm(Translate.instance.instant('core.confirmgotabrootdefault')); | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -55,6 +55,7 @@ export class CoreHomeMainMenuHandler implements CoreMainMenuHandler { | |||||||
|             icon: 'fa-home', |             icon: 'fa-home', | ||||||
|             title: 'core.mainmenu.home', |             title: 'core.mainmenu.home', | ||||||
|             page: 'home', |             page: 'home', | ||||||
|  |             // @todo: subPage? The page can change due to core-tabs.
 | ||||||
|             class: 'core-home-handler', |             class: 'core-home-handler', | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -32,6 +32,13 @@ export interface CoreMainMenuHandlerData { | |||||||
|      */ |      */ | ||||||
|     page: string; |     page: string; | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Sub page loaded when the handler page is loaded. | ||||||
|  |      * If your module performs a redirect when it's opened you need to specify the sub page in here. | ||||||
|  |      * E.g. if page is 'foo' but it redirects to 'foo/bar' when opened, this value must be 'bar'. | ||||||
|  |      */ | ||||||
|  |     subPage?: string; | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Title to display for the handler. |      * Title to display for the handler. | ||||||
|      */ |      */ | ||||||
|  | |||||||
| @ -891,6 +891,20 @@ export class CoreTextUtilsProvider { | |||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Remove all ocurrences of a certain character from the start and end of a string. | ||||||
|  |      * | ||||||
|  |      * @param text Text to treat. | ||||||
|  |      * @param character Character to remove. | ||||||
|  |      * @return Treated text. | ||||||
|  |      */ | ||||||
|  |     trimCharacter(text: string, character: string): string { | ||||||
|  |         const escaped = this.escapeForRegex(character); | ||||||
|  |         const regExp = new RegExp(`^${escaped}+|${escaped}+$`, 'g'); | ||||||
|  | 
 | ||||||
|  |         return text.replace(regExp, ''); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * If a number has only 1 digit, add a leading zero to it. |      * If a number has only 1 digit, add a leading zero to it. | ||||||
|      * |      * | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user