Skip to content

Commit d8eff44

Browse files
author
Sravan S
authored
fix: Publish SEND_MESSAGE_FAILED event (#704)
Implementation for Failure state on `sendbirdSelectors.getSendUserMessage` was missing Bonus - fix typo in `SEND_MESSAGEGE_FAILURE ` Fixes: https://sendbird.atlassian.net/browse/CLNP-542
1 parent 160469d commit d8eff44

File tree

10 files changed

+43
-10
lines changed

10 files changed

+43
-10
lines changed

src/lib/pubSub/topics.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const PUBSUB_TOPICS = {
44
// Group Channel
55
USER_UPDATED: 'USER_UPDATED',
66
SEND_MESSAGE_START: 'SEND_MESSAGE_START',
7+
SEND_MESSAGE_FAILED: 'SEND_MESSAGE_FAILED',
78
SEND_USER_MESSAGE: 'SEND_USER_MESSAGE',
89
SEND_FILE_MESSAGE: 'SEND_FILE_MESSAGE',
910
UPDATE_USER_MESSAGE: 'UPDATE_USER_MESSAGE',

src/lib/selectors.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,13 @@ export const getSendUserMessage = (state: SendBirdState) => (
465465
const handler = new UikitMessageHandler();
466466
const pubSub = getPubSub(state);
467467
channel.sendUserMessage(params)
468-
.onFailed((error, message) => handler.triggerFailed(error, message))
468+
.onFailed((error, message) => {
469+
pubSub.publish(
470+
topics.SEND_MESSAGE_FAILED,
471+
{ error, message, channel },
472+
);
473+
handler.triggerFailed(error, message);
474+
})
469475
.onPending((message) => {
470476
pubSub.publish(
471477
topics.SEND_MESSAGE_START,
@@ -499,7 +505,13 @@ export const getSendFileMessage = (state: SendBirdState) => (
499505
const handler = new UikitMessageHandler();
500506
const pubSub = getPubSub(state);
501507
channel.sendFileMessage(params)
502-
.onFailed((error, message) => handler.triggerFailed(error, message))
508+
.onFailed((error, message) => {
509+
pubSub.publish(
510+
topics.SEND_MESSAGE_FAILED,
511+
{ error, message, channel },
512+
);
513+
handler.triggerFailed(error, message);
514+
})
503515
.onPending((message) => {
504516
pubSub.publish(
505517
topics.SEND_MESSAGE_START,

src/modules/Channel/context/dux/actionTypes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const FETCH_NEXT_MESSAGES_FAILURE = 'FETCH_NEXT_MESSAGES_FAILURE';
1010

1111
export const SEND_MESSAGEGE_START = 'SEND_MESSAGEGE_START';
1212
export const SEND_MESSAGEGE_SUCESS = 'SEND_MESSAGEGE_SUCESS';
13-
export const SEND_MESSAGEGE_FAILURE = 'SEND_MESSAGEGE_FAILURE';
13+
export const SEND_MESSAGE_FAILURE = 'SEND_MESSAGE_FAILURE';
1414

1515
export const RESEND_MESSAGEGE_START = 'RESEND_MESSAGEGE_START';
1616

src/modules/Channel/context/dux/reducers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ export default function reducer(state, action) {
173173
],
174174
};
175175
}
176-
case actionTypes.SEND_MESSAGEGE_FAILURE: {
176+
case actionTypes.SEND_MESSAGE_FAILURE: {
177177
// eslint-disable-next-line no-param-reassign
178178
action.payload.failed = true;
179179
return {

src/modules/Channel/context/hooks/useResendMessageCallback.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function useResendMessageCallback({
3939
// eslint-disable-next-line no-param-reassign
4040
failedMessage.sendingStatus = 'failed';
4141
messagesDispatcher({
42-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
42+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
4343
payload: failedMessage,
4444
});
4545
});
@@ -72,7 +72,7 @@ function useResendMessageCallback({
7272
// eslint-disable-next-line no-param-reassign
7373
failedMessage.sendingStatus = 'failed';
7474
messagesDispatcher({
75-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
75+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
7676
payload: failedMessage,
7777
});
7878
});

src/modules/Channel/context/hooks/useSendFileMessageCallback.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ export default function useSendFileMessageCallback({
9797
// eslint-disable-next-line no-param-reassign
9898
failedMessage.file = compressedFile;
9999
messagesDispatcher({
100-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
100+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
101101
payload: failedMessage,
102102
});
103103
})
@@ -147,7 +147,7 @@ export default function useSendFileMessageCallback({
147147
// eslint-disable-next-line no-param-reassign
148148
message.file = file;
149149
messagesDispatcher({
150-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
150+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
151151
payload: message,
152152
});
153153
})

src/modules/Channel/context/hooks/useSendMessageCallback.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export default function useSendMessageCallback({
6969
.onFailed((err, msg) => {
7070
logger.warning('Channel: Sending message failed!', { message: msg, error: err });
7171
messagesDispatcher({
72-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
72+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
7373
payload: msg,
7474
});
7575
})

src/modules/Channel/context/hooks/useSendVoiceMessageCallback.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export const useSendVoiceMessageCallback = ({
7474
.onFailed((err, failedMessage) => {
7575
logger.error('Channel: Sending voice message failed!', { failedMessage, err });
7676
messagesDispatcher({
77-
type: messageActionTypes.SEND_MESSAGEGE_FAILURE,
77+
type: messageActionTypes.SEND_MESSAGE_FAILURE,
7878
payload: failedMessage,
7979
});
8080
})

src/modules/Channel/context/utils.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,15 @@ export const pubSubHandler = ({
8181
});
8282
}
8383
}));
84+
subscriber.set(topics.SEND_MESSAGE_FAILED, pubSub.subscribe(topics.SEND_MESSAGE_FAILED, (msg) => {
85+
const { channel, message } = msg;
86+
if (channelUrl === channel?.url) {
87+
dispatcher({
88+
type: channelActions.SEND_MESSAGE_FAILURE,
89+
payload: message,
90+
});
91+
}
92+
}));
8493
subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (msg) => {
8594
const { channel, message } = msg;
8695
scrollIntoLast(0, scrollRef);

src/modules/Thread/context/hooks/useHandlePubsubEvents.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ export default function useHandlePubsubEvents({
4444
}
4545
scrollIntoLast?.();
4646
}));
47+
subscriber.set(topics.SEND_MESSAGE_FAILED, pubSub.subscribe(topics.SEND_MESSAGE_FAILED, (props) => {
48+
const { channel, message } = props;
49+
if (currentChannel?.url === channel?.url
50+
&& message?.parentMessageId === parentMessage?.messageId
51+
) {
52+
threadDispatcher({
53+
type: ThreadContextActionTypes.SEND_MESSAGE_FAILURE,
54+
payload: { message },
55+
});
56+
}
57+
}));
4758
subscriber.set(topics.SEND_FILE_MESSAGE, pubSub.subscribe(topics.SEND_FILE_MESSAGE, (props) => {
4859
const { channel, message } = props;
4960
if (currentChannel?.url === channel?.url) {

0 commit comments

Comments
 (0)