Skip to content

Commit 566b841

Browse files
Merge pull request #1302 from RedisInsight/fe/bugfix/RI-3673_Tree_view_without_metadata
#RI-3673 - Tree view without metadata
2 parents 8483ed9 + d55fd59 commit 566b841

File tree

2 files changed

+16
-34
lines changed

2 files changed

+16
-34
lines changed

redisinsight/ui/src/pages/browser/components/key-list/KeyList.spec.tsx

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -136,21 +136,15 @@ describe('KeyList', () => {
136136
/>)
137137

138138
await waitFor(async () => {
139-
expect(apiServiceMock).toBeCalledTimes(3)
139+
expect(apiServiceMock).toBeCalledTimes(2)
140140

141141
expect(apiServiceMock.mock.calls[0]).toEqual([
142-
'/instance//keys/get-metadata',
143-
{ keys: ['key1', 'key2', 'key3'] },
144-
params,
145-
])
146-
147-
expect(apiServiceMock.mock.calls[1]).toEqual([
148142
'/instance//keys/get-metadata',
149143
{ keys: ['key1'] },
150144
params,
151145
])
152146

153-
expect(apiServiceMock.mock.calls[2]).toEqual([
147+
expect(apiServiceMock.mock.calls[1]).toEqual([
154148
'/instance//keys/get-metadata',
155149
{ keys: ['key1', 'key2', 'key3'] },
156150
params,

redisinsight/ui/src/pages/browser/components/key-list/KeyList.tsx

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { forwardRef, useCallback, useEffect, useImperativeHandle, useRef,
22
import { useDispatch, useSelector } from 'react-redux'
33
import cx from 'classnames'
44
import { useParams } from 'react-router-dom'
5-
import { debounce, isUndefined, reject } from 'lodash'
5+
import { debounce, findIndex, isUndefined, reject } from 'lodash'
66

77
import {
88
EuiText,
@@ -103,7 +103,7 @@ const KeyList = forwardRef((props: Props, ref) => {
103103
return
104104
}
105105

106-
const { lastIndex, startIndex } = renderedRowsIndexesRef.current
106+
const { startIndex, lastIndex } = renderedRowsIndexesRef.current
107107
onRowsRendered(startIndex, lastIndex)
108108
rerender({})
109109
}, [keysState.keys])
@@ -163,14 +163,16 @@ const KeyList = forwardRef((props: Props, ref) => {
163163
nameString: bufferToString(item.name)
164164
}), [])
165165

166-
const onRowsRendered = debounce(async (startIndex: number, lastIndex: number) => {
166+
const onRowsRendered = (startIndex: number, lastIndex: number) => {
167167
renderedRowsIndexesRef.current = { lastIndex, startIndex }
168168

169169
const newItems = bufferFormatRows(startIndex, lastIndex)
170170

171171
getMetadata(startIndex, lastIndex, newItems)
172172
rerender({})
173-
}, 100)
173+
}
174+
175+
const onRowsRenderedDebounced = debounce(onRowsRendered, 100)
174176

175177
const bufferFormatRows = (startIndex: number, lastIndex: number): GetKeyInfoResponse[] => {
176178
const newItems = bufferFormatRangeItems(
@@ -189,39 +191,25 @@ const KeyList = forwardRef((props: Props, ref) => {
189191
const isSomeNotUndefined = ({ type, size, length }: GetKeyInfoResponse) =>
190192
!isUndefined(type) || !isUndefined(size) || !isUndefined(length)
191193

192-
const emptyItems = reject(itemsInit, isSomeNotUndefined)
194+
const firstEmptyItemIndex = findIndex(itemsInit, (item) => !isSomeNotUndefined(item))
195+
if (firstEmptyItemIndex === -1) return
193196

194-
if (!emptyItems.length) return
197+
const emptyItems = reject(itemsInit, isSomeNotUndefined)
195198

196199
dispatch(fetchKeysMetadata(
197200
emptyItems.map(({ name }) => name),
198201
(loadedItems) =>
199-
onSuccessFetchedMetadata({
200-
startIndex,
201-
lastIndex,
202-
loadedItems,
203-
isFirstEmpty: !isSomeNotUndefined(itemsInit[0]),
204-
}),
202+
onSuccessFetchedMetadata(startIndex + firstEmptyItemIndex, loadedItems),
205203
() => { rerender({}) }
206204
))
207205
}
208206

209-
const onSuccessFetchedMetadata = (data: {
207+
const onSuccessFetchedMetadata = (
210208
startIndex: number,
211-
lastIndex: number,
212-
isFirstEmpty: boolean
213209
loadedItems: GetKeyInfoResponse[],
214-
}) => {
215-
const {
216-
startIndex,
217-
lastIndex,
218-
isFirstEmpty,
219-
loadedItems,
220-
} = data
210+
) => {
221211
const items = loadedItems.map(formatItem)
222-
const startIndexDel = isFirstEmpty ? startIndex : lastIndex - items.length + 1
223-
224-
itemsRef.current.splice(startIndexDel, items.length, ...items)
212+
itemsRef.current.splice(startIndex, items.length, ...items)
225213

226214
rerender({})
227215
}
@@ -381,7 +369,7 @@ const KeyList = forwardRef((props: Props, ref) => {
381369
setScrollTopPosition={setScrollTopPosition}
382370
hideFooter={hideFooter}
383371
onRowsRendered={({ overscanStartIndex, overscanStopIndex }) =>
384-
onRowsRendered(overscanStartIndex, overscanStopIndex)}
372+
onRowsRenderedDebounced(overscanStartIndex, overscanStopIndex)}
385373
/>
386374
</div>
387375
</div>

0 commit comments

Comments
 (0)