Skip to content

Commit 547cd2f

Browse files
authored
fix: send edited message with error type as regular one (#1664)
## CLA - [ ] I have signed the [Stream CLA](https://docs.google.com/forms/d/e/1FAIpQLScFKsKkAJI7mhCr7K9rEIOpqIDThrWxuvxnwUq2XkHyG154vQ/viewform) (required). - [ ] Code changes are tested ## Description of the changes, What, Why and How? ## Changelog -
1 parent aca97a3 commit 547cd2f

File tree

2 files changed

+96
-1
lines changed

2 files changed

+96
-1
lines changed

src/messageComposer/middleware/messageComposer/cleanData.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,13 @@ export const createCompositionDataCleanupMiddleware = (
1515
state,
1616
next,
1717
}: MiddlewareHandlerParams<MessageComposerMiddlewareState>) => {
18+
const messageType =
19+
!composer.editedMessage?.type || composer.editedMessage.type === 'error'
20+
? 'regular'
21+
: composer.editedMessage.type;
22+
1823
const common = {
19-
type: composer.editedMessage?.type ?? 'regular',
24+
type: messageType,
2025
};
2126

2227
const editedMessagePayloadToBeSent = composer.editedMessage
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import { describe, expect, it, vi } from 'vitest';
2+
import {
3+
createCompositionDataCleanupMiddleware,
4+
LocalMessage,
5+
MessageComposerMiddlewareState,
6+
} from '../../../../../src';
7+
8+
const setupMiddlewareApi = (initialState: MessageComposerMiddlewareState) => {
9+
return {
10+
state: initialState,
11+
next: vi.fn().mockReturnValue(null),
12+
complete: vi.fn().mockReturnValue(null),
13+
discard: vi.fn().mockReturnValue(null),
14+
forward: vi.fn().mockReturnValue(null),
15+
};
16+
};
17+
18+
const stateSeed: MessageComposerMiddlewareState = {
19+
message: {
20+
id: 'test-id',
21+
parent_id: undefined,
22+
type: 'regular',
23+
},
24+
localMessage: {
25+
attachments: [],
26+
created_at: new Date(),
27+
deleted_at: null,
28+
error: undefined,
29+
id: 'test-id',
30+
mentioned_users: [],
31+
parent_id: undefined,
32+
pinned_at: null,
33+
reaction_groups: null,
34+
status: 'sending',
35+
text: '',
36+
type: 'regular',
37+
updated_at: new Date(),
38+
},
39+
sendOptions: {},
40+
};
41+
42+
describe('stream-io/message-composer-middleware/data-cleanup', () => {
43+
it('should forward if the message type is not error', async () => {
44+
const mockComposer = {
45+
editedMessage: { id: 'test-id', type: 'regular' } as LocalMessage,
46+
} as any;
47+
const middleware = createCompositionDataCleanupMiddleware(mockComposer);
48+
const middlewareApi = setupMiddlewareApi(stateSeed);
49+
await middleware.handlers.compose(middlewareApi);
50+
expect(middlewareApi.next).toHaveBeenCalledWith({
51+
...stateSeed,
52+
localMessage: {
53+
...stateSeed.localMessage,
54+
error: null,
55+
quoted_message: null,
56+
type: 'regular',
57+
},
58+
message: {
59+
...stateSeed.message,
60+
mentioned_users: undefined,
61+
pinned: false,
62+
type: 'regular',
63+
},
64+
});
65+
});
66+
67+
it('should forward if the message type is of type error with type regular', async () => {
68+
const mockComposer = {
69+
editedMessage: { id: 'test-id', type: 'error' } as LocalMessage,
70+
} as any;
71+
const middleware = createCompositionDataCleanupMiddleware(mockComposer);
72+
const middlewareApi = setupMiddlewareApi(stateSeed);
73+
await middleware.handlers.compose(middlewareApi);
74+
expect(middlewareApi.next).toHaveBeenCalledWith({
75+
...stateSeed,
76+
localMessage: {
77+
...stateSeed.localMessage,
78+
error: null,
79+
quoted_message: null,
80+
type: 'regular',
81+
},
82+
message: {
83+
...stateSeed.message,
84+
mentioned_users: undefined,
85+
pinned: false,
86+
type: 'regular',
87+
},
88+
});
89+
});
90+
});

0 commit comments

Comments
 (0)