forked from EVOgeek/Vmeda.Online
		
	MOBILE-3643 forum: Fix discussion-link handler
This commit is contained in:
		
							parent
							
								
									5d39d8efc9
								
							
						
					
					
						commit
						05ae8ada14
					
				| @ -49,6 +49,7 @@ import { AddonModForumSortOrderSelectorComponent } from '../sort-order-selector/ | ||||
| import { CoreScreen } from '@services/screen'; | ||||
| import { CoreArray } from '@singletons/array'; | ||||
| import { AddonModForumPrefetchHandler } from '../../services/handlers/prefetch'; | ||||
| import { AddonModForumModuleHandlerService } from '../../services/handlers/module'; | ||||
| 
 | ||||
| /** | ||||
|  * Component that displays a forum entry page. | ||||
| @ -101,7 +102,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom | ||||
|         this.discussions = new AddonModForumDiscussionsManager( | ||||
|             route.component, | ||||
|             this, | ||||
|             courseContentsPage ? 'mod_forum/' : '', | ||||
|             courseContentsPage ? `${AddonModForumModuleHandlerService.PAGE_NAME}/` : '', | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
| @ -784,7 +785,7 @@ class AddonModForumDiscussionsManager extends CorePageItemsListManager<Discussio | ||||
|     protected getItemPath(discussion: DiscussionItem): string { | ||||
|         const getRelativePath = () => { | ||||
|             if (this.isOnlineDiscussion(discussion)) { | ||||
|                 return discussion.id; | ||||
|                 return discussion.discussion; | ||||
|             } | ||||
| 
 | ||||
|             if (this.isOfflineDiscussion(discussion)) { | ||||
|  | ||||
| @ -40,6 +40,10 @@ import { CorePushNotificationsDelegate } from '@features/pushnotifications/servi | ||||
| import { AddonModForumPushClickHandler } from './services/handlers/push-click'; | ||||
| 
 | ||||
| const mainMenuRoutes: Routes = [ | ||||
|     { | ||||
|         path: `${AddonModForumModuleHandlerService.PAGE_NAME}/discussion/:discussionId`, | ||||
|         loadChildren: () => import('./pages/discussion/discussion.module').then(m => m.AddonForumDiscussionPageModule), | ||||
|     }, | ||||
|     { | ||||
|         path: AddonModForumModuleHandlerService.PAGE_NAME, | ||||
|         loadChildren: () => import('./forum-lazy.module').then(m => m.AddonModForumLazyModule), | ||||
| @ -47,12 +51,12 @@ const mainMenuRoutes: Routes = [ | ||||
|     ...conditionalRoutes( | ||||
|         [ | ||||
|             { | ||||
|                 path: 'course/index/contents/mod_forum/new/:timeCreated', | ||||
|                 path: `course/index/contents/${AddonModForumModuleHandlerService.PAGE_NAME}/new/:timeCreated`, | ||||
|                 loadChildren: () => import('./pages/new-discussion/new-discussion.module') | ||||
|                     .then(m => m.AddonForumNewDiscussionPageModule), | ||||
|             }, | ||||
|             { | ||||
|                 path: 'course/index/contents/mod_forum/:discussionId', | ||||
|                 path: `course/index/contents/${AddonModForumModuleHandlerService.PAGE_NAME}/:discussionId`, | ||||
|                 loadChildren: () => import('./pages/discussion/discussion.module').then(m => m.AddonForumDiscussionPageModule), | ||||
|             }, | ||||
|         ], | ||||
| @ -63,12 +67,12 @@ const mainMenuRoutes: Routes = [ | ||||
| const courseContentsRoutes: Routes = conditionalRoutes( | ||||
|     [ | ||||
|         { | ||||
|             path: 'mod_forum/new/:timeCreated', | ||||
|             path: `${AddonModForumModuleHandlerService.PAGE_NAME}/new/:timeCreated`, | ||||
|             loadChildren: () => import('./pages/new-discussion/new-discussion.module') | ||||
|                 .then(m => m.AddonForumNewDiscussionPageModule), | ||||
|         }, | ||||
|         { | ||||
|             path: 'mod_forum/:discussionId', | ||||
|             path: `${AddonModForumModuleHandlerService.PAGE_NAME}/:discussionId`, | ||||
|             loadChildren: () => import('./pages/discussion/discussion.module').then(m => m.AddonForumDiscussionPageModule), | ||||
|         }, | ||||
|     ], | ||||
|  | ||||
| @ -163,12 +163,17 @@ export class AddonModForumDiscussionPage implements OnInit, AfterViewInit, OnDes | ||||
|     /** | ||||
|      * User entered the page that contains the component. | ||||
|      */ | ||||
|     ionViewDidEnter(): void { | ||||
|     async ionViewDidEnter(): Promise<void> { | ||||
|         if (this.syncObserver) { | ||||
|             // Already setup.
 | ||||
|             return; | ||||
|         } | ||||
| 
 | ||||
|         // The discussion object was not passed as parameter.
 | ||||
|         if (!this.discussion) { | ||||
|             await this.loadDiscussion(this.forumId, this.cmId, this.discussionId); | ||||
|         } | ||||
| 
 | ||||
|         // Refresh data if this discussion is synchronized automatically.
 | ||||
|         this.syncObserver = CoreEvents.on(AddonModForumSyncProvider.AUTO_SYNCED, data => { | ||||
|             if (data.forumId == this.forumId && this.discussionId == data.discussionId | ||||
| @ -432,7 +437,7 @@ export class AddonModForumDiscussionPage implements OnInit, AfterViewInit, OnDes | ||||
|                         }), | ||||
|                 ); | ||||
| 
 | ||||
|                 // The discussion object was not passed as parameter and there is no starting post. Should not happen.
 | ||||
|                 // The discussion object was not passed as parameter and there is no starting post.
 | ||||
|                 if (!this.discussion) { | ||||
|                     promises.push(this.loadDiscussion(this.forumId, this.cmId, this.discussionId)); | ||||
|                 } | ||||
|  | ||||
| @ -54,11 +54,12 @@ export class AddonModForumDiscussionLinkHandlerService extends CoreContentLinksH | ||||
| 
 | ||||
|         return [{ | ||||
|             action: (siteId): void => { | ||||
|                 const cmId = data.cmid && parseInt(data.cmid, 10); | ||||
|                 const discussionId = parseInt(params.d, 10); | ||||
|                 const pageParams: Params = { forumId: data.instance && parseInt(data.instance, 10) }; | ||||
| 
 | ||||
|                 courseId = courseId || parseInt(params.courseid, 10) || parseInt(params.cid, 10); | ||||
|                 const pageParams: Params = { | ||||
|                     forumId: data.instance && parseInt(data.instance, 10), | ||||
|                     cmId: data.cmid && parseInt(data.cmid, 10), | ||||
|                     courseId: courseId || parseInt(params.courseid, 10) || parseInt(params.cid, 10), | ||||
|                 }; | ||||
| 
 | ||||
|                 if (data.postid || params.urlHash) { | ||||
|                     pageParams.postId = parseInt(data.postid || params.urlHash.replace('p', '')); | ||||
| @ -69,7 +70,7 @@ export class AddonModForumDiscussionLinkHandlerService extends CoreContentLinksH | ||||
|                 } | ||||
| 
 | ||||
|                 CoreNavigator.instance.navigateToSitePath( | ||||
|                     `${AddonModForumModuleHandlerService.PAGE_NAME}/${courseId}/${cmId}/${discussionId}`, | ||||
|                     `${AddonModForumModuleHandlerService.PAGE_NAME}/discussion/${discussionId}`, | ||||
|                     { siteId, params: pageParams }, | ||||
|                 ); | ||||
|             }, | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user