@@ -2,6 +2,7 @@ import { assertNever, getErrorMessage } from "../../common/helpers-pure";
22import type {
33 DatabaseInfo ,
44 EditorSelection ,
5+ FileFilteredResults ,
56 Interpretation ,
67 IntoResultsViewMsg ,
78 SortedResultSetInfo ,
@@ -69,6 +70,7 @@ interface ResultsViewState {
6970 selectionFilterEnabled : boolean ;
7071 editorSelection : EditorSelection | undefined ;
7172 selectedTable : string | undefined ;
73+ fileFilteredResults : FileFilteredResults | undefined ;
7274}
7375
7476/**
@@ -86,12 +88,33 @@ export function ResultsApp() {
8688 selectionFilterEnabled : false ,
8789 editorSelection : undefined ,
8890 selectedTable : undefined ,
91+ fileFilteredResults : undefined ,
8992 } ) ;
9093
9194 const [ userSettings , setUserSettings ] = useState < UserSettings > (
9295 DEFAULT_USER_SETTINGS ,
9396 ) ;
9497
98+ useEffect ( ( ) => {
99+ if (
100+ state . selectionFilterEnabled &&
101+ state . editorSelection ?. fileUri != null &&
102+ state . selectedTable != null &&
103+ state . fileFilteredResults == null
104+ ) {
105+ vscode . postMessage ( {
106+ t : "requestFileFilteredResults" ,
107+ fileUri : state . editorSelection . fileUri ,
108+ selectedTable : state . selectedTable ,
109+ } ) ;
110+ }
111+ } , [
112+ state . selectionFilterEnabled ,
113+ state . editorSelection ?. fileUri ,
114+ state . selectedTable ,
115+ state . fileFilteredResults ,
116+ ] ) ;
117+
95118 const [ problemsViewSelected , setProblemsViewSelected ] = useState ( false ) ;
96119
97120 const onSelectedTableChange = useCallback ( ( tableName : string ) => {
@@ -100,6 +123,7 @@ export function ResultsApp() {
100123 return {
101124 ...prev ,
102125 selectedTable : tableName ,
126+ fileFilteredResults : undefined , // Discard stale results (they are from another table)
103127 } ;
104128 } ) ;
105129 } , [ ] ) ;
@@ -238,11 +262,30 @@ export function ResultsApp() {
238262 return {
239263 ...prev ,
240264 editorSelection : selection ,
265+ fileFilteredResults :
266+ selection . fileUri === prev . editorSelection ?. fileUri
267+ ? prev . fileFilteredResults
268+ : undefined , // Discard stale results (they are from another file)
241269 } ;
242270 } ) ;
243271 }
244272 break ;
245273
274+ case "setFileFilteredResults" : {
275+ const results = msg . results ;
276+ setState ( ( prev ) => {
277+ if (
278+ results . fileUri === prev . editorSelection ?. fileUri &&
279+ results . selectedTable === prev . selectedTable &&
280+ prev . fileFilteredResults === undefined
281+ ) {
282+ return { ...prev , fileFilteredResults : results } ;
283+ }
284+ return prev ;
285+ } ) ;
286+ break ;
287+ }
288+
246289 default :
247290 assertNever ( msg ) ;
248291 }
0 commit comments