@sendbird/uikit-react-native 3.7.2 → 3.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. package/lib/commonjs/components/ChannelInput/SendInput.js +2 -1
  2. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js +33 -23
  4. package/lib/commonjs/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelInput/index.js +11 -5
  6. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  7. package/lib/commonjs/components/ChannelMessageList/index.js +6 -1
  8. package/lib/commonjs/components/ChannelMessageList/index.js.map +1 -1
  9. package/lib/commonjs/components/ChannelThreadMessageList/index.js +6 -1
  10. package/lib/commonjs/components/ChannelThreadMessageList/index.js.map +1 -1
  11. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js +2 -2
  12. package/lib/commonjs/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -1
  13. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js +1 -1
  14. package/lib/commonjs/components/GroupChannelMessageRenderer/index.js.map +1 -1
  15. package/lib/commonjs/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js +2 -2
  16. package/lib/commonjs/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js.map +1 -1
  17. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js +7 -3
  18. package/lib/commonjs/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  19. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js +7 -3
  20. package/lib/commonjs/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  21. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js +1 -1
  22. package/lib/commonjs/components/ThreadParentMessageRenderer/index.js.map +1 -1
  23. package/lib/commonjs/containers/SendbirdUIKitContainer.js +0 -1
  24. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  25. package/lib/commonjs/contexts/PlatformServiceCtx.js +2 -1
  26. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -1
  27. package/lib/commonjs/contexts/SBUHandlersCtx.js.map +1 -1
  28. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +2 -2
  29. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  30. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  31. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  32. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +1 -1
  33. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  34. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  35. package/lib/commonjs/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  36. package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -2
  37. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  38. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js +3 -2
  39. package/lib/commonjs/fragments/createGroupChannelThreadFragment.js.map +1 -1
  40. package/lib/commonjs/hooks/useConnection.js +2 -2
  41. package/lib/commonjs/hooks/useConnection.js.map +1 -1
  42. package/lib/commonjs/hooks/usePushTokenRegistration.js +28 -7
  43. package/lib/commonjs/hooks/usePushTokenRegistration.js.map +1 -1
  44. package/lib/commonjs/localization/StringSet.en.js +2 -3
  45. package/lib/commonjs/localization/StringSet.en.js.map +1 -1
  46. package/lib/commonjs/platform/createPlayerService.expo.js +8 -2
  47. package/lib/commonjs/platform/createPlayerService.expo.js.map +1 -1
  48. package/lib/commonjs/platform/createPlayerService.native.js +9 -3
  49. package/lib/commonjs/platform/createPlayerService.native.js.map +1 -1
  50. package/lib/commonjs/platform/createRecorderService.native.js +8 -2
  51. package/lib/commonjs/platform/createRecorderService.native.js.map +1 -1
  52. package/lib/commonjs/version.js +1 -1
  53. package/lib/commonjs/version.js.map +1 -1
  54. package/lib/module/components/ChannelInput/SendInput.js +2 -1
  55. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  56. package/lib/module/components/ChannelInput/VoiceMessageInput.js +34 -24
  57. package/lib/module/components/ChannelInput/VoiceMessageInput.js.map +1 -1
  58. package/lib/module/components/ChannelInput/index.js +12 -6
  59. package/lib/module/components/ChannelInput/index.js.map +1 -1
  60. package/lib/module/components/ChannelMessageList/index.js +6 -1
  61. package/lib/module/components/ChannelMessageList/index.js.map +1 -1
  62. package/lib/module/components/ChannelThreadMessageList/index.js +6 -1
  63. package/lib/module/components/ChannelThreadMessageList/index.js.map +1 -1
  64. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js +1 -1
  65. package/lib/module/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.js.map +1 -1
  66. package/lib/module/components/GroupChannelMessageRenderer/index.js +1 -1
  67. package/lib/module/components/GroupChannelMessageRenderer/index.js.map +1 -1
  68. package/lib/module/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js +1 -1
  69. package/lib/module/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.js.map +1 -1
  70. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js +8 -4
  71. package/lib/module/components/ReactionAddons/BottomSheetReactionAddon.js.map +1 -1
  72. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js +7 -3
  73. package/lib/module/components/ReactionBottomSheets/ReactionListBottomSheet.js.map +1 -1
  74. package/lib/module/components/ThreadParentMessageRenderer/index.js +1 -1
  75. package/lib/module/components/ThreadParentMessageRenderer/index.js.map +1 -1
  76. package/lib/module/containers/SendbirdUIKitContainer.js +0 -1
  77. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  78. package/lib/module/contexts/PlatformServiceCtx.js +2 -1
  79. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -1
  80. package/lib/module/contexts/SBUHandlersCtx.js.map +1 -1
  81. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +2 -2
  82. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  83. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js +8 -4
  84. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsMenu.js.map +1 -1
  85. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js +1 -1
  86. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadMessageList.js.map +1 -1
  87. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js +8 -3
  88. package/lib/module/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.js.map +1 -1
  89. package/lib/module/fragments/createGroupChannelFragment.js +3 -2
  90. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  91. package/lib/module/fragments/createGroupChannelThreadFragment.js +3 -2
  92. package/lib/module/fragments/createGroupChannelThreadFragment.js.map +1 -1
  93. package/lib/module/hooks/useConnection.js +2 -2
  94. package/lib/module/hooks/useConnection.js.map +1 -1
  95. package/lib/module/hooks/usePushTokenRegistration.js +28 -7
  96. package/lib/module/hooks/usePushTokenRegistration.js.map +1 -1
  97. package/lib/module/localization/StringSet.en.js +2 -2
  98. package/lib/module/localization/StringSet.en.js.map +1 -1
  99. package/lib/module/platform/createPlayerService.expo.js +9 -3
  100. package/lib/module/platform/createPlayerService.expo.js.map +1 -1
  101. package/lib/module/platform/createPlayerService.native.js +10 -4
  102. package/lib/module/platform/createPlayerService.native.js.map +1 -1
  103. package/lib/module/platform/createRecorderService.native.js +9 -3
  104. package/lib/module/platform/createRecorderService.native.js.map +1 -1
  105. package/lib/module/version.js +1 -1
  106. package/lib/module/version.js.map +1 -1
  107. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  108. package/lib/typescript/src/contexts/SBUHandlersCtx.d.ts +1 -1
  109. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  110. package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +1 -1
  111. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadInput.d.ts +1 -1
  112. package/lib/typescript/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.d.ts +1 -1
  113. package/lib/typescript/src/domain/openChannel/component/OpenChannelInput.d.ts +1 -1
  114. package/lib/typescript/src/domain/openChannel/component/OpenChannelMessageList.d.ts +1 -1
  115. package/lib/typescript/src/version.d.ts +1 -1
  116. package/package.json +6 -6
  117. package/src/components/ChannelInput/SendInput.tsx +2 -1
  118. package/src/components/ChannelInput/VoiceMessageInput.tsx +40 -24
  119. package/src/components/ChannelInput/index.tsx +16 -6
  120. package/src/components/ChannelMessageList/index.tsx +5 -1
  121. package/src/components/ChannelThreadMessageList/index.tsx +5 -1
  122. package/src/components/GroupChannelMessageRenderer/GroupChannelMessageDateSeparator.tsx +1 -1
  123. package/src/components/GroupChannelMessageRenderer/index.tsx +1 -1
  124. package/src/components/OpenChannelMessageRenderer/OpenChannelMessageDateSeparator.tsx +1 -1
  125. package/src/components/ReactionAddons/BottomSheetReactionAddon.tsx +10 -5
  126. package/src/components/ReactionBottomSheets/ReactionListBottomSheet.tsx +7 -4
  127. package/src/components/ThreadParentMessageRenderer/index.tsx +1 -1
  128. package/src/containers/SendbirdUIKitContainer.tsx +0 -1
  129. package/src/contexts/PlatformServiceCtx.tsx +2 -1
  130. package/src/contexts/SBUHandlersCtx.tsx +1 -1
  131. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +2 -2
  132. package/src/domain/groupChannelSettings/component/GroupChannelSettingsMenu.tsx +8 -4
  133. package/src/domain/groupChannelThread/component/GroupChannelThreadMessageList.tsx +1 -1
  134. package/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx +7 -3
  135. package/src/fragments/createGroupChannelFragment.tsx +3 -2
  136. package/src/fragments/createGroupChannelThreadFragment.tsx +3 -2
  137. package/src/hooks/useConnection.ts +8 -2
  138. package/src/hooks/usePushTokenRegistration.ts +28 -7
  139. package/src/localization/StringSet.en.ts +2 -2
  140. package/src/platform/createPlayerService.expo.tsx +9 -3
  141. package/src/platform/createPlayerService.native.tsx +10 -4
  142. package/src/platform/createRecorderService.native.tsx +9 -3
  143. package/src/version.ts +1 -1
