Skip to content

Commit 7227c19

Browse files
committed
override doUpdateMessageRequest
1 parent 42e3435 commit 7227c19

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

src/components/Channel.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ const Channel = withChatContext(
7979
* Override send message request (Advanced usage only)
8080
* */
8181
doSendMessageRequest: PropTypes.func,
82+
/**
83+
* Override update message request (Advanced usage only)
84+
* */
85+
doUpdateMessageRequest: PropTypes.func,
8286
};
8387

8488
static defaultProps = {

src/components/ChannelInner.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,8 @@ export class ChannelInner extends PureComponent {
126126
Attachment: PropTypes.oneOfType([PropTypes.node, PropTypes.elementType]),
127127
/** Override send message request (Advanced usage only) */
128128
doSendMessageRequest: PropTypes.func,
129+
/** Override update message request (Advanced usage only) */
130+
doUpdateMessageRequest: PropTypes.func,
129131
};
130132

131133
static defaultProps = {
@@ -354,6 +356,20 @@ export class ChannelInner extends PureComponent {
354356
return message;
355357
};
356358

359+
// eslint-disable-next-line require-await
360+
editMessage = async (updatedMessage) => {
361+
if (this.props.doUpdateMessageRequest) {
362+
return Promise.resolve(
363+
this.props.doUpdateMessageRequest(
364+
this.props.channel.cid,
365+
updatedMessage,
366+
),
367+
);
368+
}
369+
370+
return this.props.client.updateMessage(updatedMessage);
371+
};
372+
357373
_sendMessage = async (message) => {
358374
// Scrape the reserved fields if present.
359375
const {
@@ -577,6 +593,7 @@ export class ChannelInner extends PureComponent {
577593
updateMessage: this.updateMessage,
578594
removeMessage: this.removeMessage,
579595
sendMessage: this.sendMessage,
596+
editMessage: this.editMessage,
580597
retrySendMessage: this.retrySendMessage,
581598
setEditingState: this.setEditingState,
582599
clearEditingState: this.clearEditingState,

src/components/MessageInput.js

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -374,11 +374,9 @@ const MessageInput = withKeyboardContext(
374374
// TODO: Remove this line and show an error when submit fails
375375
this.props.clearEditingState();
376376

377-
const updateMessagePromise = this.props.client
378-
.updateMessage(updatedMessage)
379-
.then(() => {
380-
this.props.clearEditingState();
381-
});
377+
const updateMessagePromise = this.props
378+
.editMessage(updatedMessage)
379+
.then(this.props.clearEditingState);
382380
logChatPromiseExecution(updateMessagePromise, 'update message');
383381
} else {
384382
try {
@@ -404,7 +402,7 @@ const MessageInput = withKeyboardContext(
404402

405403
updateMessage = async () => {
406404
try {
407-
await this.props.client.updateMessage({
405+
await this.props.client.editMessage({
408406
...this.props.editing,
409407
text: this.state.text,
410408
});

types/index.d.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ export interface ChannelContextValue {
9191
updatedMessage: Client.MessageResponse,
9292
extraState?: object,
9393
): void;
94+
editMessage?(message: Client.Message): void | Promise<Client.MessageResponse>;
9495
retrySendMessage?(message: Client.Message): void;
9596
removeMessage?(updatedMessage: Client.MessageResponse): void;
9697
setEditingState?(message: Client.Message): void;
@@ -146,6 +147,11 @@ export interface ChannelProps extends ChatContextValue {
146147
channelId: string,
147148
message: Client.Message,
148149
): void | Promise<Client.MessageResponse>;
150+
/** Function that overrides default updateMessage in chat client */
151+
doUpdateMessageRequest?(
152+
channelId: string,
153+
message: Client.Message,
154+
): void | Promise<Client.MessageResponse>;
149155
}
150156

151157
export type listType = 'channel' | 'message' | 'default';

0 commit comments

Comments
 (0)