From 085cf34a49434e90f8ec50428a52017e14a985a3 Mon Sep 17 00:00:00 2001 From: Raj Kamal Singh <1133322+raj-k-singh@users.noreply.github.com> Date: Thu, 25 Jan 2024 12:35:36 +0530 Subject: [PATCH] fix: Logs UI: querybuildersearch: avoid emptying out query on sourceKeys update if tags are yet to be populated (#4355) * fix: querybuildersearch: do not call query onChange from sourceKeys useEffect if tags is empty * chore: add comment explaining change --- .../filters/QueryBuilderSearch/index.tsx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/index.tsx b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/index.tsx index 975c79a4a8..d12bc18add 100644 --- a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/index.tsx +++ b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/index.tsx @@ -150,6 +150,20 @@ function QueryBuilderSearch({ (item) => item.key as BaseAutocompleteData, ); + // Avoid updating query with onChange at the bottom of this useEffect + // if there are no `tags` that need to be normalized after receiving + // the latest `sourceKeys`. + // + // Executing the following logic for empty tags leads to emptying + // out of `query` via `onChange`. + // `tags` can contain stale empty value while being updated by `useTag` + // which maintains it as a state and updates it via useEffect when props change. + // This was observed when pipeline filters were becoming empty after + // returning from logs explorer. + if ((tags?.length || 0) < 1) { + return; + } + initialTagFilters.items = tags.map((tag, index) => { const isJsonTrue = query.filters?.items[index]?.key?.isJSON;