From 015be5ad83ebbd33115bdc83ab990f9e7751551f Mon Sep 17 00:00:00 2001 From: Anton Nikolaev Date: Tue, 24 May 2022 04:51:19 -0700 Subject: [PATCH] Remove flashing on initializing datatable with filter Summary: When filter is applied for the first time we shouldn't debounce to avoid "flashing" on datatable loading when it is first loaded without filter and then filter applied after 250ms. Changelog: Fixed flashing on opening datatable-based plugin with a filter. Reviewed By: timur-valiev Differential Revision: D36602929 fbshipit-source-id: 8bd33f50c92036f2a5565f636f4f2fbe69d900f2 --- .../src/ui/data-table/DataTable.tsx | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx index 6283d891f..95bed6280 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx @@ -339,11 +339,21 @@ export function DataTable( }); useEffect( function updateFilter() { - debouncedSetFilter( - tableState.searchValue, - tableState.useRegex, - tableState.columns, - ); + if (!dataSource.view.isFiltered) { + dataSource.view.setFilter( + computeDataTableFilter( + tableState.searchValue, + tableState.useRegex, + tableState.columns, + ), + ); + } else { + debouncedSetFilter( + tableState.searchValue, + tableState.useRegex, + tableState.columns, + ); + } }, // Important dep optimization: we don't want to recalc filters if just the width or visibility changes! // We pass entire state.columns to computeDataTableFilter, but only changes in the filter are a valid cause to compute a new filter function