Skip to content

Commit 0a31e06

Browse files
committed
fix refresh for Tree view
1 parent 0dc9497 commit 0a31e06

File tree

8 files changed

+71
-60
lines changed

8 files changed

+71
-60
lines changed

redisinsight/ui/src/constants/prop-types/keys.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,3 @@ export interface IKeyPropTypes {
77
size: number
88
length: number
99
}
10-
11-
export interface IKeyListPropTypes {
12-
nextCursor: string
13-
total: number
14-
scanned: number
15-
keys: IKeyPropTypes[]
16-
}

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
2-
import { render, screen } from 'uiSrc/utils/test-utils'
3-
import { IKeyListPropTypes } from 'uiSrc/constants/prop-types/keys'
2+
import { render } from 'uiSrc/utils/test-utils'
3+
import { KeysStoreData } from 'uiSrc/slices/interfaces/keys'
44
import KeyList from './KeyList'
55

66
const propsMock = {
@@ -30,7 +30,11 @@ const propsMock = {
3030
],
3131
nextCursor: '0',
3232
total: 3,
33-
} as IKeyListPropTypes,
33+
scanned: 5,
34+
shardsMeta: {},
35+
previousResultCount: 1,
36+
lastRefreshTime: 3
37+
} as KeysStoreData,
3438
loading: false,
3539
selectKey: jest.fn(),
3640
loadMoreItems: jest.fn(),

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import {
3333
} from 'uiSrc/slices/app/context'
3434
import { GroupBadge } from 'uiSrc/components'
3535
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
36-
import { IKeyListPropTypes } from 'uiSrc/constants/prop-types/keys'
36+
import { KeysStoreData } from 'uiSrc/slices/interfaces/keys'
3737
import VirtualTable from 'uiSrc/components/virtual-table/VirtualTable'
3838
import { ITableColumn } from 'uiSrc/components/virtual-table/interfaces'
3939
import { TableCellAlignment, TableCellTextAlignment } from 'uiSrc/constants'
@@ -42,7 +42,7 @@ import styles from './styles.module.scss'
4242

4343
export interface Props {
4444
hideHeader?: boolean
45-
keysState: IKeyListPropTypes
45+
keysState: KeysStoreData
4646
loading: boolean
4747
hideFooter?: boolean
4848
selectKey: ({ rowData }: { rowData: any }) => void

redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.spec.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
waitFor,
1111
} from 'uiSrc/utils/test-utils'
1212
import { setSearchMatch } from 'uiSrc/slices/keys'
13-
import { IKeyListPropTypes } from 'uiSrc/constants/prop-types/keys'
13+
import { KeysStoreData } from 'uiSrc/slices/interfaces/keys'
1414
import { mockVirtualTreeResult } from 'uiSrc/components/virtual-tree/VirtualTree.spec'
1515
import { setBrowserTreeNodesOpen, setBrowserTreeSelectedLeaf } from 'uiSrc/slices/app/context'
1616
import KeyTree from './KeyTree'
@@ -49,7 +49,11 @@ const propsMock = {
4949
],
5050
nextCursor: '0',
5151
total: 3,
52-
} as IKeyListPropTypes,
52+
scanned: 5,
53+
shardsMeta: {},
54+
previousResultCount: 1,
55+
lastRefreshTime: 3
56+
} as KeysStoreData,
5357
loading: false,
5458
selectKey: jest.fn(),
5559
}

redisinsight/ui/src/pages/browser/components/key-tree/KeyTree.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ import {
1111
import { constructKeysToTree } from 'uiSrc/helpers'
1212
import { keysSelector } from 'uiSrc/slices/keys'
1313
import VirtualTree from 'uiSrc/components/virtual-tree'
14-
import { IKeyListPropTypes, } from 'uiSrc/constants/prop-types/keys'
1514
import TreeViewSVG from 'uiSrc/assets/img/icons/treeview.svg'
15+
import { KeysStoreData } from 'uiSrc/slices/interfaces/keys'
1616
import KeyTreeDelimiter from './KeyTreeDelimiter'
1717

1818
import KeyList from '../key-list/KeyList'
1919
import styles from './styles.module.scss'
2020

2121
export interface Props {
22-
keysState: IKeyListPropTypes
22+
keysState: KeysStoreData
2323
loading: boolean
2424
selectKey: ({ rowData }: { rowData: any }) => void
2525
}
@@ -39,7 +39,7 @@ const KeyTree = (props: Props) => {
3939
const [statusSelected, setStatusSelected] = useState(selectedLeaf)
4040
const [statusOpen, setStatusOpen] = useState(openNodes)
4141
const [sizes, setSizes] = useState(panelSizes)
42-
const [keyListState, setKeyListState] = useState<IKeyListPropTypes>(keysState)
42+
const [keyListState, setKeyListState] = useState<KeysStoreData>(keysState)
4343
const [constructingTree, setConstructingTree] = useState(false)
4444
const [selectDefaultLeaf, setSelectDefaultLeaf] = useState(true)
4545
const [items, setItems] = useState(keysState.keys ?? [])
@@ -69,17 +69,21 @@ const KeyTree = (props: Props) => {
6969
}, [keysState.keys])
7070

7171
useEffect(() => {
72-
// select default leaf "Keys" after each change delimiter, filter or search
72+
updateSelectedKeys()
73+
}, [delimiter, filter, search, keysState.lastRefreshTime])
74+
75+
// select default leaf "Keys" after each change delimiter, filter or search
76+
const updateSelectedKeys = () => {
7377
setItems([])
7478
setTimeout(() => {
7579
setStatusSelected({})
7680
setSelectDefaultLeaf(true)
7781
setItems(keysState.keys)
7882
}, 0)
79-
}, [delimiter, filter, search])
83+
}
8084

