@@ -33,7 +33,7 @@ import { useSetWatchedValue } from '@/lib/events/watcher';
3333import { keyBy } from '@/lib/keyBy' ;
3434import { onClickStopPropagation } from '@/lib/onClickStopPropagation' ;
3535import { zodResolver } from '@hookform/resolvers/zod' ;
36- import { useQuery } from '@tanstack/react-query' ;
36+ import { useQuery , useQueryClient } from '@tanstack/react-query' ;
3737import { Link , useNavigate , useParams } from '@tanstack/react-router' ;
3838import { Row , VisibilityState } from '@tanstack/react-table' ;
3939import {
@@ -50,7 +50,7 @@ import {
5050 Trash2Icon ,
5151 TrashIcon ,
5252} from 'lucide-react' ;
53- import { useCallback , useMemo , useState } from 'react' ;
53+ import { useCallback , useEffect , useMemo , useState } from 'react' ;
5454import { useForm } from 'react-hook-form' ;
5555import { toast } from 'sonner' ;
5656import { ColumnFiltersSchema } from './ColumnFilters' ;
@@ -78,7 +78,7 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
7878 const canDeleteRecords = useInstanceSchemaTablePermission ( instanceId ?? clusterId , databaseName , tableName , 'delete' ) ;
7979 const canManageBrowseInstance = useInstanceBrowseManagePermission ( ) ;
8080
81- const { data : describeTableData , refetch : refetchDescribeTableQueryOptions } = useQuery (
81+ const { data : describeTableData } = useQuery (
8282 getDescribeTableQueryOptions ( {
8383 ...instanceParams ,
8484 databaseName,
@@ -125,6 +125,10 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
125125 hideFilters ( ) ;
126126 } , [ hideFilters , resetFiltersForm ] ) ;
127127
128+ useEffect ( function clearFiltersWhenParamsChange ( ) {
129+ return clearFilters ( ) ;
130+ } , [ allParams , clearFilters ] ) ;
131+
128132 const { dataTableColumns, hashAttribute } = formatBrowseDataTableHeader ( describeTableData ) ;
129133 const [ isAddModalOpen , setIsAddModalOpen ] = useState ( false ) ;
130134 const [ isImportCSVModalOpen , setIsImportCSVModalOpen ] = useState ( false ) ;
@@ -147,7 +151,6 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
147151 // Full list
148152 const {
149153 data : fullTableData ,
150- refetch : refetchSearchByValueOptions ,
151154 isFetching : tableDataFetching ,
152155 } = useQuery (
153156 getSearchByValueOptions ( {
@@ -163,7 +166,10 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
163166 } ) ,
164167 ) ;
165168 // Filtered list
166- const { data : filteredTableData } = useQuery (
169+ const {
170+ data : filteredTableData ,
171+ isFetching : tableConditionsDataFetching ,
172+ } = useQuery (
167173 getSearchByConditionsOptions ( {
168174 ...instanceParams ,
169175 enabled : useFilteredList ,
@@ -192,7 +198,13 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
192198 const { mutate : updateTableRecords , isPending : isUpdateTableRecordsPending } = useUpdateTableRecords ( ) ;
193199 const { mutate : deleteTableRecords , isPending : isDeleteTableRecordsPending } = useDeleteTableRecords ( ) ;
194200
195- const onRecordAdd = ( data : Record < string , unknown > [ ] | Record < string , unknown > ) => {
201+ const queryClient = useQueryClient ( ) ;
202+ const refreshTable = useCallback (
203+ ( ) => queryClient . invalidateQueries ( { queryKey : [ instanceParams . entityId , databaseName , tableName ] } ) ,
204+ [ queryClient , instanceParams . entityId , databaseName , tableName ] ,
205+ ) ;
206+
207+ const onRecordAdd = useCallback ( ( data : Record < string , unknown > [ ] | Record < string , unknown > ) => {
196208 addTableRecords (
197209 {
198210 ...instanceParams ,
@@ -202,15 +214,15 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
202214 } ,
203215 {
204216 onSuccess : ( ) => {
205- void refetchDescribeTableQueryOptions ( ) ;
206- void refetchSearchByValueOptions ( ) ;
217+ void refreshTable ( ) ;
207218 setIsAddModalOpen ( false ) ;
208219 toast . success ( 'Record added successfully' ) ;
209220 } ,
210221 } ,
211222 ) ;
212- } ;
213- const onRecordUpdate = ( data : Record < string , unknown > [ ] ) => {
223+ } , [ addTableRecords , instanceParams , databaseName , tableName , refreshTable ] ) ;
224+
225+ const onRecordUpdate = useCallback ( ( data : Record < string , unknown > [ ] ) => {
214226 updateTableRecords (
215227 {
216228 ...instanceParams ,
@@ -220,16 +232,15 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
220232 } ,
221233 {
222234 onSuccess : ( ) => {
223- void refetchDescribeTableQueryOptions ( ) ;
224- void refetchSearchByValueOptions ( ) ;
235+ void refreshTable ( ) ;
225236 setIsEditModalOpen ( false ) ;
226237 toast . success ( 'Record updated successfully' ) ;
227238 } ,
228239 } ,
229240 ) ;
230- } ;
241+ } , [ updateTableRecords , instanceParams , databaseName , tableName , refreshTable ] ) ;
231242
232- const onDeleteRecord = ( hashes : unknown [ ] ) => {
243+ const onDeleteRecord = useCallback ( ( hashes : unknown [ ] ) => {
233244 deleteTableRecords (
234245 {
235246 ...instanceParams ,
@@ -239,19 +250,13 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
239250 } ,
240251 {
241252 onSuccess : ( ) => {
242- void refetchDescribeTableQueryOptions ( ) ;
243- void refetchSearchByValueOptions ( ) ;
253+ void refreshTable ( ) ;
244254 setIsEditModalOpen ( false ) ;
245255 toast . success ( 'Record deleted successfully' ) ;
246256 } ,
247257 } ,
248258 ) ;
249- } ;
250-
251- const refreshTable = useCallback ( async ( ) => {
252- await refetchDescribeTableQueryOptions ( ) ;
253- await refetchSearchByValueOptions ( ) ;
254- } , [ refetchDescribeTableQueryOptions , refetchSearchByValueOptions ] ) ;
259+ } , [ deleteTableRecords , instanceParams , databaseName , tableName , refreshTable ] ) ;
255260
256261 const onCSVDataAdded = useCallback ( ( message : string ) => {
257262 void refreshTable ( ) ;
@@ -349,7 +354,7 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
349354 </ Button >
350355 ) }
351356
352- < Button variant = "defaultOutline" onClick = { onRefreshClick } disabled = { tableDataFetching } >
357+ < Button variant = "defaultOutline" onClick = { onRefreshClick } disabled = { tableDataFetching || tableConditionsDataFetching } >
353358 < RefreshCwIcon />
354359 </ Button >
355360
@@ -393,7 +398,7 @@ export function DatabaseTableView({ instanceDatabaseMap, databaseName, tableName
393398
394399 < TableView < Record < string , unknown > , unknown >
395400 data = { tableData ?. data }
396- isFetching = { tableDataFetching }
401+ isFetching = { tableDataFetching || tableConditionsDataFetching }
397402 filtersToggled = { filtersToggled }
398403 columns = { dataTableColumns }
399404 columnVisibility = { columnVisibility }
0 commit comments