forked from EVOgeek/Vmeda.Online
		
	MOBILE-4120 messages: Fix wrong messages displayed in split view
This commit is contained in:
		
							parent
							
								
									134a6ab79e
								
							
						
					
					
						commit
						fa9f074209
					
				| @ -18,11 +18,18 @@ import { Route, RouterModule, ROUTES, Routes } from '@angular/router'; | ||||
| import { buildTabMainRoutes } from '@features/mainmenu/mainmenu-tab-routing.module'; | ||||
| import { AddonMessagesIndexGuard } from './guards'; | ||||
| 
 | ||||
| export const AddonMessagesDiscussionRoute: Route = { | ||||
|     path: 'discussion', | ||||
| export const DISCUSSION_ROUTES: Route[] = [ | ||||
|     { | ||||
|         path: 'discussion/user/:userId', | ||||
|         loadChildren: () => import('./pages/discussion/discussion.module') | ||||
|             .then(m => m.AddonMessagesDiscussionPageModule), | ||||
| }; | ||||
|     }, | ||||
|     { | ||||
|         path: 'discussion/:conversationId', | ||||
|         loadChildren: () => import('./pages/discussion/discussion.module') | ||||
|             .then(m => m.AddonMessagesDiscussionPageModule), | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
| function buildRoutes(injector: Injector): Routes { | ||||
|     return [ | ||||
| @ -40,7 +47,7 @@ function buildRoutes(injector: Injector): Routes { | ||||
|             loadChildren: () => import('./pages/group-conversations/group-conversations.module') | ||||
|                 .then(m => m.AddonMessagesGroupConversationsPageModule), | ||||
|         }, | ||||
|         AddonMessagesDiscussionRoute, | ||||
|         ...DISCUSSION_ROUTES, | ||||
|         { | ||||
|             path: 'search', | ||||
|             loadChildren: () => import('./pages/search/search.module') | ||||
|  | ||||
| @ -15,7 +15,7 @@ | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
| import { conditionalRoutes } from '@/app/app-routing.module'; | ||||
| import { AddonMessagesDiscussionRoute } from '@addons/messages/messages-lazy.module'; | ||||
| import { DISCUSSION_ROUTES } from '@addons/messages/messages-lazy.module'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| 
 | ||||
| import { CoreSharedModule } from '@/core/shared.module'; | ||||
| @ -28,16 +28,14 @@ const mobileRoutes: Routes = [ | ||||
|         path: '', | ||||
|         component: AddonMessagesContacts35Page, | ||||
|     }, | ||||
|     AddonMessagesDiscussionRoute, | ||||
|     ...DISCUSSION_ROUTES, | ||||
| ]; | ||||
| 
 | ||||
| const tabletRoutes: Routes = [ | ||||
|     { | ||||
|         path: '', | ||||
|         component: AddonMessagesContacts35Page, | ||||
|         children: [ | ||||
|             AddonMessagesDiscussionRoute, | ||||
|         ], | ||||
|         children: DISCUSSION_ROUTES, | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|  | ||||
| @ -25,7 +25,7 @@ import { | ||||
| import { CoreDomUtils } from '@services/utils/dom'; | ||||
| import { CoreApp } from '@services/app'; | ||||
| import { CoreEventObserver, CoreEvents } from '@singletons/events'; | ||||
| import { ActivatedRoute, Params } from '@angular/router'; | ||||
| import { ActivatedRoute } from '@angular/router'; | ||||
| import { Translate } from '@singletons'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| import { CoreNavigator } from '@services/navigator'; | ||||
| @ -241,15 +241,10 @@ export class AddonMessagesContacts35Page implements OnInit, OnDestroy { | ||||
|     gotoDiscussion(discussionUserId: number): void { | ||||
|         this.discussionUserId = discussionUserId; | ||||
| 
 | ||||
|         const params: Params = { | ||||
|             userId: discussionUserId, | ||||
|         }; | ||||
| 
 | ||||
|         const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/contacts-35/discussion'); | ||||
|         const path = (splitViewLoaded ? '../' : '') + 'discussion'; | ||||
|         const path = CoreNavigator.getRelativePathToParent('/messages/contacts-35') + `discussion/user/${discussionUserId}`; | ||||
| 
 | ||||
|         // @todo Check why this is failing on ngInit.
 | ||||
|         CoreNavigator.navigate(path, { params }); | ||||
|         CoreNavigator.navigate(path); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -15,7 +15,7 @@ | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
| import { conditionalRoutes } from '@/app/app-routing.module'; | ||||
| import { AddonMessagesDiscussionRoute } from '@addons/messages/messages-lazy.module'; | ||||
| import { DISCUSSION_ROUTES } from '@addons/messages/messages-lazy.module'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| 
 | ||||
| import { CoreSharedModule } from '@/core/shared.module'; | ||||
| @ -27,16 +27,14 @@ const mobileRoutes: Routes = [ | ||||
|         path: '', | ||||
|         component: AddonMessagesContactsPage, | ||||
|     }, | ||||
|     AddonMessagesDiscussionRoute, | ||||
|     ...DISCUSSION_ROUTES, | ||||
| ]; | ||||
| 
 | ||||
| const tabletRoutes: Routes = [ | ||||
|     { | ||||
|         path: '', | ||||
|         component: AddonMessagesContactsPage, | ||||
|         children: [ | ||||
|             AddonMessagesDiscussionRoute, | ||||
|         ], | ||||
|         children: DISCUSSION_ROUTES, | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|  | ||||
| @ -291,10 +291,8 @@ export class AddonMessagesContactsPage implements OnInit, OnDestroy { | ||||
| 
 | ||||
|         this.selectedUserId = userId; | ||||
| 
 | ||||
|         const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/contacts/discussion'); | ||||
|         const path = (splitViewLoaded ? '../' : '') + 'discussion'; | ||||
| 
 | ||||
|         CoreNavigator.navigate(path, { params : { userId } }); | ||||
|         const path = CoreNavigator.getRelativePathToParent('/messages/contacts') + `discussion/user/${userId}`; | ||||
|         CoreNavigator.navigate(path); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -154,28 +154,14 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView | ||||
|      * Setup code for the page. | ||||
|      */ | ||||
|     async ngOnInit(): Promise<void> { | ||||
| 
 | ||||
|         this.route.queryParams.subscribe(async (params) => { | ||||
|             const oldConversationId = this.conversationId; | ||||
|             const oldUserId = this.userId; | ||||
|             let forceScrollToBottom = false; | ||||
|             this.conversationId = CoreNavigator.getRouteNumberParam('conversationId', { params }) || undefined; | ||||
|             this.userId = CoreNavigator.getRouteNumberParam('userId', { params }) || undefined; | ||||
|             this.showInfo = !params.hideInfo; | ||||
| 
 | ||||
|             if (oldConversationId != this.conversationId || oldUserId != this.userId) { | ||||
|                 // Showing reload again can break animations.
 | ||||
|                 this.loaded = false; | ||||
|                 this.initialized = false; | ||||
|                 forceScrollToBottom = true; | ||||
|             } | ||||
| 
 | ||||
|             this.showKeyboard = CoreNavigator.getRouteBooleanParam('showKeyboard', { params }) || false; | ||||
|         this.conversationId = CoreNavigator.getRouteNumberParam('conversationId'); | ||||
|         this.userId = CoreNavigator.getRouteNumberParam('userId'); | ||||
|         this.showInfo = !CoreNavigator.getRouteBooleanParam('hideInfo'); | ||||
|         this.showKeyboard = !!CoreNavigator.getRouteBooleanParam('showKeyboard'); | ||||
| 
 | ||||
|         await this.fetchData(); | ||||
| 
 | ||||
|             this.scrollToBottom(forceScrollToBottom); | ||||
|         }); | ||||
|         this.scrollToBottom(true); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
| @ -1265,7 +1251,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView | ||||
|             }); | ||||
| 
 | ||||
|             if (userId !== undefined) { | ||||
|                 const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/**/discussion'); | ||||
|                 const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/**/discussion/**'); | ||||
| 
 | ||||
|                 // Open user conversation.
 | ||||
|                 if (splitViewLoaded) { | ||||
| @ -1277,7 +1263,7 @@ export class AddonMessagesDiscussionPage implements OnInit, OnDestroy, AfterView | ||||
|                     ); | ||||
|                 } else { | ||||
|                     // Open the discussion in a new view.
 | ||||
|                     CoreNavigator.navigateToSitePath('/messages/discussion', { params: { userId } }); | ||||
|                     CoreNavigator.navigateToSitePath(`/messages/discussion/user/${userId}`); | ||||
|                 } | ||||
|             } | ||||
|         } else { | ||||
|  | ||||
| @ -16,7 +16,7 @@ import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| import { conditionalRoutes } from '@/app/app-routing.module'; | ||||
| import { AddonMessagesDiscussionRoute } from '@addons/messages/messages-lazy.module'; | ||||
| import { DISCUSSION_ROUTES } from '@addons/messages/messages-lazy.module'; | ||||
| 
 | ||||
| import { CoreSharedModule } from '@/core/shared.module'; | ||||
| import { CoreSearchComponentsModule } from '@features/search/components/components.module'; | ||||
| @ -33,7 +33,7 @@ const mobileRoutes: Routes = [ | ||||
|         }, | ||||
|         component: AddonMessagesDiscussions35Page, | ||||
|     }, | ||||
|     AddonMessagesDiscussionRoute, | ||||
|     ...DISCUSSION_ROUTES, | ||||
| ]; | ||||
| 
 | ||||
| const tabletRoutes: Routes = [ | ||||
| @ -43,9 +43,7 @@ const tabletRoutes: Routes = [ | ||||
|             mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME, | ||||
|         }, | ||||
|         component: AddonMessagesDiscussions35Page, | ||||
|         children: [ | ||||
|             AddonMessagesDiscussionRoute, | ||||
|         ], | ||||
|         children: DISCUSSION_ROUTES, | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|  | ||||
| @ -257,16 +257,13 @@ export class AddonMessagesDiscussions35Page implements OnInit, OnDestroy { | ||||
|     async gotoDiscussion(discussionUserId: number, messageId?: number): Promise<void> { | ||||
|         this.discussionUserId = discussionUserId; | ||||
| 
 | ||||
|         const params: Params = { | ||||
|             userId: discussionUserId, | ||||
|         }; | ||||
|         const params: Params = {}; | ||||
| 
 | ||||
|         if (messageId) { | ||||
|             params.message = messageId; | ||||
|         } | ||||
| 
 | ||||
|         const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/index/discussion'); | ||||
|         const path = (splitViewLoaded ? '../' : '') + 'discussion'; | ||||
|         const path = CoreNavigator.getRelativePathToParent('/messages/index') + `discussion/user/${discussionUserId}`; | ||||
| 
 | ||||
|         await CoreNavigator.navigate(path, { params }); | ||||
|     } | ||||
|  | ||||
| @ -15,7 +15,7 @@ | ||||
| import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
| import { conditionalRoutes } from '@/app/app-routing.module'; | ||||
| import { AddonMessagesDiscussionRoute } from '@addons/messages/messages-lazy.module'; | ||||
| import { DISCUSSION_ROUTES } from '@addons/messages/messages-lazy.module'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| 
 | ||||
| import { CoreSharedModule } from '@/core/shared.module'; | ||||
| @ -32,7 +32,7 @@ const mobileRoutes: Routes = [ | ||||
|         }, | ||||
|         component: AddonMessagesGroupConversationsPage, | ||||
|     }, | ||||
|     AddonMessagesDiscussionRoute, | ||||
|     ...DISCUSSION_ROUTES, | ||||
| ]; | ||||
| 
 | ||||
| const tabletRoutes: Routes = [ | ||||
| @ -42,9 +42,7 @@ const tabletRoutes: Routes = [ | ||||
|             mainMenuTabRoot: AddonMessagesMainMenuHandlerService.PAGE_NAME, | ||||
|         }, | ||||
|         component: AddonMessagesGroupConversationsPage, | ||||
|         children: [ | ||||
|             AddonMessagesDiscussionRoute, | ||||
|         ], | ||||
|         children: DISCUSSION_ROUTES, | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|  | ||||
| @ -519,18 +519,12 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy { | ||||
|         this.selectedUserId = userId; | ||||
| 
 | ||||
|         const params: Params = {}; | ||||
|         if (conversationId) { | ||||
|             params.conversationId = conversationId; | ||||
|         } | ||||
|         if (userId) { | ||||
|             params.userId = userId; | ||||
|         } | ||||
|         if (messageId) { | ||||
|             params.message = messageId; | ||||
|         } | ||||
| 
 | ||||
|         const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/group-conversations/discussion'); | ||||
|         const path = (splitViewLoaded ? '../' : '') + 'discussion'; | ||||
|         const path = CoreNavigator.getRelativePathToParent('/messages/group-conversations') + 'discussion/' + | ||||
|             (conversationId ? conversationId : `user/${userId}`); | ||||
| 
 | ||||
|         await CoreNavigator.navigate(path, { params }); | ||||
|     } | ||||
| @ -539,7 +533,7 @@ export class AddonMessagesGroupConversationsPage implements OnInit, OnDestroy { | ||||
|      * Navigate to message settings. | ||||
|      */ | ||||
|     gotoSettings(): void { | ||||
|         CoreNavigator.navigateToSitePath('../message-settings'); | ||||
|         CoreNavigator.navigateToSitePath('message-settings'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
| @ -16,7 +16,7 @@ import { NgModule } from '@angular/core'; | ||||
| import { RouterModule, Routes } from '@angular/router'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| import { conditionalRoutes } from '@/app/app-routing.module'; | ||||
| import { AddonMessagesDiscussionRoute } from '@addons/messages/messages-lazy.module'; | ||||
| import { DISCUSSION_ROUTES } from '@addons/messages/messages-lazy.module'; | ||||
| 
 | ||||
| import { CoreSharedModule } from '@/core/shared.module'; | ||||
| import { CoreSearchComponentsModule } from '@features/search/components/components.module'; | ||||
| @ -28,16 +28,14 @@ const mobileRoutes: Routes = [ | ||||
|         path: '', | ||||
|         component: AddonMessagesSearchPage, | ||||
|     }, | ||||
|     AddonMessagesDiscussionRoute, | ||||
|     ...DISCUSSION_ROUTES, | ||||
| ]; | ||||
| 
 | ||||
| const tabletRoutes: Routes = [ | ||||
|     { | ||||
|         path: '', | ||||
|         component: AddonMessagesSearchPage, | ||||
|         children: [ | ||||
|             AddonMessagesDiscussionRoute, | ||||
|         ], | ||||
|         children: DISCUSSION_ROUTES, | ||||
|     }, | ||||
| ]; | ||||
| 
 | ||||
|  | ||||
| @ -24,7 +24,6 @@ import { | ||||
| import { CoreDomUtils } from '@services/utils/dom'; | ||||
| import { CoreApp } from '@services/app'; | ||||
| import { CoreNavigator } from '@services/navigator'; | ||||
| import { Params } from '@angular/router'; | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| 
 | ||||
| /** | ||||
| @ -107,9 +106,9 @@ export class AddonMessagesSearchPage implements OnDestroy { | ||||
|         this.displayResults = false; | ||||
| 
 | ||||
|         // Empty details.
 | ||||
|         const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/search/discussion'); | ||||
|         if (splitViewLoaded) { | ||||
|             CoreNavigator.navigate('../'); | ||||
|         const path = CoreNavigator.getRelativePathToParent('/messages/search'); | ||||
|         if (path) { | ||||
|             CoreNavigator.navigate(path); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| @ -250,16 +249,18 @@ export class AddonMessagesSearchPage implements OnDestroy { | ||||
|         if (!onInit || CoreScreen.isTablet) { | ||||
|             this.selectedResult = result; | ||||
| 
 | ||||
|             const params: Params = {}; | ||||
|             let conversationId: number | undefined; | ||||
|             let userId: number | undefined; | ||||
|             if ('conversationid' in result) { | ||||
|                 params.conversationId = result.conversationid; | ||||
|                 conversationId = result.conversationid; | ||||
|             } else { | ||||
|                 params.userId = result.id; | ||||
|                 userId = result.id; | ||||
|             } | ||||
| 
 | ||||
|             const splitViewLoaded = CoreNavigator.isCurrentPathInTablet('**/messages/search/discussion'); | ||||
|             const path = (splitViewLoaded ? '../' : '') + 'discussion'; | ||||
|             CoreNavigator.navigate(path, { params }); | ||||
|             const path = CoreNavigator.getRelativePathToParent('/messages/search') + 'discussion/' + | ||||
|                 (conversationId ? conversationId : `user/${userId}`); | ||||
| 
 | ||||
|             CoreNavigator.navigate(path); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -46,10 +46,8 @@ export class AddonMessagesDiscussionLinkHandlerService extends CoreContentLinksH | ||||
|     ): CoreContentLinksAction[] | Promise<CoreContentLinksAction[]> { | ||||
|         return [{ | ||||
|             action: (siteId): void => { | ||||
|                 const stateParams = { | ||||
|                     userId: parseInt(params.id || params.user2, 10), | ||||
|                 }; | ||||
|                 CoreNavigator.navigateToSitePath('/messages/discussion', { params: stateParams, siteId }); | ||||
|                 const userId = parseInt(params.id || params.user2, 10); | ||||
|                 CoreNavigator.navigateToSitePath(`/messages/discussion/user/${userId}`, { siteId }); | ||||
|             }, | ||||
|         }]; | ||||
|     } | ||||
|  | ||||
| @ -13,7 +13,6 @@ | ||||
| // limitations under the License.
 | ||||
| 
 | ||||
| import { Injectable } from '@angular/core'; | ||||
| import { Params } from '@angular/router'; | ||||
| import { CorePushNotificationsClickHandler } from '@features/pushnotifications/services/push-delegate'; | ||||
| import { CorePushNotificationsNotificationBasicData } from '@features/pushnotifications/services/pushnotifications'; | ||||
| import { CoreNavigator } from '@services/navigator'; | ||||
| @ -63,28 +62,22 @@ export class AddonMessagesPushClickHandlerService implements CorePushNotificatio | ||||
|         // Check if group messaging is enabled, to determine which page should be loaded.
 | ||||
|         const enabled = await AddonMessages.isGroupMessagingEnabledInSite(notification.site); | ||||
| 
 | ||||
|         let nextPageParams: Params | undefined; | ||||
|         let conversationId: number | undefined; | ||||
|         let userId: number | undefined; | ||||
| 
 | ||||
|         // Check if we have enough information to open the conversation.
 | ||||
|         if (notification.convid && enabled) { | ||||
|             nextPageParams = { | ||||
|                 conversationId: Number(notification.convid), | ||||
|             }; | ||||
|             conversationId = Number(notification.convid); | ||||
|         } else if (notification.userfromid) { | ||||
|             nextPageParams = { | ||||
|                 userId: Number(notification.userfromid), | ||||
|             }; | ||||
|             userId = Number(notification.userfromid); | ||||
|         } | ||||
| 
 | ||||
|         await CoreNavigator.navigateToSitePath(AddonMessagesMainMenuHandlerService.PAGE_NAME, { | ||||
|             siteId: notification.site, | ||||
|             preferCurrentTab: false, | ||||
|             nextNavigation: nextPageParams ? | ||||
|                 { | ||||
|                     path: 'discussion', | ||||
|                     options: { params: nextPageParams }, | ||||
|                 } : | ||||
|                 undefined, | ||||
|             nextNavigation: conversationId ? | ||||
|                 { path: `discussion/${conversationId}` } : | ||||
|                 (userId ? { path: `discussion/user/${userId}` } : undefined), | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
| @ -71,10 +71,9 @@ export class AddonMessagesSendMessageUserHandlerService implements CoreUserProfi | ||||
| 
 | ||||
|                 const pageParams: Params = { | ||||
|                     showKeyboard: true, | ||||
|                     userId: user.id, | ||||
|                     hideInfo: true, | ||||
|                 }; | ||||
|                 CoreNavigator.navigateToSitePath('/messages/discussion', { params: pageParams }); | ||||
|                 CoreNavigator.navigateToSitePath(`/messages/discussion/user/${user.id}`, { params: pageParams }); | ||||
|             }, | ||||
|         }; | ||||
|     } | ||||
|  | ||||
| @ -700,6 +700,29 @@ export class CoreNavigatorService { | ||||
|         return promise; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Get the relative path to a parent path. | ||||
|      * E.g. if parent path is '/foo' and current path is '/foo/bar/baz' it will return '../../'. | ||||
|      * | ||||
|      * @param parentPath Parent path. | ||||
|      * @return Relative path to the parent, empty if same path or parent path not found. | ||||
|      * @todo If messaging is refactored to use list managers, this function might not be needed anymore. | ||||
|      */ | ||||
|     getRelativePathToParent(parentPath: string): string { | ||||
|         // Add an ending slash to avoid collisions with other routes (e.g. /foo and /foobar).
 | ||||
|         parentPath = CoreTextUtils.addEndingSlash(parentPath); | ||||
| 
 | ||||
|         const path = this.getCurrentPath(); | ||||
|         const parentRouteIndex = path.indexOf(parentPath); | ||||
|         if (parentRouteIndex === -1) { | ||||
|             return ''; | ||||
|         } | ||||
| 
 | ||||
|         const depth = (path.substring(parentRouteIndex + parentPath.length - 1).match(/\//g) ?? []).length; | ||||
| 
 | ||||
|         return '../'.repeat(depth); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| export const CoreNavigator = makeSingleton(CoreNavigatorService); | ||||
|  | ||||
| @ -14,7 +14,7 @@ | ||||
| 
 | ||||
| import { NavController as NavControllerService } from '@ionic/angular'; | ||||
| 
 | ||||
| import { mockSingleton } from '@/testing/utils'; | ||||
| import { mock, mockSingleton } from '@/testing/utils'; | ||||
| 
 | ||||
| import { CoreNavigatorService } from '@services/navigator'; | ||||
| import { NavController, Router } from '@singletons'; | ||||
| @ -156,6 +156,22 @@ describe('CoreNavigator', () => { | ||||
|         expect(navControllerMock.navigateRoot).toHaveBeenCalledWith(['/main/initialpage'], {}); | ||||
|     }); | ||||
| 
 | ||||
|     it('calculates relative paths to parent paths', () => { | ||||
|         navigator = mock(navigator, { | ||||
|             getCurrentPath: () => '/foo/bar/baz/xyz', | ||||
|         }); | ||||
| 
 | ||||
|         expect(navigator.getRelativePathToParent('/foo/bar/baz/xyz')).toEqual(''); | ||||
|         expect(navigator.getRelativePathToParent('/foo/bar/baz')).toEqual('../'); | ||||
|         expect(navigator.getRelativePathToParent('/foo/bar')).toEqual('../../'); | ||||
|         expect(navigator.getRelativePathToParent('/bar')).toEqual('../../'); | ||||
|         expect(navigator.getRelativePathToParent('/foo')).toEqual('../../../'); | ||||
|         expect(navigator.getRelativePathToParent('/foo/')).toEqual('../../../'); | ||||
|         expect(navigator.getRelativePathToParent('foo')).toEqual('../../../'); | ||||
|         expect(navigator.getRelativePathToParent('/invalid')).toEqual(''); | ||||
|         expect(navigator.getRelativePathToParent('/fo')).toEqual(''); | ||||
|     }); | ||||
| 
 | ||||
|     it.todo('navigates to a different site'); | ||||
|     it.todo('navigates to login credentials'); | ||||
|     it.todo('navigates to NO_SITE_ID site'); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user