communication-react-19
Version:
React library for building modern communication user experiences utilizing Azure Communication Services (React 19 compatible fork)
51 lines • 2.32 kB
JavaScript
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
import memoizeOne from 'memoize-one';
import { useAdapter } from '../adapter/ChatAdapterProvider';
/**
* @private
*/
export const useHandlers = (
// eslint-disable-next-line @typescript-eslint/no-unused-vars
_component) => {
return createCompositeHandlers(useAdapter());
};
const createCompositeHandlers = memoizeOne((adapter) => ({
// have to use `any` here so we don't import from Chat SDK
// eslint-disable-next-line @typescript-eslint/no-explicit-any
onSendMessage: (content, options) => {
/* @conditional-compile-remove(file-sharing-acs) */
if (options &&
'attachments' in options &&
options.attachments &&
options.attachments[0] &&
!('attachmentType' in options.attachments[0])) {
const adapterMessageOption = {
metadata: Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.metadata), { fileSharingMetadata: JSON.stringify(options === null || options === void 0 ? void 0 : options.attachments) })
};
return adapter.sendMessage(content, adapterMessageOption);
}
return adapter.sendMessage(content, options);
},
/* @conditional-compile-remove(rich-text-editor-image-upload) */
onUploadImage: adapter.uploadImage,
/* @conditional-compile-remove(rich-text-editor-image-upload) */
onDeleteImage: adapter.deleteImage,
onLoadPreviousChatMessages: adapter.loadPreviousChatMessages,
onMessageSeen: adapter.sendReadReceipt,
onTyping: adapter.sendTypingIndicator,
onRemoveParticipant: adapter.removeParticipant,
updateThreadTopicName: adapter.setTopic,
onUpdateMessage: function (messageId, content,
/* @conditional-compile-remove(file-sharing-acs) */
options) {
/* @conditional-compile-remove(file-sharing-acs) */
const adapterMessageOptions = {
attachments: options === null || options === void 0 ? void 0 : options.attachments
};
return adapter.updateMessage(messageId, content,
/* @conditional-compile-remove(file-sharing-acs) */ adapterMessageOptions);
},
onDeleteMessage: adapter.deleteMessage
}));
//# sourceMappingURL=useHandlers.js.map