Skip to content

Commit f4631c4

Browse files
Merge pull request #1342 from RedisInsight/fe/bugfix/RI-3748_Infinity_loading_without_keys_context
#RI-3748 - Loading endless spinner in Browser displayed when user creates keys in Workbench
2 parents 900e37f + 0a41ae0 commit f4631c4

File tree

7 files changed

+42
-9
lines changed

7 files changed

+42
-9
lines changed

redisinsight/ui/src/components/analytics-tabs/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export const analyticsViewTabs: AnalyticsTabs[] = [
1212
},
1313
{
1414
id: AnalyticsViewTab.DatabaseAnalysis,
15-
label: 'Redis Database Analysis',
15+
label: 'Database Analysis',
1616
},
1717
{
1818
id: AnalyticsViewTab.SlowLog,

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ import {
3737
} from 'uiSrc/slices/browser/keys'
3838
import {
3939
appContextBrowser,
40-
setBrowserKeyListScrollPosition
40+
setBrowserKeyListScrollPosition,
41+
setBrowserIsNotRendered,
4142
} from 'uiSrc/slices/app/context'
4243
import { GroupBadge } from 'uiSrc/components'
4344
import { SCAN_COUNT_DEFAULT } from 'uiSrc/constants/api'
@@ -72,13 +73,13 @@ const KeyList = forwardRef((props: Props, ref) => {
7273
const selectedKey = useSelector(selectedKeySelector)
7374
const { total, nextCursor, previousResultCount } = useSelector(keysDataSelector)
7475
const { isSearched, isFiltered, viewType } = useSelector(keysSelector)
75-
const { keyList: { scrollTopPosition } } = useSelector(appContextBrowser)
76+
const { keyList: { scrollTopPosition, isNotRendered: isNotRenderedContext } } = useSelector(appContextBrowser)
7677

7778
const [, rerender] = useState({})
7879
const [firstDataLoaded, setFirstDataLoaded] = useState(!!keysState.keys.length)
7980

8081
const itemsRef = useRef(keysState.keys)
81-
const isNotRendered = useRef(true)
82+
const isNotRendered = useRef(isNotRenderedContext)
8283
const renderedRowsIndexesRef = useRef({ startIndex: 0, lastIndex: 0 })
8384

8485
const dispatch = useDispatch()
@@ -107,6 +108,7 @@ const KeyList = forwardRef((props: Props, ref) => {
107108
}
108109

109110
isNotRendered.current = false
111+
dispatch(setBrowserIsNotRendered(isNotRendered.current))
110112
if (itemsRef.current.length === 0) {
111113
rerender({})
112114
return

redisinsight/ui/src/pages/databaseAnalysis/components/header/Header.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ describe('STANDALONE db', () => {
164164
})
165165
await waitForEuiToolTipVisible()
166166

167-
expect(screen.getByTestId('db-new-reports-tooltip')).toHaveTextContent('Redis Database AnalysisAnalyze up to 10 000 keys per Redis database to get an overview of your data.')
167+
expect(screen.getByTestId('db-new-reports-tooltip')).toHaveTextContent('Database AnalysisAnalyze up to 10 000 keys per Redis database to get an overview of your data.')
168168
})
169169
})
170170

@@ -182,6 +182,6 @@ describe('SENTINEL db', () => {
182182
})
183183
await waitForEuiToolTipVisible()
184184

185-
expect(screen.getByTestId('db-new-reports-tooltip')).toHaveTextContent('Redis Database AnalysisAnalyze up to 10 000 keys per Redis database to get an overview of your data.')
185+
expect(screen.getByTestId('db-new-reports-tooltip')).toHaveTextContent('Database AnalysisAnalyze up to 10 000 keys per Redis database to get an overview of your data.')
186186
})
187187
})

redisinsight/ui/src/pages/databaseAnalysis/components/header/Header.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ const Header = (props: Props) => {
155155
position="bottom"
156156
anchorClassName={styles.tooltipAnchor}
157157
className={styles.tooltip}
158-
title="Redis Database Analysis"
158+
title="Database Analysis"
159159
content={connectionType === ConnectionType.Cluster ? clusterTooltipMessage : commonTooltipMessage}
160160
data-testid="db-new-reports-tooltip"
161161
>

redisinsight/ui/src/slices/app/context.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ export const initialState: StateAppContext = {
1212
keyList: {
1313
isDataLoaded: false,
1414
scrollTopPosition: 0,
15-
selectedKey: null
15+
isNotRendered: true,
16+
selectedKey: null,
1617
},
1718
panelSizes: {},
1819
tree: {
@@ -67,6 +68,9 @@ const appContextSlice = createSlice({
6768
setBrowserKeyListScrollPosition: (state, { payload }: { payload: number }) => {
6869
state.browser.keyList.scrollTopPosition = payload
6970
},
71+
setBrowserIsNotRendered: (state, { payload }: { payload: boolean }) => {
72+
state.browser.keyList.isNotRendered = payload
73+
},
7074
setBrowserPanelSizes: (state, { payload }: { payload: any }) => {
7175
state.browser.panelSizes = payload
7276
},
@@ -153,6 +157,7 @@ export const {
153157
setBrowserKeyListDataLoaded,
154158
setBrowserSelectedKey,
155159
setBrowserKeyListScrollPosition,
160+
setBrowserIsNotRendered,
156161
setBrowserPanelSizes,
157162
setBrowserTreeSelectedLeaf,
158163
setBrowserTreeNodesOpen,

redisinsight/ui/src/slices/interfaces/app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export interface StateAppContext {
4040
keyList: {
4141
isDataLoaded: boolean
4242
scrollTopPosition: number
43+
isNotRendered: boolean
4344
selectedKey: Nullable<RedisResponseBuffer>
4445
},
4546
panelSizes: {

redisinsight/ui/src/slices/tests/app/context.spec.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ import reducer, {
3131
appContextBrowserTree,
3232
setBrowserTreeSelectedLeaf,
3333
updateBrowserTreeSelectedLeaf,
34-
setBrowserTreeDelimiter
34+
setBrowserTreeDelimiter,
35+
setBrowserIsNotRendered,
3536
} from '../../app/context'
3637

3738
jest.mock('uiSrc/services', () => ({
@@ -472,6 +473,30 @@ describe('slices', () => {
472473
})
473474
})
474475

476+
describe('setBrowserIsNotRendered', () => {
477+
it('should properly set browser is not rendered value', () => {
478+
// Arrange
479+
const isNotRendered = false
480+
const state = {
481+
...initialState.browser,
482+
keyList: {
483+
...initialState.browser.keyList,
484+
isNotRendered
485+
}
486+
}
487+
488+
// Act
489+
const nextState = reducer(initialState, setBrowserIsNotRendered(isNotRendered))
490+
491+
// Assert
492+
const rootState = Object.assign(initialStateDefault, {
493+
app: { context: nextState },
494+
})
495+
496+
expect(appContextBrowser(rootState)).toEqual(state)
497+
})
498+
})
499+
475500
describe('setBrowserTreeDelimiter', () => {
476501
it('should properly set browser tree delimiter', () => {
477502
// Arrange

0 commit comments

Comments
 (0)