@@ -10,9 +10,10 @@ import {
1010} from "vscode" ;
1111import { DisposableObject } from "../common/disposable-object" ;
1212import { assertNever } from "../common/helpers-pure" ;
13- import { QueryHistoryInfo } from "./query-history-info" ;
13+ import { getLanguage , QueryHistoryInfo } from "./query-history-info" ;
1414import { QueryStatus } from "./query-status" ;
1515import { HistoryItemLabelProvider } from "./history-item-label-provider" ;
16+ import { LanguageContextStore } from "../language-context-store" ;
1617
1718export enum SortOrder {
1819 NameAsc = "NameAsc" ,
@@ -50,7 +51,10 @@ export class HistoryTreeDataProvider
5051
5152 private current : QueryHistoryInfo | undefined ;
5253
53- constructor ( private readonly labelProvider : HistoryItemLabelProvider ) {
54+ constructor (
55+ private readonly labelProvider : HistoryItemLabelProvider ,
56+ private readonly languageContext : LanguageContextStore ,
57+ ) {
5458 super ( ) ;
5559 }
5660
@@ -127,51 +131,55 @@ export class HistoryTreeDataProvider
127131 getChildren ( element ?: QueryHistoryInfo ) : ProviderResult < QueryHistoryInfo [ ] > {
128132 return element
129133 ? [ ]
130- : this . history . sort ( ( h1 , h2 ) => {
131- const h1Label = this . labelProvider . getLabel ( h1 ) . toLowerCase ( ) ;
132- const h2Label = this . labelProvider . getLabel ( h2 ) . toLowerCase ( ) ;
133-
134- const h1Date = this . getItemDate ( h1 ) ;
135-
136- const h2Date = this . getItemDate ( h2 ) ;
137-
138- const resultCount1 =
139- h1 . t === "local"
140- ? h1 . completedQuery ?. resultCount ?? - 1
141- : h1 . resultCount ?? - 1 ;
142- const resultCount2 =
143- h2 . t === "local"
144- ? h2 . completedQuery ?. resultCount ?? - 1
145- : h2 . resultCount ?? - 1 ;
146-
147- switch ( this . sortOrder ) {
148- case SortOrder . NameAsc :
149- return h1Label . localeCompare ( h2Label , env . language ) ;
150-
151- case SortOrder . NameDesc :
152- return h2Label . localeCompare ( h1Label , env . language ) ;
153-
154- case SortOrder . DateAsc :
155- return h1Date - h2Date ;
156-
157- case SortOrder . DateDesc :
158- return h2Date - h1Date ;
159-
160- case SortOrder . CountAsc :
161- // If the result counts are equal, sort by name.
162- return resultCount1 - resultCount2 === 0
163- ? h1Label . localeCompare ( h2Label , env . language )
164- : resultCount1 - resultCount2 ;
165-
166- case SortOrder . CountDesc :
167- // If the result counts are equal, sort by name.
168- return resultCount2 - resultCount1 === 0
169- ? h2Label . localeCompare ( h1Label , env . language )
170- : resultCount2 - resultCount1 ;
171- default :
172- assertNever ( this . sortOrder ) ;
173- }
174- } ) ;
134+ : this . history
135+ . filter ( ( h ) => {
136+ return this . languageContext . shouldInclude ( getLanguage ( h ) ) ;
137+ } )
138+ . sort ( ( h1 , h2 ) => {
139+ const h1Label = this . labelProvider . getLabel ( h1 ) . toLowerCase ( ) ;
140+ const h2Label = this . labelProvider . getLabel ( h2 ) . toLowerCase ( ) ;
141+
142+ const h1Date = this . getItemDate ( h1 ) ;
143+
144+ const h2Date = this . getItemDate ( h2 ) ;
145+
146+ const resultCount1 =
147+ h1 . t === "local"
148+ ? h1 . completedQuery ?. resultCount ?? - 1
149+ : h1 . resultCount ?? - 1 ;
150+ const resultCount2 =
151+ h2 . t === "local"
152+ ? h2 . completedQuery ?. resultCount ?? - 1
153+ : h2 . resultCount ?? - 1 ;
154+
155+ switch ( this . sortOrder ) {
156+ case SortOrder . NameAsc :
157+ return h1Label . localeCompare ( h2Label , env . language ) ;
158+
159+ case SortOrder . NameDesc :
160+ return h2Label . localeCompare ( h1Label , env . language ) ;
161+
162+ case SortOrder . DateAsc :
163+ return h1Date - h2Date ;
164+
165+ case SortOrder . DateDesc :
166+ return h2Date - h1Date ;
167+
168+ case SortOrder . CountAsc :
169+ // If the result counts are equal, sort by name.
170+ return resultCount1 - resultCount2 === 0
171+ ? h1Label . localeCompare ( h2Label , env . language )
172+ : resultCount1 - resultCount2 ;
173+
174+ case SortOrder . CountDesc :
175+ // If the result counts are equal, sort by name.
176+ return resultCount2 - resultCount1 === 0
177+ ? h2Label . localeCompare ( h1Label , env . language )
178+ : resultCount2 - resultCount1 ;
179+ default :
180+ assertNever ( this . sortOrder ) ;
181+ }
182+ } ) ;
175183 }
176184
177185 getParent ( _element : QueryHistoryInfo ) : ProviderResult < QueryHistoryInfo > {
0 commit comments