@@ -179,7 +179,8 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput(_ref, r
179
179
  onClose: onClose,
180
180
  onDismiss: () => {
181
181
  onDismiss();
182
- Promise.allSettled([playerService.reset(), recorderService.reset()]);
182
+ playerService.reset().catch(() => {});
183
+ recorderService.reset().catch(() => {});
183
184
  },
184
185
  backgroundStyle: {
185
186
  justifyContent: 'flex-end'
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_constants","_useChannelInputItems","_useContext","_SBUUtils","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SendInput","forwardRef","_ref","ref","style","VoiceMessageInput","MessageToReplyPreview","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","messageForThread","playerService","recorderService","usePlatformService","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","openSheet","useBottomSheet","toast","useToast","onClose","onDismiss","visible","voiceMessageInputVisible","setVisible","setVoiceMessageInputVisible","useDeferredModalState","messageReplyParams","useIIFE","groupChannel","uikit","isGroupChannel","replyType","parentMessageId","messageId","isReplyToChannel","messageMentionParams","enableMention","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","onFailureToSend","error","show","TOAST","SEND_MSG_ERROR","Logger","sendUserMessage","message","catch","sendFileMessage","file","sendVoiceMessage","durationMills","USER_MUTED_ERROR","CHANNEL_FROZEN_ERROR","metaArrays","MessageMetaArray","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","value","String","VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY","options","extension","sheetItems","useChannelInputItems","getPlaceholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_REPLY","threadInfo","replyCount","CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD","CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","voiceMessageEnabled","enableVoiceMessage","sendButtonVisible","Boolean","trim","createElement","View","styles","sendInputContainer","onPress","disabled","TextInput","multiline","disableFullscreenUI","editable","placeholder","textToMentionedComponents","VoiceMessageButton","UserMessageSendButton","Modal","disableBackgroundClose","Promise","allSettled","reset","backgroundStyle","justifyContent","type","onSend","_ref2","duration","_ref3","alert","useAlert","colors","useUIKitTheme","onPressWithPermissionCheck","recorderGranted","requestPermission","title","DIALOG","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","PERMISSION_MICROPHONE","PERMISSION_APP_NAME","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","playerGranted","PERMISSION_DEVICE_STORAGE","TouchableOpacity","Icon","color","ui","input","highlight","active","icon","size","containerStyle","sendIcon","_ref4","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","marginLeft","padding","_default","exports"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType, MessageMetaArray } from '@sendbird/chat/message';\nimport {\n Icon,\n Modal,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { Logger, useDeferredModalState, useIIFE } from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY, VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY } from '../../constants';\nimport { useChannelInputItems } from '../../hooks/useChannelInputItems';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { FileType } from '../../platform/types';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface SendInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n}\n\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n style,\n VoiceMessageInput,\n MessageToReplyPreview,\n AttachmentsButton,\n onPressSendUserMessage,\n onPressSendFileMessage,\n text,\n onChangeText,\n onSelectionChange,\n mentionedUsers,\n inputDisabled,\n inputFrozen,\n inputMuted,\n channel,\n messageToReply,\n setMessageToReply,\n messageForThread,\n },\n ref,\n) {\n const { playerService, recorderService } = usePlatformService();\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const toast = useToast();\n\n const {\n onClose,\n onDismiss,\n visible: voiceMessageInputVisible,\n setVisible: setVoiceMessageInputVisible,\n } = useDeferredModalState();\n\n const messageReplyParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n\n if (channel.isGroupChannel()) {\n if (groupChannel.channel.replyType === 'quote_reply' && messageToReply) {\n return {\n parentMessageId: messageToReply.messageId,\n isReplyToChannel: true,\n };\n } else if (groupChannel.channel.replyType === 'thread' && messageForThread) {\n return {\n parentMessageId: messageForThread.messageId,\n isReplyToChannel: true,\n };\n }\n }\n\n return {};\n });\n\n const messageMentionParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || !groupChannel.channel.enableMention) return {};\n return {\n mentionType: MentionType.USERS,\n mentionedUserIds: mentionedUsers.map((it) => it.user.userId),\n mentionedMessageTemplate: mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n groupChannel.channel.enableMention,\n ),\n };\n });\n\n const onFailureToSend = (error: Error) => {\n toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.SEND_MSG_ERROR, error);\n };\n\n const sendUserMessage = () => {\n onPressSendUserMessage({\n message: text,\n ...messageMentionParams,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sendFileMessage = (file: FileType) => {\n onPressSendFileMessage({\n file,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n setMessageToReply?.();\n };\n\n const sendVoiceMessage = (file: FileType, durationMills: number) => {\n if (inputMuted) {\n toast.show(STRINGS.TOAST.USER_MUTED_ERROR, 'error');\n Logger.error(STRINGS.TOAST.USER_MUTED_ERROR);\n } else if (inputFrozen) {\n toast.show(STRINGS.TOAST.CHANNEL_FROZEN_ERROR, 'error');\n Logger.error(STRINGS.TOAST.CHANNEL_FROZEN_ERROR);\n } else {\n onPressSendFileMessage({\n file,\n metaArrays: [\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,\n value: [String(durationMills)],\n }),\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY,\n value: [`voice/${recorderService.options.extension}`],\n }),\n ],\n ...messageReplyParams,\n }).catch(onFailureToSend);\n }\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sheetItems = useChannelInputItems(channel, sendFileMessage);\n\n const getPlaceholder = () => {\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (messageToReply) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY;\n if (messageForThread) {\n if (messageForThread.threadInfo && messageForThread.threadInfo.replyCount > 0) {\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD;\n } else {\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD;\n }\n }\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n };\n\n const voiceMessageEnabled = channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.enableVoiceMessage;\n const sendButtonVisible = Boolean(text.trim());\n\n return (\n <View>\n {MessageToReplyPreview && (\n <MessageToReplyPreview messageToReply={messageToReply} setMessageToReply={setMessageToReply} />\n )}\n <View style={styles.sendInputContainer}>\n {AttachmentsButton && <AttachmentsButton onPress={() => openSheet({ sheetItems })} disabled={inputDisabled} />}\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!inputDisabled}\n onChangeText={onChangeText}\n style={style}\n placeholder={getPlaceholder()}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n\n {voiceMessageEnabled && (\n <VoiceMessageButton\n visible={!sendButtonVisible}\n disabled={inputDisabled}\n onPress={() => setVoiceMessageInputVisible(true)}\n />\n )}\n <UserMessageSendButton visible={sendButtonVisible} disabled={inputDisabled} onPress={sendUserMessage} />\n {voiceMessageEnabled && VoiceMessageInput && (\n <Modal\n disableBackgroundClose\n onClose={onClose}\n onDismiss={() => {\n onDismiss();\n Promise.allSettled([playerService.reset(), recorderService.reset()]);\n }}\n backgroundStyle={{ justifyContent: 'flex-end' }}\n visible={voiceMessageInputVisible}\n type={'slide-no-gesture'}\n >\n <VoiceMessageInput onClose={onClose} onSend={({ file, duration }) => sendVoiceMessage(file, duration)} />\n </Modal>\n )}\n </View>\n </View>\n );\n});\n\ntype InputButtonProps = { visible: boolean; disabled: boolean; onPress: () => void };\nconst VoiceMessageButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { STRINGS } = useLocalization();\n const { alert } = useAlert();\n const { playerService, recorderService } = usePlatformService();\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n\n const onPressWithPermissionCheck = async () => {\n const recorderGranted = await recorderService.requestPermission();\n if (!recorderGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_MICROPHONE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for recorder');\n return;\n }\n\n const playerGranted = await playerService.requestPermission();\n if (!playerGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for player');\n return;\n }\n\n onPress();\n };\n\n return (\n <TouchableOpacity onPress={onPressWithPermissionCheck} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'audio-on'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\nconst UserMessageSendButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n return (\n <TouchableOpacity onPress={onPress} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n sendIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_constants","_useChannelInputItems","_useContext","_SBUUtils","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","SendInput","forwardRef","_ref","ref","style","VoiceMessageInput","MessageToReplyPreview","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","messageForThread","playerService","recorderService","usePlatformService","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","openSheet","useBottomSheet","toast","useToast","onClose","onDismiss","visible","voiceMessageInputVisible","setVisible","setVoiceMessageInputVisible","useDeferredModalState","messageReplyParams","useIIFE","groupChannel","uikit","isGroupChannel","replyType","parentMessageId","messageId","isReplyToChannel","messageMentionParams","enableMention","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","onFailureToSend","error","show","TOAST","SEND_MSG_ERROR","Logger","sendUserMessage","message","catch","sendFileMessage","file","sendVoiceMessage","durationMills","USER_MUTED_ERROR","CHANNEL_FROZEN_ERROR","metaArrays","MessageMetaArray","VOICE_MESSAGE_META_ARRAY_DURATION_KEY","value","String","VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY","options","extension","sheetItems","useChannelInputItems","getPlaceholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_MUTED","CHANNEL_INPUT_PLACEHOLDER_DISABLED","CHANNEL_INPUT_PLACEHOLDER_REPLY","threadInfo","replyCount","CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD","CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","voiceMessageEnabled","enableVoiceMessage","sendButtonVisible","Boolean","trim","createElement","View","styles","sendInputContainer","onPress","disabled","TextInput","multiline","disableFullscreenUI","editable","placeholder","textToMentionedComponents","VoiceMessageButton","UserMessageSendButton","Modal","disableBackgroundClose","reset","backgroundStyle","justifyContent","type","onSend","_ref2","duration","_ref3","alert","useAlert","colors","useUIKitTheme","onPressWithPermissionCheck","recorderGranted","requestPermission","title","DIALOG","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","PERMISSION_MICROPHONE","PERMISSION_APP_NAME","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","playerGranted","PERMISSION_DEVICE_STORAGE","TouchableOpacity","Icon","color","ui","input","highlight","active","icon","size","containerStyle","sendIcon","_ref4","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","marginLeft","padding","_default","exports"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n TextInput as RNTextInput,\n TextInputSelectionChangeEventData,\n TouchableOpacity,\n View,\n} from 'react-native';\n\nimport { MentionType, MessageMetaArray } from '@sendbird/chat/message';\nimport {\n Icon,\n Modal,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { Logger, useDeferredModalState, useIIFE } from '@sendbird/uikit-utils';\n\nimport { VOICE_MESSAGE_META_ARRAY_DURATION_KEY, VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY } from '../../constants';\nimport { useChannelInputItems } from '../../hooks/useChannelInputItems';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport type { FileType } from '../../platform/types';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface SendInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n mentionedUsers: MentionedUser[];\n}\n\nconst SendInput = forwardRef<RNTextInput, SendInputProps>(function SendInput(\n {\n style,\n VoiceMessageInput,\n MessageToReplyPreview,\n AttachmentsButton,\n onPressSendUserMessage,\n onPressSendFileMessage,\n text,\n onChangeText,\n onSelectionChange,\n mentionedUsers,\n inputDisabled,\n inputFrozen,\n inputMuted,\n channel,\n messageToReply,\n setMessageToReply,\n messageForThread,\n },\n ref,\n) {\n const { playerService, recorderService } = usePlatformService();\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const toast = useToast();\n\n const {\n onClose,\n onDismiss,\n visible: voiceMessageInputVisible,\n setVisible: setVoiceMessageInputVisible,\n } = useDeferredModalState();\n\n const messageReplyParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n\n if (channel.isGroupChannel()) {\n if (groupChannel.channel.replyType === 'quote_reply' && messageToReply) {\n return {\n parentMessageId: messageToReply.messageId,\n isReplyToChannel: true,\n };\n } else if (groupChannel.channel.replyType === 'thread' && messageForThread) {\n return {\n parentMessageId: messageForThread.messageId,\n isReplyToChannel: true,\n };\n }\n }\n\n return {};\n });\n\n const messageMentionParams = useIIFE(() => {\n const { groupChannel } = sbOptions.uikit;\n if (!channel.isGroupChannel() || !groupChannel.channel.enableMention) return {};\n return {\n mentionType: MentionType.USERS,\n mentionedUserIds: mentionedUsers.map((it) => it.user.userId),\n mentionedMessageTemplate: mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n groupChannel.channel.enableMention,\n ),\n };\n });\n\n const onFailureToSend = (error: Error) => {\n toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.SEND_MSG_ERROR, error);\n };\n\n const sendUserMessage = () => {\n onPressSendUserMessage({\n message: text,\n ...messageMentionParams,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sendFileMessage = (file: FileType) => {\n onPressSendFileMessage({\n file,\n ...messageReplyParams,\n }).catch(onFailureToSend);\n\n setMessageToReply?.();\n };\n\n const sendVoiceMessage = (file: FileType, durationMills: number) => {\n if (inputMuted) {\n toast.show(STRINGS.TOAST.USER_MUTED_ERROR, 'error');\n Logger.error(STRINGS.TOAST.USER_MUTED_ERROR);\n } else if (inputFrozen) {\n toast.show(STRINGS.TOAST.CHANNEL_FROZEN_ERROR, 'error');\n Logger.error(STRINGS.TOAST.CHANNEL_FROZEN_ERROR);\n } else {\n onPressSendFileMessage({\n file,\n metaArrays: [\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_DURATION_KEY,\n value: [String(durationMills)],\n }),\n new MessageMetaArray({\n key: VOICE_MESSAGE_META_ARRAY_MESSAGE_TYPE_KEY,\n value: [`voice/${recorderService.options.extension}`],\n }),\n ],\n ...messageReplyParams,\n }).catch(onFailureToSend);\n }\n\n onChangeText('');\n setMessageToReply?.();\n };\n\n const sheetItems = useChannelInputItems(channel, sendFileMessage);\n\n const getPlaceholder = () => {\n if (inputMuted) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_MUTED;\n if (inputFrozen) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (inputDisabled) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_DISABLED;\n if (messageToReply) return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY;\n if (messageForThread) {\n if (messageForThread.threadInfo && messageForThread.threadInfo.replyCount > 0) {\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_TO_THREAD;\n } else {\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_REPLY_IN_THREAD;\n }\n }\n\n return STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE;\n };\n\n const voiceMessageEnabled = channel.isGroupChannel() && sbOptions.uikit.groupChannel.channel.enableVoiceMessage;\n const sendButtonVisible = Boolean(text.trim());\n\n return (\n <View>\n {MessageToReplyPreview && (\n <MessageToReplyPreview messageToReply={messageToReply} setMessageToReply={setMessageToReply} />\n )}\n <View style={styles.sendInputContainer}>\n {AttachmentsButton && <AttachmentsButton onPress={() => openSheet({ sheetItems })} disabled={inputDisabled} />}\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!inputDisabled}\n onChangeText={onChangeText}\n style={style}\n placeholder={getPlaceholder()}\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n\n {voiceMessageEnabled && (\n <VoiceMessageButton\n visible={!sendButtonVisible}\n disabled={inputDisabled}\n onPress={() => setVoiceMessageInputVisible(true)}\n />\n )}\n <UserMessageSendButton visible={sendButtonVisible} disabled={inputDisabled} onPress={sendUserMessage} />\n {voiceMessageEnabled && VoiceMessageInput && (\n <Modal\n disableBackgroundClose\n onClose={onClose}\n onDismiss={() => {\n onDismiss();\n playerService.reset().catch(() => {});\n recorderService.reset().catch(() => {});\n }}\n backgroundStyle={{ justifyContent: 'flex-end' }}\n visible={voiceMessageInputVisible}\n type={'slide-no-gesture'}\n >\n <VoiceMessageInput onClose={onClose} onSend={({ file, duration }) => sendVoiceMessage(file, duration)} />\n </Modal>\n )}\n </View>\n </View>\n );\n});\n\ntype InputButtonProps = { visible: boolean; disabled: boolean; onPress: () => void };\nconst VoiceMessageButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { STRINGS } = useLocalization();\n const { alert } = useAlert();\n const { playerService, recorderService } = usePlatformService();\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n\n const onPressWithPermissionCheck = async () => {\n const recorderGranted = await recorderService.requestPermission();\n if (!recorderGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_MICROPHONE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for recorder');\n return;\n }\n\n const playerGranted = await playerService.requestPermission();\n if (!playerGranted) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE(\n STRINGS.LABELS.PERMISSION_DEVICE_STORAGE,\n STRINGS.LABELS.PERMISSION_APP_NAME,\n ),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n Logger.error('Failed to request permission for player');\n return;\n }\n\n onPress();\n };\n\n return (\n <TouchableOpacity onPress={onPressWithPermissionCheck} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'audio-on'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\nconst UserMessageSendButton = ({ visible, disabled, onPress }: InputButtonProps) => {\n const { colors } = useUIKitTheme();\n if (!visible) return null;\n return (\n <TouchableOpacity onPress={onPress} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.sendIcon}\n />\n </TouchableOpacity>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n sendIcon: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
@@ -36,32 +36,42 @@ const VoiceMessageInput = _ref => {
36
36
  });
37
37
  const uiColors = colors.ui.voiceMessageInput.default[state.status !== 'idle' ? 'active' : 'inactive'];
38
38
  const onPressCancel = async () => {
39
- actions.cancel();
40
- onClose();
39
+ await actions.cancel().catch(error => {
40
+ _uikitUtils.Logger.warn('Failed to cancel voice message input', error);
41
+ }).finally(() => {
42
+ onClose();
43
+ });
41
44
  };
42
45
  const onPressSend = async () => {
43
- actions.send();
44
- onClose();
46
+ await actions.send().catch(error => {
47
+ _uikitUtils.Logger.warn('Failed to send voice message', error);
48
+ }).finally(() => {
49
+ onClose();
50
+ });
45
51
  };
46
- const onPressVoiceMessageAction = () => {
47
- switch (state.status) {
48
- case 'idle':
49
- actions.startRecording();
50
- break;
51
- case 'recording':
52
- if (lessThanMinimumDuration) {
53
- actions.cancel();
54
- } else {
55
- actions.stopRecording();
56
- }
57
- break;
58
- case 'recording_completed':
59
- case 'playing_paused':
60
- actions.playPlayer();
61
- break;
62
- case 'playing':
63
- actions.pausePlayer();
64
- break;
52
+ const onPressVoiceMessageAction = async () => {
53
+ try {
54
+ switch (state.status) {
55
+ case 'idle':
56
+ await actions.startRecording();
57
+ break;
58
+ case 'recording':
59
+ if (lessThanMinimumDuration) {
60
+ await actions.cancel();
61
+ } else {
62
+ await actions.stopRecording();
63
+ }
64
+ break;
65
+ case 'recording_completed':
66
+ case 'playing_paused':
67
+ await actions.playPlayer();
68
+ break;
69
+ case 'playing':
70
+ await actions.pausePlayer();
71
+ break;
72
+ }
73
+ } catch (error) {
74
+ _uikitUtils.Logger.warn('Failed to run voice message action.', state);
65
75
  }
66
76
  };
67
77
  const renderActionIcon = () => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useVoiceMessageInput","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","VoiceMessageInput","_ref","onClose","onSend","STRINGS","useLocalization","colors","useUIKitTheme","actions","state","useVoiceMessageInput","file","duration","uiColors","ui","voiceMessageInput","status","onPressCancel","cancel","onPressSend","send","onPressVoiceMessageAction","startRecording","lessThanMinimumDuration","stopRecording","playPlayer","pausePlayer","renderActionIcon","createElement","Icon","icon","size","color","recording","actionIcon","isRecorderState","recordingTime","currentTime","minDuration","remainingTime","playingTime","Box","backgroundColor","background","paddingVertical","paddingHorizontal","style","styles","container","ProgressBar","progressBar","current","conditionChaining","total","maxDuration","trackColor","progressTrack","overlay","flex","flexDirection","alignItems","justifyContent","paddingRight","RecordingLight","visible","Text","caption1","lineHeight","undefined","marginLeft","textTime","millsToMMSS","height","CancelButton","label","LABELS","VOICE_MESSAGE_INPUT_CANCEL","onPress","SendButton","disabled","position","PressBox","activeOpacity","width","borderRadius","actionIconBackground","props","value","useRef","Animated","Value","animation","loop","sequence","timing","toValue","useNativeDriver","useEffect","start","reset","View","opacity","active","button","textCancel","numberOfLines","sendIconBackground","padding","sendIcon","createStyleSheet","borderTopLeftRadius","borderTopRightRadius","marginBottom","_default","exports"],"sources":["VoiceMessageInput.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated } from 'react-native';\n\nimport {\n Box,\n Icon,\n PressBox,\n ProgressBar,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining, millsToMMSS } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\nimport useVoiceMessageInput from '../../hooks/useVoiceMessageInput';\nimport type { FileType } from '../../platform/types';\n\nexport type VoiceMessageInputProps = {\n onClose: () => Promise<void>;\n onSend: (params: { file: FileType; duration: number }) => void;\n};\n\nconst VoiceMessageInput = ({ onClose, onSend }: VoiceMessageInputProps) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { actions, state } = useVoiceMessageInput({\n onSend: (file, duration) => onSend({ file, duration }),\n onClose,\n });\n\n const uiColors = colors.ui.voiceMessageInput.default[state.status !== 'idle' ? 'active' : 'inactive'];\n\n const onPressCancel = async () => {\n actions.cancel();\n onClose();\n };\n\n const onPressSend = async () => {\n actions.send();\n onClose();\n };\n\n const onPressVoiceMessageAction = () => {\n switch (state.status) {\n case 'idle':\n actions.startRecording();\n break;\n case 'recording':\n if (lessThanMinimumDuration) {\n actions.cancel();\n } else {\n actions.stopRecording();\n }\n break;\n case 'recording_completed':\n case 'playing_paused':\n actions.playPlayer();\n break;\n case 'playing':\n actions.pausePlayer();\n break;\n }\n };\n const renderActionIcon = () => {\n switch (state.status) {\n case 'idle':\n return <Icon icon={'recording'} size={20} color={uiColors.recording} />;\n case 'recording':\n return <Icon icon={'stop'} size={20} color={uiColors.actionIcon} />;\n case 'recording_completed':\n case 'playing_paused':\n return <Icon icon={'play'} size={20} color={uiColors.actionIcon} />;\n case 'playing':\n return <Icon icon={'pause'} size={20} color={uiColors.actionIcon} />;\n }\n };\n\n const isRecorderState = state.status === 'recording' || state.status === 'recording_completed';\n const lessThanMinimumDuration = state.recordingTime.currentTime < state.recordingTime.minDuration;\n const remainingTime = state.playingTime.duration - state.playingTime.currentTime;\n\n return (\n <Box backgroundColor={uiColors.background} paddingVertical={24} paddingHorizontal={16} style={styles.container}>\n {/** Progress bar **/}\n <ProgressBar\n style={styles.progressBar}\n current={conditionChaining(\n [state.status === 'recording', state.status === 'recording_completed'],\n [state.recordingTime.currentTime, 0, state.playingTime.currentTime],\n )}\n total={(isRecorderState ? state.recordingTime.maxDuration : state.playingTime.duration) || 1}\n trackColor={uiColors.progressTrack}\n overlay={\n <Box flex={1} flexDirection={'row'} alignItems={'center'} justifyContent={'flex-end'} paddingRight={16}>\n <RecordingLight visible={state.status === 'recording'} />\n <Text caption1 style={{ lineHeight: undefined, marginLeft: 6 }} color={uiColors.textTime}>\n {millsToMMSS(isRecorderState ? state.recordingTime.currentTime : remainingTime)}\n </Text>\n </Box>\n }\n />\n\n <Box height={34} alignItems={'center'} justifyContent={'center'}>\n {/** Cancel / Send **/}\n <Box flexDirection={'row'}>\n <CancelButton label={STRINGS.LABELS.VOICE_MESSAGE_INPUT_CANCEL} onPress={onPressCancel} />\n <Box flex={1} />\n <SendButton disabled={state.status === 'idle' || lessThanMinimumDuration} onPress={onPressSend} />\n </Box>\n\n {/** Record / Stop / Play / Pause **/}\n <Box style={{ position: 'absolute' }} alignItems={'center'} justifyContent={'center'}>\n <PressBox activeOpacity={0.5} onPress={onPressVoiceMessageAction}>\n <Box\n width={34}\n height={34}\n borderRadius={17}\n alignItems={'center'}\n justifyContent={'center'}\n backgroundColor={uiColors.actionIconBackground}\n >\n {renderActionIcon()}\n </Box>\n </PressBox>\n </Box>\n </Box>\n </Box>\n );\n};\n\nconst RecordingLight = (props: { visible: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const value = useRef(new Animated.Value(0)).current;\n const animation = useRef(\n Animated.loop(\n Animated.sequence([\n Animated.timing(value, { toValue: 1, duration: 500, useNativeDriver: true }),\n Animated.timing(value, { toValue: 0, duration: 500, useNativeDriver: true }),\n ]),\n ),\n ).current;\n\n useEffect(() => {\n if (props.visible) animation.start();\n return () => {\n animation.reset();\n };\n }, [props.visible]);\n\n if (!props.visible) return null;\n return (\n <Animated.View\n style={{\n width: 12,\n height: 12,\n borderRadius: 6,\n opacity: value,\n backgroundColor: colors.ui.voiceMessageInput.default.active.recording,\n }}\n />\n );\n};\n\nconst CancelButton = (props: { onPress: () => void; label: string }) => {\n const { colors } = useUIKitTheme();\n\n return (\n <PressBox activeOpacity={0.8} onPress={props.onPress}>\n <Box paddingHorizontal={12} height={'100%'} alignItems={'center'} justifyContent={'center'}>\n <Text button color={colors.ui.voiceMessageInput.default.active.textCancel} numberOfLines={1}>\n {props.label}\n </Text>\n </Box>\n </PressBox>\n );\n};\n\nconst SendButton = (props: { onPress: () => void; disabled: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const uiColors = colors.ui.voiceMessageInput.default[props.disabled ? 'inactive' : 'active'];\n\n return (\n <PressBox disabled={props.disabled} activeOpacity={0.8} onPress={props.onPress}>\n <Box backgroundColor={uiColors.sendIconBackground} padding={7} borderRadius={40}>\n <Icon icon={'send'} size={20} color={uiColors.sendIcon} />\n </Box>\n </PressBox>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n progressBar: {\n height: 36,\n marginBottom: 16,\n borderRadius: 18,\n },\n});\n\nexport default VoiceMessageInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useVoiceMessageInput","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","VoiceMessageInput","_ref","onClose","onSend","STRINGS","useLocalization","colors","useUIKitTheme","actions","state","useVoiceMessageInput","file","duration","uiColors","ui","voiceMessageInput","status","onPressCancel","cancel","catch","error","Logger","warn","finally","onPressSend","send","onPressVoiceMessageAction","startRecording","lessThanMinimumDuration","stopRecording","playPlayer","pausePlayer","renderActionIcon","createElement","Icon","icon","size","color","recording","actionIcon","isRecorderState","recordingTime","currentTime","minDuration","remainingTime","playingTime","Box","backgroundColor","background","paddingVertical","paddingHorizontal","style","styles","container","ProgressBar","progressBar","current","conditionChaining","total","maxDuration","trackColor","progressTrack","overlay","flex","flexDirection","alignItems","justifyContent","paddingRight","RecordingLight","visible","Text","caption1","lineHeight","undefined","marginLeft","textTime","millsToMMSS","height","CancelButton","label","LABELS","VOICE_MESSAGE_INPUT_CANCEL","onPress","SendButton","disabled","position","PressBox","activeOpacity","width","borderRadius","actionIconBackground","props","value","useRef","Animated","Value","animation","loop","sequence","timing","toValue","useNativeDriver","useEffect","start","reset","View","opacity","active","button","textCancel","numberOfLines","sendIconBackground","padding","sendIcon","createStyleSheet","borderTopLeftRadius","borderTopRightRadius","marginBottom","_default","exports"],"sources":["VoiceMessageInput.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport { Animated } from 'react-native';\n\nimport {\n Box,\n Icon,\n PressBox,\n ProgressBar,\n Text,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { Logger, conditionChaining, millsToMMSS } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\nimport useVoiceMessageInput from '../../hooks/useVoiceMessageInput';\nimport type { FileType } from '../../platform/types';\n\nexport type VoiceMessageInputProps = {\n onClose: () => Promise<void>;\n onSend: (params: { file: FileType; duration: number }) => void;\n};\n\nconst VoiceMessageInput = ({ onClose, onSend }: VoiceMessageInputProps) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { actions, state } = useVoiceMessageInput({\n onSend: (file, duration) => onSend({ file, duration }),\n onClose,\n });\n\n const uiColors = colors.ui.voiceMessageInput.default[state.status !== 'idle' ? 'active' : 'inactive'];\n\n const onPressCancel = async () => {\n await actions\n .cancel()\n .catch((error) => {\n Logger.warn('Failed to cancel voice message input', error);\n })\n .finally(() => {\n onClose();\n });\n };\n\n const onPressSend = async () => {\n await actions\n .send()\n .catch((error) => {\n Logger.warn('Failed to send voice message', error);\n })\n .finally(() => {\n onClose();\n });\n };\n\n const onPressVoiceMessageAction = async () => {\n try {\n switch (state.status) {\n case 'idle':\n await actions.startRecording();\n break;\n case 'recording':\n if (lessThanMinimumDuration) {\n await actions.cancel();\n } else {\n await actions.stopRecording();\n }\n break;\n case 'recording_completed':\n case 'playing_paused':\n await actions.playPlayer();\n break;\n case 'playing':\n await actions.pausePlayer();\n break;\n }\n } catch (error) {\n Logger.warn('Failed to run voice message action.', state);\n }\n };\n const renderActionIcon = () => {\n switch (state.status) {\n case 'idle':\n return <Icon icon={'recording'} size={20} color={uiColors.recording} />;\n case 'recording':\n return <Icon icon={'stop'} size={20} color={uiColors.actionIcon} />;\n case 'recording_completed':\n case 'playing_paused':\n return <Icon icon={'play'} size={20} color={uiColors.actionIcon} />;\n case 'playing':\n return <Icon icon={'pause'} size={20} color={uiColors.actionIcon} />;\n }\n };\n\n const isRecorderState = state.status === 'recording' || state.status === 'recording_completed';\n const lessThanMinimumDuration = state.recordingTime.currentTime < state.recordingTime.minDuration;\n const remainingTime = state.playingTime.duration - state.playingTime.currentTime;\n\n return (\n <Box backgroundColor={uiColors.background} paddingVertical={24} paddingHorizontal={16} style={styles.container}>\n {/** Progress bar **/}\n <ProgressBar\n style={styles.progressBar}\n current={conditionChaining(\n [state.status === 'recording', state.status === 'recording_completed'],\n [state.recordingTime.currentTime, 0, state.playingTime.currentTime],\n )}\n total={(isRecorderState ? state.recordingTime.maxDuration : state.playingTime.duration) || 1}\n trackColor={uiColors.progressTrack}\n overlay={\n <Box flex={1} flexDirection={'row'} alignItems={'center'} justifyContent={'flex-end'} paddingRight={16}>\n <RecordingLight visible={state.status === 'recording'} />\n <Text caption1 style={{ lineHeight: undefined, marginLeft: 6 }} color={uiColors.textTime}>\n {millsToMMSS(isRecorderState ? state.recordingTime.currentTime : remainingTime)}\n </Text>\n </Box>\n }\n />\n\n <Box height={34} alignItems={'center'} justifyContent={'center'}>\n {/** Cancel / Send **/}\n <Box flexDirection={'row'}>\n <CancelButton label={STRINGS.LABELS.VOICE_MESSAGE_INPUT_CANCEL} onPress={onPressCancel} />\n <Box flex={1} />\n <SendButton disabled={state.status === 'idle' || lessThanMinimumDuration} onPress={onPressSend} />\n </Box>\n\n {/** Record / Stop / Play / Pause **/}\n <Box style={{ position: 'absolute' }} alignItems={'center'} justifyContent={'center'}>\n <PressBox activeOpacity={0.5} onPress={onPressVoiceMessageAction}>\n <Box\n width={34}\n height={34}\n borderRadius={17}\n alignItems={'center'}\n justifyContent={'center'}\n backgroundColor={uiColors.actionIconBackground}\n >\n {renderActionIcon()}\n </Box>\n </PressBox>\n </Box>\n </Box>\n </Box>\n );\n};\n\nconst RecordingLight = (props: { visible: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const value = useRef(new Animated.Value(0)).current;\n const animation = useRef(\n Animated.loop(\n Animated.sequence([\n Animated.timing(value, { toValue: 1, duration: 500, useNativeDriver: true }),\n Animated.timing(value, { toValue: 0, duration: 500, useNativeDriver: true }),\n ]),\n ),\n ).current;\n\n useEffect(() => {\n if (props.visible) animation.start();\n return () => {\n animation.reset();\n };\n }, [props.visible]);\n\n if (!props.visible) return null;\n return (\n <Animated.View\n style={{\n width: 12,\n height: 12,\n borderRadius: 6,\n opacity: value,\n backgroundColor: colors.ui.voiceMessageInput.default.active.recording,\n }}\n />\n );\n};\n\nconst CancelButton = (props: { onPress: () => void; label: string }) => {\n const { colors } = useUIKitTheme();\n\n return (\n <PressBox activeOpacity={0.8} onPress={props.onPress}>\n <Box paddingHorizontal={12} height={'100%'} alignItems={'center'} justifyContent={'center'}>\n <Text button color={colors.ui.voiceMessageInput.default.active.textCancel} numberOfLines={1}>\n {props.label}\n </Text>\n </Box>\n </PressBox>\n );\n};\n\nconst SendButton = (props: { onPress: () => void; disabled: boolean }) => {\n const { colors } = useUIKitTheme();\n\n const uiColors = colors.ui.voiceMessageInput.default[props.disabled ? 'inactive' : 'active'];\n\n return (\n <PressBox disabled={props.disabled} activeOpacity={0.8} onPress={props.onPress}>\n <Box backgroundColor={uiColors.sendIconBackground} padding={7} borderRadius={40}>\n <Icon icon={'send'} size={20} color={uiColors.sendIcon} />\n </Box>\n </PressBox>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n progressBar: {\n height: 36,\n marginBottom: 16,\n borderRadius: 18,\n },\n});\n\nexport default VoiceMessageInput;\n"],"mappings":"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"}
@@ -149,11 +149,17 @@ const ChannelInput = props => {
149
149
  }));
150
150
  };
151
151
  const useTypingTrigger = (text, channel) => {
152
- if (channel.isGroupChannel()) {
153
- (0, _react.useEffect)(() => {
154
- if (text.length === 0) channel.endTyping();else channel.startTyping();
155
- }, [text]);
156
- }
152
+ (0, _react.useEffect)(() => {
153
+ function triggerTyping() {
154
+ if (channel.isGroupChannel()) {
155
+ const action = text.length === 0 ? channel.endTyping : channel.startTyping;
156
+ action().catch(error => {
157
+ _uikitUtils.Logger.debug('ChannelInput: Failed to trigger typing', error);
158
+ });
159
+ }
160
+ }
161
+ triggerTyping();
162
+ }, channel.isGroupChannel() ? [text] : []);
157
163
  };
158
164
  const useTextClearOnDisabled = (setText, chatDisabled) => {
159
165
  (0, _react.useEffect)(() => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_MessageToReplyPreview","_SendInput","_VoiceMessageInput","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","AUTO_FOCUS","Platform","select","ios","android","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","top","left","right","bottom","useSafeAreaInsets","colors","typography","useUIKitTheme","sbOptions","mentionManager","useSendbirdChat","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","inputMode","useIIFE","isFileMessage","mentionAvailable","uikit","groupChannel","enableMention","isGroupChannel","isBroadcast","inputKeyToRemount","inputHeight","setInputHeight","useState","styles","inputDefault","height","fontStyle","useMemo","body3","fontSize","lineHeight","textAlignVertical","textInputStyle","StyleSheet","flatten","input","style","useTypingTrigger","useTextClearOnDisabled","inputDisabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","replace","shouldRenderInput","createElement","SafeAreaBottom","Fragment","KeyboardAvoidingView","keyboardVerticalOffset","behavior","View","paddingLeft","paddingRight","backgroundColor","background","onLayout","e","nativeEvent","layout","inputContainer","ref","VoiceMessageInput","AttachmentsButton","MessageToReplyPreview","autoFocus","SuggestedMentionList","topInset","bottomInset","useEffect","endTyping","startTyping","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","_ref","createStyleSheet","justifyContent","width","flex","marginRight","borderRadius","paddingTop","paddingBottom","minHeight","maxHeight","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, StyleProp, StyleSheet, TextInput, TextStyle, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdMember,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\nimport useMentionTextInput from '../../hooks/useMentionTextInput';\nimport type { CommonComponent, MentionedUser, Range } from '../../types';\nimport type { AttachmentsButtonProps } from './AttachmentsButton';\nimport AttachmentsButton from './AttachmentsButton';\nimport EditInput from './EditInput';\nimport type { MessageToReplyPreviewProps } from './MessageToReplyPreview';\nimport { MessageToReplyPreview } from './MessageToReplyPreview';\nimport SendInput from './SendInput';\nimport VoiceMessageInput, { VoiceMessageInputProps } from './VoiceMessageInput';\n\nexport type SuggestedMentionListProps = {\n text: string;\n selection: Range;\n topInset: number;\n bottomInset: number;\n inputHeight: number;\n onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;\n mentionedUsers: MentionedUser[];\n};\n\nexport type ChannelInputProps = {\n // style\n style?: StyleProp<TextStyle>;\n\n // default\n channel: SendbirdBaseChannel;\n shouldRenderInput: boolean;\n keyboardAvoidOffset: number;\n\n // default actions\n onPressSendUserMessage: (params: SendbirdUserMessageCreateParams) => Promise<void>;\n onPressSendFileMessage: (params: SendbirdFileMessageCreateParams) => Promise<void>;\n onPressUpdateUserMessage: (message: SendbirdUserMessage, params: SendbirdUserMessageUpdateParams) => Promise<void>;\n onPressUpdateFileMessage: (message: SendbirdFileMessage, params: SendbirdFileMessageUpdateParams) => Promise<void>;\n\n // input status\n inputFrozen: boolean;\n inputMuted: boolean;\n inputDisabled: boolean;\n\n // edit\n messageToEdit: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // reply - only available on group channel\n messageToReply?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply?: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n messageForThread?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n\n // mention\n SuggestedMentionList?: CommonComponent<SuggestedMentionListProps>;\n\n // sub-components\n AttachmentsButton?: (props: AttachmentsButtonProps) => React.ReactNode | null;\n MessageToReplyPreview?: (props: MessageToReplyPreviewProps) => React.ReactNode | null;\n VoiceMessageInput?: (props: VoiceMessageInputProps) => React.ReactNode | null;\n};\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\n// -> This will affect to keyboard blur when add/remove first mentioned user.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors, typography } = useUIKitTheme();\n const { sbOptions, mentionManager } = useSendbirdChat();\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit,\n });\n const inputMode = useIIFE(() => {\n if (messageToEdit && !messageToEdit.isFileMessage()) return 'edit';\n else return 'send';\n });\n\n const mentionAvailable =\n sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;\n const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n const fontStyle = useMemo(() => {\n if (!typography.body3.fontSize) return typography.body3;\n // NOTE: iOS does not support textAlignVertical, so we should adjust lineHeight to center the text in multiline TextInput.\n return { ...typography.body3, lineHeight: typography.body3.fontSize * 1.275, textAlignVertical: 'center' };\n }, [typography.body3.fontSize]);\n\n const textInputStyle = StyleSheet.flatten([styles.input, fontStyle, props.style]);\n\n useTypingTrigger(text, channel);\n useTextClearOnDisabled(onChangeText, props.inputDisabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention = (user: SendbirdMember, searchStringRange: Range) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n VoiceMessageInput={props.VoiceMessageInput ?? VoiceMessageInput}\n AttachmentsButton={props.AttachmentsButton ?? AttachmentsButton}\n MessageToReplyPreview={props.MessageToReplyPreview ?? MessageToReplyPreview}\n style={textInputStyle}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n autoFocus={AUTO_FOCUS}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n style={textInputStyle}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdBaseChannel) => {\n if (channel.isGroupChannel()) {\n useEffect(() => {\n if (text.length === 0) channel.endTyping();\n else channel.startTyping();\n }, [text]);\n }\n};\n\nconst useTextClearOnDisabled = (setText: (val: string) => void, chatDisabled: boolean) => {\n useEffect(() => {\n if (chatDisabled) setText('');\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: React.MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdBaseMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n input: {\n flex: 1,\n marginRight: 4,\n borderRadius: 20,\n paddingTop: 8,\n paddingBottom: 8,\n minHeight: 36,\n // Android - padding area is hidden\n // iOS - padding area is visible\n maxHeight: Platform.select({ ios: 36 * 2 + 16, android: 36 * 2 }),\n },\n});\n\nexport default React.memo(ChannelInput);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_MessageToReplyPreview","_SendInput","_VoiceMessageInput","obj","__esModule","default","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_extends","assign","bind","target","i","arguments","length","source","apply","AUTO_FOCUS","Platform","select","ios","android","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","GET_INPUT_KEY","shouldReset","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","top","left","right","bottom","useSafeAreaInsets","colors","typography","useUIKitTheme","sbOptions","mentionManager","useSendbirdChat","selection","onSelectionChange","textInputRef","text","onChangeText","mentionedUsers","useMentionTextInput","inputMode","useIIFE","isFileMessage","mentionAvailable","uikit","groupChannel","enableMention","isGroupChannel","isBroadcast","inputKeyToRemount","inputHeight","setInputHeight","useState","styles","inputDefault","height","fontStyle","useMemo","body3","fontSize","lineHeight","textAlignVertical","textInputStyle","StyleSheet","flatten","input","style","useTypingTrigger","useTextClearOnDisabled","inputDisabled","useAutoFocusOnEditMode","onPressToMention","user","searchStringRange","mentionedMessageText","asMentionedMessageText","range","start","end","replace","shouldRenderInput","createElement","SafeAreaBottom","Fragment","KeyboardAvoidingView","keyboardVerticalOffset","behavior","View","paddingLeft","paddingRight","backgroundColor","background","onLayout","e","nativeEvent","layout","inputContainer","ref","VoiceMessageInput","AttachmentsButton","MessageToReplyPreview","autoFocus","SuggestedMentionList","topInset","bottomInset","useEffect","triggerTyping","action","endTyping","startTyping","catch","error","Logger","debug","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","_ref","createStyleSheet","justifyContent","width","flex","marginRight","borderRadius","paddingTop","paddingBottom","minHeight","maxHeight","_default","React","memo","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, StyleProp, StyleSheet, TextInput, TextStyle, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdBaseChannel,\n SendbirdBaseMessage,\n SendbirdFileMessage,\n SendbirdFileMessageCreateParams,\n SendbirdFileMessageUpdateParams,\n SendbirdMember,\n SendbirdUserMessage,\n SendbirdUserMessageCreateParams,\n SendbirdUserMessageUpdateParams,\n replace,\n useIIFE,\n} from '@sendbird/uikit-utils';\n\nimport { useSendbirdChat } from '../../hooks/useContext';\nimport useMentionTextInput from '../../hooks/useMentionTextInput';\nimport type { CommonComponent, MentionedUser, Range } from '../../types';\nimport type { AttachmentsButtonProps } from './AttachmentsButton';\nimport AttachmentsButton from './AttachmentsButton';\nimport EditInput from './EditInput';\nimport type { MessageToReplyPreviewProps } from './MessageToReplyPreview';\nimport { MessageToReplyPreview } from './MessageToReplyPreview';\nimport SendInput from './SendInput';\nimport VoiceMessageInput, { VoiceMessageInputProps } from './VoiceMessageInput';\n\nexport type SuggestedMentionListProps = {\n text: string;\n selection: Range;\n topInset: number;\n bottomInset: number;\n inputHeight: number;\n onPressToMention: (user: SendbirdMember, searchStringRange: Range) => void;\n mentionedUsers: MentionedUser[];\n};\n\nexport type ChannelInputProps = {\n // style\n style?: StyleProp<TextStyle>;\n\n // default\n channel: SendbirdBaseChannel;\n shouldRenderInput: boolean;\n keyboardAvoidOffset: number;\n\n // default actions\n onPressSendUserMessage: (params: SendbirdUserMessageCreateParams) => Promise<void>;\n onPressSendFileMessage: (params: SendbirdFileMessageCreateParams) => Promise<void>;\n onPressUpdateUserMessage: (message: SendbirdUserMessage, params: SendbirdUserMessageUpdateParams) => Promise<void>;\n onPressUpdateFileMessage: (message: SendbirdFileMessage, params: SendbirdFileMessageUpdateParams) => Promise<void>;\n\n // input status\n inputFrozen: boolean;\n inputMuted: boolean;\n inputDisabled: boolean;\n\n // edit\n messageToEdit: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n\n // reply - only available on group channel\n messageToReply?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n setMessageToReply?: (message?: undefined | SendbirdUserMessage | SendbirdFileMessage) => void;\n messageForThread?: undefined | SendbirdUserMessage | SendbirdFileMessage;\n\n // mention\n SuggestedMentionList?: CommonComponent<SuggestedMentionListProps>;\n\n // sub-components\n AttachmentsButton?: (props: AttachmentsButtonProps) => React.ReactNode | null;\n MessageToReplyPreview?: (props: MessageToReplyPreviewProps) => React.ReactNode | null;\n VoiceMessageInput?: (props: VoiceMessageInputProps) => React.ReactNode | null;\n};\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({ ios: 'padding' as const, default: undefined });\n\n// FIXME(iOS): Dynamic style does not work properly when typing the CJK. (https://github.com/facebook/react-native/issues/26107)\n// To workaround temporarily, change the key for re-mount the component.\n// -> This will affect to keyboard blur when add/remove first mentioned user.\nconst GET_INPUT_KEY = (shouldReset: boolean) => (shouldReset ? 'uikit-input-clear' : 'uikit-input');\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const { top, left, right, bottom } = useSafeAreaInsets();\n const { colors, typography } = useUIKitTheme();\n const { sbOptions, mentionManager } = useSendbirdChat();\n\n const { selection, onSelectionChange, textInputRef, text, onChangeText, mentionedUsers } = useMentionTextInput({\n messageToEdit,\n });\n const inputMode = useIIFE(() => {\n if (messageToEdit && !messageToEdit.isFileMessage()) return 'edit';\n else return 'send';\n });\n\n const mentionAvailable =\n sbOptions.uikit.groupChannel.channel.enableMention && channel.isGroupChannel() && !channel.isBroadcast;\n const inputKeyToRemount = GET_INPUT_KEY(mentionAvailable ? mentionedUsers.length === 0 : false);\n\n const [inputHeight, setInputHeight] = useState(styles.inputDefault.height);\n\n const fontStyle = useMemo(() => {\n if (!typography.body3.fontSize) return typography.body3;\n // NOTE: iOS does not support textAlignVertical, so we should adjust lineHeight to center the text in multiline TextInput.\n return { ...typography.body3, lineHeight: typography.body3.fontSize * 1.275, textAlignVertical: 'center' };\n }, [typography.body3.fontSize]);\n\n const textInputStyle = StyleSheet.flatten([styles.input, fontStyle, props.style]);\n\n useTypingTrigger(text, channel);\n useTextClearOnDisabled(onChangeText, props.inputDisabled);\n useAutoFocusOnEditMode(textInputRef, messageToEdit);\n\n const onPressToMention = (user: SendbirdMember, searchStringRange: Range) => {\n const mentionedMessageText = mentionManager.asMentionedMessageText(user, true);\n const range = { start: searchStringRange.start, end: searchStringRange.start + mentionedMessageText.length - 1 };\n\n onChangeText(replace(text, searchStringRange.start, searchStringRange.end, mentionedMessageText), { user, range });\n };\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={bottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView\n keyboardVerticalOffset={-bottom + keyboardAvoidOffset}\n behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}\n >\n <View style={{ paddingLeft: left, paddingRight: right, backgroundColor: colors.background }}>\n <View onLayout={(e) => setInputHeight(e.nativeEvent.layout.height)} style={styles.inputContainer}>\n {inputMode === 'send' && (\n <SendInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n VoiceMessageInput={props.VoiceMessageInput ?? VoiceMessageInput}\n AttachmentsButton={props.AttachmentsButton ?? AttachmentsButton}\n MessageToReplyPreview={props.MessageToReplyPreview ?? MessageToReplyPreview}\n style={textInputStyle}\n />\n )}\n {inputMode === 'edit' && messageToEdit && (\n <EditInput\n {...props}\n key={inputKeyToRemount}\n ref={textInputRef as never}\n text={text}\n onChangeText={onChangeText}\n autoFocus={AUTO_FOCUS}\n onSelectionChange={onSelectionChange}\n mentionedUsers={mentionedUsers}\n messageToEdit={messageToEdit}\n setMessageToEdit={setMessageToEdit}\n style={textInputStyle}\n />\n )}\n </View>\n <SafeAreaBottom height={bottom} />\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={top}\n bottomInset={bottom}\n onPressToMention={onPressToMention}\n mentionedUsers={mentionedUsers}\n />\n )}\n </>\n );\n};\n\nconst useTypingTrigger = (text: string, channel: SendbirdBaseChannel) => {\n useEffect(\n () => {\n function triggerTyping() {\n if (channel.isGroupChannel()) {\n const action = text.length === 0 ? channel.endTyping : channel.startTyping;\n action().catch((error) => {\n Logger.debug('ChannelInput: Failed to trigger typing', error);\n });\n }\n }\n\n triggerTyping();\n },\n channel.isGroupChannel() ? [text] : [],\n );\n};\n\nconst useTextClearOnDisabled = (setText: (val: string) => void, chatDisabled: boolean) => {\n useEffect(() => {\n if (chatDisabled) setText('');\n }, [chatDisabled]);\n};\n\nconst useAutoFocusOnEditMode = (\n textInputRef: React.MutableRefObject<TextInput | undefined>,\n messageToEdit?: SendbirdBaseMessage,\n) => {\n useEffect(() => {\n if (messageToEdit?.isUserMessage()) {\n if (!AUTO_FOCUS) setTimeout(() => textInputRef.current?.focus(), 500);\n }\n }, [messageToEdit]);\n};\n\nconst SafeAreaBottom = ({ height }: { height: number }) => {\n return <View style={{ height }} />;\n};\n\nconst styles = createStyleSheet({\n inputContainer: {\n justifyContent: 'center',\n width: '100%',\n },\n inputDefault: {\n height: 56,\n },\n input: {\n flex: 1,\n marginRight: 4,\n borderRadius: 20,\n paddingTop: 8,\n paddingBottom: 8,\n minHeight: 36,\n // Android - padding area is hidden\n // iOS - padding area is visible\n maxHeight: Platform.select({ ios: 36 * 2 + 16, android: 36 * 2 }),\n },\n});\n\nexport default React.memo(ChannelInput);\n"],"mappings":"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"}
@@ -10,6 +10,7 @@ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
10
10
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
11
11
  var _uikitUtils = require("@sendbird/uikit-utils");
12
12
  var _useContext = require("../../hooks/useContext");
13
+ var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
13
14
  var _ChatFlatList = _interopRequireDefault(require("../ChatFlatList"));
14
15
  var _ReactionAddons = require("../ReactionAddons");
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -197,9 +198,13 @@ const useCreateMessagePressActions = _ref3 => {
197
198
  if (message.isFileMessage()) {
198
199
  const fileType = (0, _uikitUtils.getFileType)(message.type || (0, _uikitUtils.getFileExtension)(message.name));
199
200
  if (['image', 'video', 'audio'].includes(fileType)) {
201
+ var _handlers$onOpenFileU;
200
202
  onPressMediaMessage === null || onPressMediaMessage === void 0 ? void 0 : onPressMediaMessage(message, () => onDeleteMessage(message), (0, _uikitUtils.getAvailableUriFromFileMessage)(message));
203
+ (_handlers$onOpenFileU = handlers.onOpenFileURL) === null || _handlers$onOpenFileU === void 0 ? void 0 : _handlers$onOpenFileU.call(handlers, message.url);
204
+ } else {
205
+ const openFile = handlers.onOpenFileURL ?? _SBUUtils.default.openURL;
206
+ openFile(message.url);
201
207
  }
202
- handlers.onOpenFileURL(message.url);
203
208
  }
204
209
  };
205
210
  const openSheetForFailedMessage = message => {
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","getAvailableUriFromFileMessage","onOpenFileURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","isVoiceMessage","configs","uikitWithAppInfo","HeaderComponent","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n }\n handlers.onOpenFileURL(message.url);\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n replyInThread: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'thread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_THREAD,\n onPress: () => onReplyInThreadMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeSafeAreaContext","_uikitReactNativeFoundation","_uikitUtils","_useContext","_SBUUtils","_ChatFlatList","_ReactionAddons","obj","__esModule","default","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ChannelMessageList","_ref","ref","searchItem","hasNext","channel","onEditMessage","onReplyMessage","onReplyInThreadMessage","onDeleteMessage","onResendFailedMessage","onPressMediaMessage","onPressParentMessage","currentUserId","renderNewMessagesButton","renderScrollToBottomButton","renderMessage","messages","newMessages","enableMessageGrouping","onScrolledAwayFromBottom","scrolledAwayFromBottom","onBottomReached","onTopReached","flatListProps","onPressNewMessagesButton","onPressScrollToBottomButton","STRINGS","useLocalization","colors","useUIKitTheme","show","useUserProfile","left","right","useSafeAreaInsets","createMessagePressActions","useCreateMessagePressActions","safeAreaLayout","paddingLeft","paddingRight","renderItem","useFreshCallback","_ref2","item","index","onPress","onLongPress","bottomSheetItem","message","prevMessage","nextMessage","onShowUserProfile","focused","startingPoint","createdAt","isFirstItem","createElement","View","style","flex","backgroundColor","background","isFrozen","ChannelFrozenBanner","styles","frozenBanner","text","LABELS","CHANNEL_MESSAGE_LIST_FROZEN","data","keyExtractor","messageKeyExtractor","contentContainerStyle","frozenListPadding","newMsgButton","visible","scrollButton","_ref3","handlers","useSBUHandlers","toast","useToast","openSheet","useBottomSheet","alert","useAlert","clipboardService","fileService","usePlatformService","sbOptions","useSendbirdChat","onResendFailure","error","TOAST","RESEND_MSG_ERROR","Logger","onDeleteFailure","DELETE_MSG_ERROR","onCopyText","isUserMessage","setString","COPY_OK","onDownloadFile","isFileMessage","toMegabyte","size","DOWNLOAD_START","save","fileUrl","url","fileName","name","fileType","type","then","response","DOWNLOAD_OK","log","catch","err","DOWNLOAD_ERROR","onOpenFile","getFileType","getFileExtension","includes","_handlers$onOpenFileU","getAvailableUriFromFileMessage","onOpenFileURL","openFile","SBUUtils","openURL","openSheetForFailedMessage","sheetItems","title","CHANNEL_MESSAGE_FAILED_RETRY","CHANNEL_MESSAGE_FAILED_REMOVE","titleColor","ui","dialog","none","destructive","alertForMessageDelete","CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE","buttons","CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL","CHANNEL_MESSAGE_DELETE_CONFIRM_OK","_ref4","menu","copy","icon","CHANNEL_MESSAGE_COPY","edit","CHANNEL_MESSAGE_EDIT","delete","disabled","threadInfo","replyCount","undefined","CHANNEL_MESSAGE_DELETE","reply","Boolean","parentMessageId","CHANNEL_MESSAGE_REPLY","replyInThread","CHANNEL_MESSAGE_THREAD","download","CHANNEL_MESSAGE_SAVE","push","isEphemeral","isMyMessage","sendingStatus","isGroupChannel","uikit","groupChannel","replyType","isVoiceMessage","configs","uikitWithAppInfo","HeaderComponent","shouldRenderReaction","isSuper","enableReactionsSupergroup","enableReactions","_ref5","onClose","ReactionAddons","BottomSheet","createStyleSheet","position","zIndex","top","paddingBottom","bottom","alignSelf","_default","React","forwardRef","exports"],"sources":["index.tsx"],"sourcesContent":["import React, { Ref } from 'react';\nimport { FlatList, FlatListProps, ListRenderItem, View } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport {\n BottomSheetItem,\n ChannelFrozenBanner,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n Logger,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdOpenChannel,\n SendbirdUserMessage,\n getAvailableUriFromFileMessage,\n getFileExtension,\n getFileType,\n isMyMessage,\n isVoiceMessage,\n messageKeyExtractor,\n shouldRenderReaction,\n toMegabyte,\n useFreshCallback,\n} from '@sendbird/uikit-utils';\n\nimport type { UserProfileContextType } from '../../contexts/UserProfileCtx';\nimport {\n useLocalization,\n usePlatformService,\n useSBUHandlers,\n useSendbirdChat,\n useUserProfile,\n} from '../../hooks/useContext';\nimport SBUUtils from '../../libs/SBUUtils';\nimport ChatFlatList from '../ChatFlatList';\nimport { ReactionAddons } from '../ReactionAddons';\n\ntype PressActions = { onPress?: () => void; onLongPress?: () => void; bottomSheetItem?: BottomSheetItem };\ntype HandleableMessage = SendbirdUserMessage | SendbirdFileMessage;\ntype CreateMessagePressActions = (params: { message: SendbirdMessage }) => PressActions;\nexport type ChannelMessageListProps<T extends SendbirdGroupChannel | SendbirdOpenChannel> = {\n enableMessageGrouping: boolean;\n currentUserId?: string;\n channel: T;\n messages: SendbirdMessage[];\n newMessages: SendbirdMessage[];\n searchItem?: { startingPoint: number };\n\n scrolledAwayFromBottom: boolean;\n onScrolledAwayFromBottom: (value: boolean) => void;\n onTopReached: () => void;\n onBottomReached: () => void;\n hasNext: () => boolean;\n\n onPressNewMessagesButton: (animated?: boolean) => void;\n onPressScrollToBottomButton: (animated?: boolean) => void;\n\n onEditMessage: (message: HandleableMessage) => void;\n onReplyMessage?: (message: HandleableMessage) => void; // only available on group channel\n onReplyInThreadMessage?: (message: HandleableMessage) => void; // only available on group channel\n onDeleteMessage: (message: HandleableMessage) => Promise<void>;\n onResendFailedMessage: (failedMessage: HandleableMessage) => Promise<HandleableMessage | void>;\n onPressParentMessage?: (parentMessage: SendbirdMessage, childMessage: HandleableMessage) => void;\n onPressMediaMessage?: (message: SendbirdFileMessage, deleteMessage: () => Promise<void>, uri: string) => void;\n\n renderMessage: (props: {\n focused: boolean;\n message: SendbirdMessage;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n onPress?: () => void;\n onLongPress?: () => void;\n onPressParentMessage?: ChannelMessageListProps<T>['onPressParentMessage'];\n onReplyInThreadMessage?: ChannelMessageListProps<T>['onReplyInThreadMessage'];\n onShowUserProfile?: UserProfileContextType['show'];\n channel: T;\n currentUserId?: ChannelMessageListProps<T>['currentUserId'];\n enableMessageGrouping: ChannelMessageListProps<T>['enableMessageGrouping'];\n bottomSheetItem?: BottomSheetItem;\n isFirstItem: boolean;\n hideParentMessage?: boolean;\n }) => React.ReactElement | null;\n renderNewMessagesButton:\n | null\n | ((props: { visible: boolean; onPress: () => void; newMessages: SendbirdMessage[] }) => React.ReactElement | null);\n renderScrollToBottomButton: null | ((props: { visible: boolean; onPress: () => void }) => React.ReactElement | null);\n flatListProps?: Omit<FlatListProps<SendbirdMessage>, 'data' | 'renderItem'>;\n} & {\n ref?: Ref<FlatList<SendbirdMessage>> | undefined;\n};\n\nconst ChannelMessageList = <T extends SendbirdGroupChannel | SendbirdOpenChannel>(\n {\n searchItem,\n hasNext,\n channel,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n onPressParentMessage,\n currentUserId,\n renderNewMessagesButton,\n renderScrollToBottomButton,\n renderMessage,\n messages,\n newMessages,\n enableMessageGrouping,\n onScrolledAwayFromBottom,\n scrolledAwayFromBottom,\n onBottomReached,\n onTopReached,\n flatListProps,\n onPressNewMessagesButton,\n onPressScrollToBottomButton,\n }: ChannelMessageListProps<T>,\n ref: React.ForwardedRef<FlatList<SendbirdMessage>>,\n) => {\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n const { show } = useUserProfile();\n const { left, right } = useSafeAreaInsets();\n const createMessagePressActions = useCreateMessagePressActions({\n channel,\n currentUserId,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onResendFailedMessage,\n onPressMediaMessage,\n });\n\n const safeAreaLayout = { paddingLeft: left, paddingRight: right };\n\n const renderItem: ListRenderItem<SendbirdMessage> = useFreshCallback(({ item, index }) => {\n const { onPress, onLongPress, bottomSheetItem } = createMessagePressActions({ message: item });\n return renderMessage({\n message: item,\n prevMessage: messages[index + 1],\n nextMessage: messages[index - 1],\n onPress,\n onLongPress,\n onPressParentMessage,\n onReplyInThreadMessage,\n onShowUserProfile: show,\n enableMessageGrouping,\n channel,\n currentUserId,\n focused: (searchItem?.startingPoint ?? -1) === item.createdAt,\n bottomSheetItem,\n isFirstItem: index === 0,\n });\n });\n\n return (\n <View style={[{ flex: 1, backgroundColor: colors.background }, safeAreaLayout]}>\n {channel.isFrozen && (\n <ChannelFrozenBanner style={styles.frozenBanner} text={STRINGS.LABELS.CHANNEL_MESSAGE_LIST_FROZEN} />\n )}\n <ChatFlatList\n {...flatListProps}\n onTopReached={onTopReached}\n onBottomReached={onBottomReached}\n onScrolledAwayFromBottom={onScrolledAwayFromBottom}\n ref={ref}\n data={messages}\n renderItem={renderItem}\n keyExtractor={messageKeyExtractor}\n contentContainerStyle={[\n // { minHeight: '100%', justifyContent: 'flex-end' },\n channel.isFrozen && styles.frozenListPadding,\n flatListProps?.contentContainerStyle,\n ]}\n />\n {renderNewMessagesButton && (\n <View style={[styles.newMsgButton, safeAreaLayout]}>\n {renderNewMessagesButton({\n visible: newMessages.length > 0 && (hasNext() || scrolledAwayFromBottom),\n onPress: () => onPressNewMessagesButton(),\n newMessages,\n })}\n </View>\n )}\n {renderScrollToBottomButton && (\n <View style={[styles.scrollButton, safeAreaLayout]}>\n {renderScrollToBottomButton({\n visible: hasNext() || scrolledAwayFromBottom,\n onPress: () => onPressScrollToBottomButton(),\n })}\n </View>\n )}\n </View>\n );\n};\n\nconst useCreateMessagePressActions = <T extends SendbirdGroupChannel | SendbirdOpenChannel>({\n channel,\n currentUserId,\n onResendFailedMessage,\n onEditMessage,\n onReplyMessage,\n onReplyInThreadMessage,\n onDeleteMessage,\n onPressMediaMessage,\n}: Pick<\n ChannelMessageListProps<T>,\n | 'channel'\n | 'currentUserId'\n | 'onEditMessage'\n | 'onReplyMessage'\n | 'onReplyInThreadMessage'\n | 'onDeleteMessage'\n | 'onResendFailedMessage'\n | 'onPressMediaMessage'\n>): CreateMessagePressActions => {\n const handlers = useSBUHandlers();\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const { clipboardService, fileService } = usePlatformService();\n const { sbOptions } = useSendbirdChat();\n\n const onResendFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.RESEND_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.RESEND_MSG_ERROR, error);\n };\n\n const onDeleteFailure = (error: Error) => {\n toast.show(STRINGS.TOAST.DELETE_MSG_ERROR, 'error');\n Logger.error(STRINGS.TOAST.DELETE_MSG_ERROR, error);\n };\n\n const onCopyText = (message: HandleableMessage) => {\n if (message.isUserMessage()) {\n clipboardService.setString(message.message || '');\n toast.show(STRINGS.TOAST.COPY_OK, 'success');\n }\n };\n\n const onDownloadFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n if (toMegabyte(message.size) > 4) {\n toast.show(STRINGS.TOAST.DOWNLOAD_START, 'success');\n }\n\n fileService\n .save({ fileUrl: message.url, fileName: message.name, fileType: message.type })\n .then((response) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_OK, 'success');\n Logger.log('File saved to', response);\n })\n .catch((err) => {\n toast.show(STRINGS.TOAST.DOWNLOAD_ERROR, 'error');\n Logger.log('File save failure', err);\n });\n }\n };\n\n const onOpenFile = (message: HandleableMessage) => {\n if (message.isFileMessage()) {\n const fileType = getFileType(message.type || getFileExtension(message.name));\n if (['image', 'video', 'audio'].includes(fileType)) {\n onPressMediaMessage?.(message, () => onDeleteMessage(message), getAvailableUriFromFileMessage(message));\n handlers.onOpenFileURL?.(message.url);\n } else {\n const openFile = handlers.onOpenFileURL ?? SBUUtils.openURL;\n openFile(message.url);\n }\n }\n };\n\n const openSheetForFailedMessage = (message: HandleableMessage) => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_RETRY,\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n },\n {\n title: STRINGS.LABELS.CHANNEL_MESSAGE_FAILED_REMOVE,\n titleColor: colors.ui.dialog.default.none.destructive,\n onPress: () => alertForMessageDelete(message),\n },\n ],\n });\n };\n\n const alertForMessageDelete = (message: HandleableMessage) => {\n alert({\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_TITLE,\n buttons: [\n { text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_CANCEL },\n {\n text: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE_CONFIRM_OK,\n style: 'destructive',\n onPress: () => {\n onDeleteMessage(message).catch(onDeleteFailure);\n },\n },\n ],\n });\n };\n\n return ({ message }) => {\n if (!message.isUserMessage() && !message.isFileMessage()) return {};\n\n const sheetItems: BottomSheetItem['sheetItems'] = [];\n const menu = {\n copy: (message: HandleableMessage) => ({\n icon: 'copy' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_COPY,\n onPress: () => onCopyText(message),\n }),\n edit: (message: HandleableMessage) => ({\n icon: 'edit' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_EDIT,\n onPress: () => onEditMessage(message),\n }),\n delete: (message: HandleableMessage) => ({\n disabled: message.threadInfo ? message.threadInfo.replyCount > 0 : undefined,\n icon: 'delete' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_DELETE,\n onPress: () => alertForMessageDelete(message),\n }),\n reply: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'reply' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_REPLY,\n onPress: () => onReplyMessage?.(message),\n }),\n replyInThread: (message: HandleableMessage) => ({\n disabled: Boolean(message.parentMessageId),\n icon: 'thread' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_THREAD,\n onPress: () => onReplyInThreadMessage?.(message),\n }),\n download: (message: HandleableMessage) => ({\n icon: 'download' as const,\n title: STRINGS.LABELS.CHANNEL_MESSAGE_SAVE,\n onPress: () => onDownloadFile(message),\n }),\n };\n\n if (message.isUserMessage()) {\n sheetItems.push(menu.copy(message));\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.edit(message));\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n if (message.isFileMessage()) {\n if (!isVoiceMessage(message)) {\n sheetItems.push(menu.download(message));\n }\n if (!channel.isEphemeral) {\n if (isMyMessage(message, currentUserId) && message.sendingStatus === 'succeeded') {\n sheetItems.push(menu.delete(message));\n }\n if (channel.isGroupChannel()) {\n if (sbOptions.uikit.groupChannel.channel.replyType === 'thread' && onReplyInThreadMessage !== undefined) {\n sheetItems.push(menu.replyInThread(message));\n } else if (sbOptions.uikit.groupChannel.channel.replyType === 'quote_reply') {\n sheetItems.push(menu.reply(message));\n }\n }\n }\n }\n\n const configs = sbOptions.uikitWithAppInfo.groupChannel.channel;\n const bottomSheetItem: BottomSheetItem = {\n sheetItems,\n HeaderComponent: shouldRenderReaction(\n channel,\n channel.isGroupChannel() && (channel.isSuper ? configs.enableReactionsSupergroup : configs.enableReactions),\n )\n ? ({ onClose }) => <ReactionAddons.BottomSheet message={message} channel={channel} onClose={onClose} />\n : undefined,\n };\n\n switch (true) {\n case message.sendingStatus === 'pending': {\n return {\n onPress: undefined,\n onLongPress: undefined,\n bottomSheetItem: undefined,\n };\n }\n\n case message.sendingStatus === 'failed': {\n return {\n onPress: () => onResendFailedMessage(message).catch(onResendFailure),\n onLongPress: () => openSheetForFailedMessage(message),\n bottomSheetItem,\n };\n }\n\n case message.isFileMessage(): {\n return {\n onPress: () => onOpenFile(message),\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n\n default: {\n return {\n onPress: undefined,\n onLongPress: () => openSheet(bottomSheetItem),\n bottomSheetItem,\n };\n }\n }\n };\n};\n\nconst styles = createStyleSheet({\n frozenBanner: {\n position: 'absolute',\n zIndex: 999,\n top: 8,\n left: 8,\n right: 8,\n },\n frozenListPadding: {\n paddingBottom: 32,\n },\n newMsgButton: {\n position: 'absolute',\n zIndex: 999,\n bottom: 10,\n alignSelf: 'center',\n },\n scrollButton: {\n position: 'absolute',\n zIndex: 998,\n bottom: 10,\n right: 16,\n },\n});\n\n// NOTE: Due to Generic inference is not working on forwardRef, we need to cast it as typeof ChannelMessageList and implicit `ref` prop\nexport default React.forwardRef(ChannelMessageList) as typeof ChannelMessageList;\n"],"mappings":"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"}