Skip to content

Commit 0f1f7bf

Browse files
#RI-3007,3021-remove fetch data after claim and ack (#738)
1 parent 1a85607 commit 0f1f7bf

File tree

3 files changed

+48
-10
lines changed

3 files changed

+48
-10
lines changed

redisinsight/ui/src/pages/browser/components/stream-details/constants.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ interface StreamTabs {
1010
export const streamViewTypeTabs: StreamTabs[] = [
1111
{
1212
id: StreamViewType.Data,
13-
label: 'Stream data',
13+
label: 'Stream Data',
1414
},
1515
{
1616
id: StreamViewType.Groups,

redisinsight/ui/src/slices/browser/stream.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
2+
import { remove } from 'lodash'
23
import axios, { AxiosError, CancelTokenSource } from 'axios'
34

45
import { apiService } from 'uiSrc/services'
@@ -300,6 +301,9 @@ const streamSlice = createSlice({
300301
state.groups.loading = false
301302
state.groups.error = payload
302303
},
304+
deleteMessageFromList: (state, { payload }) => {
305+
remove(state.groups?.selectedGroup?.selectedConsumer?.data!, (message) => message?.id === payload)
306+
},
303307
},
304308
})
305309

@@ -350,6 +354,7 @@ export const {
350354
ackPendingEntries,
351355
ackPendingEntriesSuccess,
352356
ackPendingEntriesFailure,
357+
deleteMessageFromList,
353358
} = streamSlice.actions
354359

355360
// A selector
@@ -957,9 +962,9 @@ export function claimPendingMessages(
957962
)
958963
if (isStatusSuccessful(status)) {
959964
dispatch(claimConsumerMessagesSuccess())
960-
dispatch<any>(fetchConsumerMessages())
961965
dispatch<any>(fetchConsumers())
962966
if (data.affected.length) {
967+
dispatch(deleteMessageFromList(data.affected[0]))
963968
dispatch(addMessageNotification(
964969
successMessages.MESSAGE_ACTION(data.affected[0], 'claimed')
965970
))
@@ -1008,7 +1013,7 @@ export function ackPendingEntriesAction(
10081013
if (isStatusSuccessful(status)) {
10091014
onSuccessAction?.()
10101015
dispatch(ackPendingEntriesSuccess())
1011-
dispatch<any>(fetchConsumerMessages())
1016+
dispatch(deleteMessageFromList(entries[0]))
10121017
dispatch<any>(fetchConsumers())
10131018
dispatch(addMessageNotification(
10141019
successMessages.MESSAGE_ACTION(entries[0], 'acknowledged')

redisinsight/ui/src/slices/tests/browser/stream.spec.ts

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ import reducer, {
6767
claimPendingMessages,
6868
claimConsumerMessages,
6969
claimConsumerMessagesSuccess,
70-
claimConsumerMessagesFailure
70+
claimConsumerMessagesFailure,
71+
deleteMessageFromList
7172
} from 'uiSrc/slices/browser/stream'
7273
import { StreamViewType } from 'uiSrc/slices/interfaces/stream'
7374
import { cleanup, initialStateDefault, mockedStore, } from 'uiSrc/utils/test-utils'
@@ -1403,7 +1404,6 @@ describe('stream slice', () => {
14031404
const entries = ['0-1']
14041405
const responsePayload = { status: 200 }
14051406

1406-
apiService.post = jest.fn().mockResolvedValue(responsePayload)
14071407
apiService.post = jest.fn().mockResolvedValue(responsePayload)
14081408
apiService.post = jest.fn().mockResolvedValue(responsePayload)
14091409

@@ -1414,7 +1414,7 @@ describe('stream slice', () => {
14141414
const expectedActions = [
14151415
ackPendingEntries(),
14161416
ackPendingEntriesSuccess(),
1417-
loadConsumerGroups(),
1417+
deleteMessageFromList('0-1'),
14181418
loadConsumerGroups(),
14191419
addMessageNotification(
14201420
successMessages.MESSAGE_ACTION(
@@ -1456,7 +1456,7 @@ describe('stream slice', () => {
14561456
})
14571457

14581458
describe('claimPendingMessagesAction', () => {
1459-
it('succeed to fetch data', async () => {
1459+
it('succeed to claim message', async () => {
14601460
// Arrange
14611461
const data: Partial<ClaimPendingEntryDto> = {
14621462
keyName: 'key',
@@ -1468,7 +1468,6 @@ describe('stream slice', () => {
14681468

14691469
const responsePayload = { status: 200 }
14701470

1471-
apiService.post = jest.fn().mockResolvedValue(responsePayload)
14721471
apiService.post = jest.fn().mockResolvedValue(responsePayload)
14731472

14741473
const responsePayloadPost = { data: { affected: ['0-1'] }, status: 200 }
@@ -1483,7 +1482,7 @@ describe('stream slice', () => {
14831482
claimConsumerMessages(),
14841483
claimConsumerMessagesSuccess(),
14851484
loadConsumerGroups(),
1486-
loadConsumerGroups(),
1485+
deleteMessageFromList('0-1'),
14871486
addMessageNotification(
14881487
successMessages.MESSAGE_ACTION('0-1', 'claimed')
14891488
)
@@ -1492,6 +1491,40 @@ describe('stream slice', () => {
14921491
expect(store.getActions()).toEqual(expectedActions)
14931492
})
14941493

1494+
it('succeed to claim message with 0 affected', async () => {
1495+
// Arrange
1496+
const data: Partial<ClaimPendingEntryDto> = {
1497+
keyName: 'key',
1498+
groupName: 'group',
1499+
consumerName: 'name',
1500+
minIdleTime: 0,
1501+
entries: ['0-1']
1502+
}
1503+
1504+
const responsePayload = { status: 200 }
1505+
1506+
apiService.post = jest.fn().mockResolvedValue(responsePayload)
1507+
1508+
const responsePayloadPost = { data: { affected: [] }, status: 200 }
1509+
1510+
apiService.post = jest.fn().mockResolvedValue(responsePayloadPost)
1511+
1512+
// Act
1513+
await store.dispatch<any>(claimPendingMessages(data))
1514+
1515+
// Assert
1516+
const expectedActions = [
1517+
claimConsumerMessages(),
1518+
claimConsumerMessagesSuccess(),
1519+
loadConsumerGroups(),
1520+
addMessageNotification(
1521+
successMessages.NO_CLAIMED_MESSAGES()
1522+
)
1523+
]
1524+
1525+
expect(store.getActions()).toEqual(expectedActions)
1526+
})
1527+
14951528
it('failed to fetch data', async () => {
14961529
const data: Partial<ClaimPendingEntryDto> = {
14971530
keyName: 'key',
@@ -1524,4 +1557,4 @@ describe('stream slice', () => {
15241557
})
15251558
})
15261559
})
1527-
})
1560+
})

0 commit comments

Comments
 (0)