From 4d11cbfb7522c498b86f8a8c6ca29e914364f7cb Mon Sep 17 00:00:00 2001 From: sawhil Date: Mon, 2 Jun 2025 17:58:33 +0530 Subject: [PATCH] feat: split the logic of columns and formatting load in logs --- frontend/src/pages/LogsExplorer/index.tsx | 31 +++++++++---------- .../preferences/loader/usePreferenceLoader.ts | 22 ++++++++----- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/frontend/src/pages/LogsExplorer/index.tsx b/frontend/src/pages/LogsExplorer/index.tsx index 577cdf75ea..13a5099965 100644 --- a/frontend/src/pages/LogsExplorer/index.tsx +++ b/frontend/src/pages/LogsExplorer/index.tsx @@ -166,26 +166,23 @@ function LogsExplorer(): JSX.Element { ); useEffect(() => { - const migratedQuery = migrateOptionsQuery( - preferences - ? { - selectColumns: preferences.columns || [], - maxLines: - preferences.formatting?.maxLines || defaultOptionsQuery.maxLines, - format: preferences.formatting?.format || defaultOptionsQuery.format, - fontSize: - preferences.formatting?.fontSize || defaultOptionsQuery.fontSize, - version: preferences.formatting?.version, - } - : defaultOptionsQuery, - ); + if (!preferences) { + return; + } + const migratedQuery = migrateOptionsQuery({ + selectColumns: preferences.columns || [], + maxLines: preferences.formatting?.maxLines || defaultOptionsQuery.maxLines, + format: preferences.formatting?.format || defaultOptionsQuery.format, + fontSize: preferences.formatting?.fontSize || defaultOptionsQuery.fontSize, + version: preferences.formatting?.version, + }); // Only redirect if the query was actually modified if ( !isEqual(migratedQuery, { - selectColumns: preferences?.columns || [], - maxLines: preferences?.formatting?.maxLines || defaultOptionsQuery.maxLines, - format: preferences?.formatting?.format || defaultOptionsQuery.format, - fontSize: preferences?.formatting?.fontSize || defaultOptionsQuery.fontSize, + selectColumns: preferences?.columns, + maxLines: preferences?.formatting?.maxLines, + format: preferences?.formatting?.format, + fontSize: preferences?.formatting?.fontSize, version: preferences?.formatting?.version, }) ) { diff --git a/frontend/src/providers/preferences/loader/usePreferenceLoader.ts b/frontend/src/providers/preferences/loader/usePreferenceLoader.ts index b9822fee7c..ffaaad3684 100644 --- a/frontend/src/providers/preferences/loader/usePreferenceLoader.ts +++ b/frontend/src/providers/preferences/loader/usePreferenceLoader.ts @@ -21,13 +21,21 @@ async function preferencesLoader(config: { result: await config[source](), })), ); - // Find the first result with columns - const validResult = results.find(({ result }) => result.columns.length); - if (validResult) { - return validResult.result; - } - // fallback to default - return config.default(); + + // Find valid columns and formatting independently + const validColumnsResult = results.find( + ({ result }) => result.columns?.length, + ); + const validFormattingResult = results.find(({ result }) => result.formatting); + + // Combine valid results or fallback to default + const finalResult = { + columns: validColumnsResult?.result.columns || config.default().columns, + formatting: + validFormattingResult?.result.formatting || config.default().formatting, + }; + + return finalResult as T; }; return findValidLoader();