8185
const updateKeysList = (items:any = {}) => {
82-
const newState:IKeyListPropTypes = {
86+
const newState:KeysStoreData = {
8387
...keyListState,
8488
keys: Object.values(items)
8589
}

redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.spec.tsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react'
22
import { render, screen } from 'uiSrc/utils/test-utils'
3-
import { IKeyListPropTypes } from 'uiSrc/constants/prop-types/keys'
3+
import { KeysStoreData } from 'uiSrc/slices/interfaces/keys'
44
import KeysHeader from './KeysHeader'
55

66
const propsMock = {
@@ -30,7 +30,11 @@ const propsMock = {
3030
],
3131
nextCursor: '0',
3232
total: 3,
33-
} as IKeyListPropTypes,
33+
scanned: 5,
34+
shardsMeta: {},
35+
previousResultCount: 1,
36+
lastRefreshTime: 3
37+
} as KeysStoreData,
3438
loading: false,
3539
sizes: {},
3640
loadKeys: jest.fn(),

redisinsight/ui/src/pages/browser/components/keys-header/KeysHeader.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,8 @@ import {
2323
import { connectedInstanceSelector } from 'uiSrc/slices/instances'
2424
import { sendEventTelemetry, TelemetryEvent, getBasedOnViewTypeEvent } from 'uiSrc/telemetry'
2525
import { SCAN_COUNT_DEFAULT, SCAN_TREE_COUNT_DEFAULT } from 'uiSrc/constants/api'
26-
import { KeyViewType } from 'uiSrc/slices/interfaces/keys'
26+
import { KeysStoreData, KeyViewType } from 'uiSrc/slices/interfaces/keys'
2727
import KeysSummary from 'uiSrc/components/keys-summary'
28-
import { IKeyListPropTypes } from 'uiSrc/constants/prop-types/keys'
2928
import { localStorageService } from 'uiSrc/services'
3029
import { BrowserStorageItem } from 'uiSrc/constants'
3130
import { ReactComponent as TreeViewIcon } from 'uiSrc/assets/img/icons/treeview.svg'
@@ -50,7 +49,7 @@ interface IViewType {
5049

5150
export interface Props {
5251
loading: boolean
53-
keysState: IKeyListPropTypes
52+
keysState: KeysStoreData
5453
sizes: any
5554
loadKeys: (type?: KeyViewType) => void
5655
loadMoreItems?: (config: any) => void
Lines changed: 38 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import { GetKeyInfoResponse } from 'apiSrc/modules/browser/dto'
12
import { KeyTypes, UnsupportedKeyTypes } from 'uiSrc/constants'
23
import { IKeyPropTypes } from 'uiSrc/constants/prop-types/keys'
34
import { Maybe, Nullable } from 'uiSrc/utils'
45

56
export interface Key {
6-
name: string;
7-
type: KeyTypes;
8-
ttl: number;
9-
size: number;
7+
name: string
8+
type: KeyTypes
9+
ttl: number
10+
size: number
1011
}
1112

1213
export enum KeyViewType {
@@ -15,38 +16,40 @@ export enum KeyViewType {
1516
}
1617

1718
export interface KeysStore {
18-
loading: boolean;
19-
error: string;
20-
search: string;
21-
filter: Nullable<KeyTypes | UnsupportedKeyTypes>;
22-
isFiltered: boolean;
23-
isSearched: boolean;
19+
loading: boolean
20+
error: string
21+
search: string
22+
filter: Nullable<KeyTypes | UnsupportedKeyTypes>
23+
isFiltered: boolean
24+
isSearched: boolean
2425
viewType: KeyViewType,
25-
data: {
26-
total: number;
27-
scanned: number;
28-
nextCursor: string;
29-
keys: Key[];
30-
shardsMeta: Record<string, {
31-
cursor: number;
32-
scanned: number;
33-
total: number;
34-
host?: string;
35-
port?: number;
36-
}>;
37-
previousResultCount: number;
38-
lastRefreshTime: Nullable<number>;
39-
};
26+
data: KeysStoreData
4027
selectedKey: {
41-
loading: boolean;
42-
refreshing: boolean;
43-
lastRefreshTime: Nullable<number>;
44-
error: string;
45-
data: Nullable<IKeyPropTypes>;
46-
length: Maybe<number>;
47-
};
28+
loading: boolean
29+
refreshing: boolean
30+
lastRefreshTime: Nullable<number>
31+
error: string
32+
data: Nullable<IKeyPropTypes>
33+
length: Maybe<number>
34+
}
4835
addKey: {
49-
loading: boolean;
50-
error: string;
51-
};
36+
loading: boolean
37+
error: string
38+
}
39+
}
40+
41+
export interface KeysStoreData {
42+
total: number
43+
scanned: number
44+
nextCursor: string
45+
keys: GetKeyInfoResponse[]
46+
shardsMeta: Record<string, {
47+
cursor: number
48+
scanned: number
49+
total: number
50+
host?: string
51+
port?: number
52+
}>
53+
previousResultCount: number
54+
lastRefreshTime: Nullable<number>
5255
}

0 commit comments

Comments
 (0)