MOBILE-3230 forum: Use nested children in a discussion when calculating parent subjects
parent
9ebf923964
commit
8af17d2cf7
|
@ -33,6 +33,8 @@ import { AddonModForumSyncProvider } from '../../providers/sync';
|
|||
|
||||
type SortType = 'flat-newest' | 'flat-oldest' | 'nested';
|
||||
|
||||
type Post = any & { children?: Post[]; };
|
||||
|
||||
/**
|
||||
* Page that displays a forum discussion.
|
||||
*/
|
||||
|
@ -391,7 +393,7 @@ export class AddonModForumDiscussionPage implements OnDestroy {
|
|||
|
||||
this.posts = posts;
|
||||
this.ratingInfo = ratingInfo;
|
||||
this.postSubjects = this.posts.reduce((postSubjects, post) => {
|
||||
this.postSubjects = this.getAllPosts().reduce((postSubjects, post) => {
|
||||
postSubjects[post.id] = post.subject;
|
||||
|
||||
return postSubjects;
|
||||
|
@ -651,4 +653,31 @@ export class AddonModForumDiscussionPage implements OnDestroy {
|
|||
ngOnDestroy(): void {
|
||||
this.onlineObserver && this.onlineObserver.unsubscribe();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all the posts contained in the discussion.
|
||||
*
|
||||
* @return Array containing all the posts of the discussion.
|
||||
*/
|
||||
protected getAllPosts(): Post[] {
|
||||
return [].concat(...this.posts.map(this.flattenPostHierarchy.bind(this)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Flatten a post's hierarchy into an array.
|
||||
*
|
||||
* @param parent Parent post.
|
||||
* @return Array containing all the posts within the hierarchy (including the parent).
|
||||
*/
|
||||
protected flattenPostHierarchy(parent: Post): Post[] {
|
||||
const posts = [parent];
|
||||
const children = parent.children || [];
|
||||
|
||||
for (const child of children) {
|
||||
posts.push(...this.flattenPostHierarchy(child));
|
||||
}
|
||||
|
||||
return posts;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue