@@ -2,6 +2,7 @@ import { IssuesData } from "../components/issues/IssuesList";
22import { Settings } from "../provider/SettingsProvider" ;
33import { TIssue , TIssuePriority , TReference , TVersion } from "../types/redmine" ;
44
5+ type GroupId = "active-tab" | "active" | "paused" | `${number } `;
56type GroupType = "pinned" | "version" | "no-version" ;
67
78type IssueGroup = {
@@ -11,7 +12,7 @@ type IssueGroup = {
1112} ;
1213
1314type GroupedIssues = {
14- type : string ;
15+ id : GroupId ;
1516 project ?: TReference ;
1617 versions : TVersion [ ] ;
1718 groups : {
@@ -24,7 +25,7 @@ type GroupedIssues = {
2425type GroupedIssuesHelper = Record <
2526 number | string ,
2627 {
27- type : string ;
28+ id : GroupId ;
2829 // The project reference
2930 project ?: TReference ;
3031 // Pinned issues
@@ -72,13 +73,36 @@ export const getSortedIssues = (issues: TIssue[], issuePriorities: TIssuePriorit
7273 * - group pinned issues
7374 * - group issues by version
7475 */
75- export const getGroupedIssues = ( issues : TIssue [ ] , projectVersions : Record < number , TVersion [ ] > , issuesData : IssuesData , settings : Settings ) : GroupedIssues => {
76+ export const getGroupedIssues = ( {
77+ issues,
78+ projectVersions,
79+ issuesData,
80+ settings,
81+ activeTabIssueId,
82+ } : {
83+ issues : TIssue [ ] ;
84+ projectVersions : Record < number , TVersion [ ] > ;
85+ issuesData : IssuesData ;
86+ settings : Settings ;
87+ activeTabIssueId ?: number ;
88+ } ) : GroupedIssues => {
7689 const grouped = issues . reduce ( ( result : GroupedIssuesHelper , issue ) => {
90+ if ( settings . style . pinActiveTabIssue && activeTabIssueId && issue . id === activeTabIssueId ) {
91+ result [ "active-tab" ] = {
92+ id : "active-tab" ,
93+ pinnedIssues : [ ] ,
94+ versions : { } ,
95+ issues : [ issue ] ,
96+ sort : - 3 ,
97+ } ;
98+ return result ;
99+ }
100+
77101 if ( settings . style . pinTrackedIssues ) {
78102 if ( issuesData [ issue . id ] ?. active ) {
79103 if ( ! ( "active" in result ) ) {
80104 result [ "active" ] = {
81- type : "active" ,
105+ id : "active" ,
82106 pinnedIssues : [ ] ,
83107 versions : { } ,
84108 issues : [ ] ,
@@ -93,7 +117,7 @@ export const getGroupedIssues = (issues: TIssue[], projectVersions: Record<numbe
93117 if ( issuesData [ issue . id ] ?. time ) {
94118 if ( ! ( "paused" in result ) ) {
95119 result [ "paused" ] = {
96- type : "paused" ,
120+ id : "paused" ,
97121 pinnedIssues : [ ] ,
98122 versions : { } ,
99123 issues : [ ] ,
@@ -108,7 +132,7 @@ export const getGroupedIssues = (issues: TIssue[], projectVersions: Record<numbe
108132
109133 if ( ! ( issue . project . id in result ) ) {
110134 result [ issue . project . id ] = {
111- type : issue . project . id . toString ( ) ,
135+ id : issue . project . id . toString ( ) as GroupId ,
112136 project : issue . project ,
113137 pinnedIssues : [ ] ,
114138 versions : { } ,
@@ -149,9 +173,9 @@ export const getGroupedIssues = (issues: TIssue[], projectVersions: Record<numbe
149173
150174 return Object . values ( grouped )
151175 . sort ( ( a , b ) => a . sort - b . sort )
152- . map ( ( { type , project, pinnedIssues, versions, issues } ) => ( {
153- type ,
154- project : project ,
176+ . map ( ( { id , project, pinnedIssues, versions, issues } ) => ( {
177+ id ,
178+ project,
155179 versions : ( project ? projectVersions [ project . id ] : undefined ) ?? [ ] ,
156180 groups : [
157181 ...( pinnedIssues . length > 0
0 commit comments