11/* eslint-disable no-useless-catch */
22
33import concat from "lodash/concat" ;
4+ import orderBy from "lodash/orderBy" ;
45import set from "lodash/set" ;
5- import sortBy from "lodash/sortBy" ;
66import uniq from "lodash/uniq" ;
77import update from "lodash/update" ;
88import { action , makeObservable , observable , runInAction } from "mobx" ;
@@ -29,17 +29,20 @@ export interface IIssueActivityStoreActions {
2929
3030export interface IIssueActivityStore extends IIssueActivityStoreActions {
3131 // observables
32+ sortOrder : 'asc' | 'desc'
3233 loader : TActivityLoader ;
3334 activities : TIssueActivityIdMap ;
3435 activityMap : TIssueActivityMap ;
3536 // helper methods
3637 getActivitiesByIssueId : ( issueId : string ) => string [ ] | undefined ;
3738 getActivityById : ( activityId : string ) => TIssueActivity | undefined ;
3839 getActivityCommentByIssueId : ( issueId : string ) => TIssueActivityComment [ ] | undefined ;
40+ toggleSortOrder : ( ) => void ;
3941}
4042
4143export class IssueActivityStore implements IIssueActivityStore {
4244 // observables
45+ sortOrder : "asc" | "desc" = 'asc' ;
4346 loader : TActivityLoader = "fetch" ;
4447 activities : TIssueActivityIdMap = { } ;
4548 activityMap : TIssueActivityMap = { } ;
@@ -50,11 +53,13 @@ export class IssueActivityStore implements IIssueActivityStore {
5053 constructor ( protected store : CoreRootStore ) {
5154 makeObservable ( this , {
5255 // observables
56+ sortOrder : observable . ref ,
5357 loader : observable . ref ,
5458 activities : observable ,
5559 activityMap : observable ,
5660 // actions
5761 fetchActivities : action ,
62+ toggleSortOrder : action
5863 } ) ;
5964 // services
6065 this . issueActivityService = new IssueActivityService ( ) ;
@@ -99,11 +104,15 @@ export class IssueActivityStore implements IIssueActivityStore {
99104 } ) ;
100105 } ) ;
101106
102- activityComments = sortBy ( activityComments , " created_at" ) ;
107+ activityComments = orderBy ( activityComments , ( e ) => new Date ( e . created_at || 0 ) , this . sortOrder ) ;
103108
104109 return activityComments ;
105110 } ) ;
106111
112+ toggleSortOrder = ( ) => {
113+ this . sortOrder = this . sortOrder === 'asc' ? 'desc' : 'asc' ;
114+ }
115+
107116 // actions
108117 public async fetchActivities (
109118 workspaceSlug : string ,
0 commit comments