fix(query): deduplicate key suggestions using a Map to preserve order

This commit is contained in:
ahrefabhi 2025-07-01 16:41:44 +05:30
parent 8386826d6e
commit 83d5b124d4
2 changed files with 9 additions and 3 deletions

View File

@ -154,7 +154,13 @@ function QuerySearch({
if (response.data.data) {
const { complete, keys } = response.data.data;
const options = generateOptions(keys);
setKeySuggestions((prev) => [...(prev || []), ...options]);
// Use a Map to deduplicate by label and preserve order: new options take precedence
const merged = new Map<string, QueryKeyDataSuggestionsProps>();
options.forEach((opt) => merged.set(opt.label, opt));
(keySuggestions || []).forEach((opt) => {
if (!merged.has(opt.label)) merged.set(opt.label, opt);
});
setKeySuggestions(Array.from(merged.values()));
setIsCompleteKeysList(complete);
}
};

View File

@ -150,10 +150,10 @@ const useOptionsMenu = ({
[],
);
let initialSelected: TelemetryFieldKey[] | undefined =
let initialSelected: TelemetryFieldKey[] =
initialOptions.selectColumns
?.map((column) => attributesData.find(({ name }) => name === column))
.filter((e) => !!e) || [];
.filter((e): e is TelemetryFieldKey => !!e) || [];
if (dataSource === DataSource.TRACES) {
initialSelected = initialSelected