From 7f77dd34ae1c1a9b3890b65f75b04503b2d99b3a Mon Sep 17 00:00:00 2001 From: mufazalov Date: Mon, 18 Nov 2024 13:23:22 +0300 Subject: [PATCH] fix: remove empty selectedConsumer from url --- .../Tenant/Diagnostics/Partitions/Partitions.tsx | 4 ++-- .../Partitions/PartitionsControls/PartitionsControls.tsx | 9 +++++---- src/store/reducers/partitions/partitions.ts | 9 ++++----- src/store/reducers/partitions/types.ts | 4 ---- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/containers/Tenant/Diagnostics/Partitions/Partitions.tsx b/src/containers/Tenant/Diagnostics/Partitions/Partitions.tsx index 224450074..f67041ff3 100644 --- a/src/containers/Tenant/Diagnostics/Partitions/Partitions.tsx +++ b/src/containers/Tenant/Diagnostics/Partitions/Partitions.tsx @@ -82,7 +82,7 @@ export const Partitions = ({path, database}: PartitionsProps) => { selectedConsumer && consumers && !consumers.includes(selectedConsumer); if (isTopicWithoutConsumers || wrongSelectedConsumer) { - dispatch(setSelectedConsumer('')); + dispatch(setSelectedConsumer(undefined)); } }, [dispatch, topicLoading, selectedConsumer, consumers]); @@ -94,7 +94,7 @@ export const Partitions = ({path, database}: PartitionsProps) => { setHiddenColumns(newHiddenColumns); }; - const handleSelectedConsumerChange = (value: string) => { + const handleSelectedConsumerChange = (value?: string) => { dispatch(setSelectedConsumer(value)); }; diff --git a/src/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.tsx b/src/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.tsx index 25e70bd5c..748c602e2 100644 --- a/src/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.tsx +++ b/src/containers/Tenant/Diagnostics/Partitions/PartitionsControls/PartitionsControls.tsx @@ -13,8 +13,8 @@ import type {PreparedPartitionDataWithHosts} from '../utils/types'; interface PartitionsControlsProps { consumers: string[] | undefined; - selectedConsumer: string; - onSelectedConsumerChange: (consumer: string) => void; + selectedConsumer?: string; + onSelectedConsumerChange: (consumer?: string) => void; selectDisabled: boolean; partitions: PreparedPartitionDataWithHosts[] | undefined; onSearchChange: (filteredPartitions: PreparedPartitionDataWithHosts[]) => void; @@ -111,7 +111,8 @@ export const PartitionsControls = ({ }, [initialColumnsIds, hiddenColumns]); const handleConsumerSelectChange = (value: string[]) => { - onSelectedConsumerChange(value[0]); + // Do not set empty string to state + onSelectedConsumerChange(value[0] || undefined); }; const handlePartitionIdSearchChange = (value: string) => { @@ -151,7 +152,7 @@ export const PartitionsControls = ({ className={b('consumer-select')} label={i18n('controls.consumerSelector')} options={consumersToSelect} - value={[selectedConsumer]} + value={[selectedConsumer || '']} onUpdate={handleConsumerSelectChange} filterable={consumers && consumers.length > 5} disabled={selectDisabled || !consumers || !consumers.length} diff --git a/src/store/reducers/partitions/partitions.ts b/src/store/reducers/partitions/partitions.ts index dd7cc2d17..3c4349348 100644 --- a/src/store/reducers/partitions/partitions.ts +++ b/src/store/reducers/partitions/partitions.ts @@ -3,18 +3,17 @@ import type {PayloadAction} from '@reduxjs/toolkit'; import {api} from '../api'; -import type {PartitionsState} from './types'; import {prepareConsumerPartitions, prepareTopicPartitions} from './utils'; -const initialState: PartitionsState = { - selectedConsumer: '', -}; +const initialState: { + selectedConsumer?: string; +} = {}; const slice = createSlice({ name: 'partitions', initialState, reducers: { - setSelectedConsumer: (state, action: PayloadAction) => { + setSelectedConsumer: (state, action: PayloadAction) => { state.selectedConsumer = action.payload; }, }, diff --git a/src/store/reducers/partitions/types.ts b/src/store/reducers/partitions/types.ts index e821c0abe..3e131c6af 100644 --- a/src/store/reducers/partitions/types.ts +++ b/src/store/reducers/partitions/types.ts @@ -28,7 +28,3 @@ export interface PreparedPartitionData { partitionNodeId: number; connectionNodeId?: number; } - -export interface PartitionsState { - selectedConsumer: string; -}