From 25e585b8193ffebe598b688c9d92c7bcea62c1cf Mon Sep 17 00:00:00 2001 From: Michel Weststrate Date: Tue, 4 Jan 2022 04:00:31 -0800 Subject: [PATCH] fix data tables not remembering their defaults Summary: Changelog: Data tables will now remember their configuration by default and share it across different applications As reported, column configurations were often not remembered across restarts. This was caused by two things 1. persisting config was by default turned off 2. the persistence key was based on pluginKey, that includes device and client identification, rather than purely the plugin name. Reviewed By: cekkaewnumchai Differential Revision: D33364780 fbshipit-source-id: 6c38182dc35e3cce23b858f931d554111b080c97 --- desktop/flipper-plugin/src/ui/data-table/DataTable.tsx | 3 ++- desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx index 2218eebf2..55d29b917 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTable.tsx @@ -144,7 +144,7 @@ export function DataTable( const isUnitTest = useInUnitTest(); // eslint-disable-next-line - const scope = isUnitTest ? '' : usePluginInstanceMaybe()?.pluginKey ?? ''; + const scope = isUnitTest ? '' : usePluginInstanceMaybe()?.definition.id ?? ''; const virtualizerRef = useRef(); const [tableState, dispatch] = useReducer( dataTableManagerReducer as DataTableReducer, @@ -561,6 +561,7 @@ DataTable.defaultProps = { enableColumnHeaders: true, enableMultiSelect: true, enableContextMenu: true, + enablePersistSettings: true, onRenderEmpty: emptyRenderer, } as Partial>; diff --git a/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx b/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx index 46b69226d..6d09ad49a 100644 --- a/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx +++ b/desktop/flipper-plugin/src/ui/data-table/DataTableManager.tsx @@ -330,6 +330,7 @@ export function createDataTableManager( export function createInitialState( config: DataManagerConfig, ): DataManagerState { + // by default a table is considered to be identical if plugins, and default column names are the same const storageKey = `${config.scope}:DataTable:${config.defaultColumns .map((c) => c.key) .join(',')}`;