feat: split the logic of columns and formatting load in logs

This commit is contained in:
sawhil 2025-06-02 17:58:33 +05:30
parent 93a0a838a6
commit 4d11cbfb75
2 changed files with 29 additions and 24 deletions

View File

@ -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,
})
) {

View File

@ -21,13 +21,21 @@ async function preferencesLoader<T>(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();