@sendbird/uikit-react-native 3.10.1 → 3.10.2

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 (44) hide show
  1. package/lib/commonjs/components/ChannelInput/EditInput.js +5 -3
  2. package/lib/commonjs/components/ChannelInput/EditInput.js.map +1 -1
  3. package/lib/commonjs/components/ChannelInput/SendInput.js +19 -4
  4. package/lib/commonjs/components/ChannelInput/SendInput.js.map +1 -1
  5. package/lib/commonjs/components/ChannelInput/index.js +16 -4
  6. package/lib/commonjs/components/ChannelInput/index.js.map +1 -1
  7. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +29 -5
  8. package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  9. package/lib/commonjs/domain/groupChannel/module/moduleContext.js +36 -2
  10. package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
  11. package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
  12. package/lib/commonjs/fragments/createGroupChannelFragment.js +3 -1
  13. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  14. package/lib/commonjs/version.js +1 -1
  15. package/lib/commonjs/version.js.map +1 -1
  16. package/lib/module/components/ChannelInput/EditInput.js +5 -3
  17. package/lib/module/components/ChannelInput/EditInput.js.map +1 -1
  18. package/lib/module/components/ChannelInput/SendInput.js +20 -5
  19. package/lib/module/components/ChannelInput/SendInput.js.map +1 -1
  20. package/lib/module/components/ChannelInput/index.js +17 -5
  21. package/lib/module/components/ChannelInput/index.js.map +1 -1
  22. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +29 -5
  23. package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
  24. package/lib/module/domain/groupChannel/module/moduleContext.js +36 -2
  25. package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
  26. package/lib/module/domain/groupChannel/types.js.map +1 -1
  27. package/lib/module/fragments/createGroupChannelFragment.js +3 -1
  28. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  29. package/lib/module/version.js +1 -1
  30. package/lib/module/version.js.map +1 -1
  31. package/lib/typescript/src/components/ChannelInput/index.d.ts +2 -1
  32. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  33. package/lib/typescript/src/domain/groupChannel/component/GroupChannelInput.d.ts +1 -1
  34. package/lib/typescript/src/domain/groupChannel/types.d.ts +12 -1
  35. package/lib/typescript/src/version.d.ts +1 -1
  36. package/package.json +5 -5
  37. package/src/components/ChannelInput/EditInput.tsx +2 -0
  38. package/src/components/ChannelInput/SendInput.tsx +16 -1
  39. package/src/components/ChannelInput/index.tsx +37 -5
  40. package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +25 -4
  41. package/src/domain/groupChannel/module/moduleContext.tsx +40 -5
  42. package/src/domain/groupChannel/types.ts +14 -1
  43. package/src/fragments/createGroupChannelFragment.tsx +2 -0
  44. package/src/version.ts +1 -1
@@ -11,6 +11,7 @@ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundati
11
11
  var _useContext = require("../../hooks/useContext");
12
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
14
15
  const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput({
15
16
  style,
16
17
  text,
@@ -21,7 +22,8 @@ const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput({
21
22
  onSelectionChange,
22
23
  autoFocus,
23
24
  mentionedUsers,
24
- inputDisabled
25
+ inputDisabled,
26
+ partialTextInputProps
25
27
  }, ref) {
26
28
  const {
27
29
  mentionManager,
@@ -55,7 +57,7 @@ const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput({
55
57
  style: styles.editInputContainer
56
58
  }, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
57
59
  style: styles.inputWrapper
58
- }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.TextInput, {
60
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.TextInput, _extends({}, partialTextInputProps, {
59
61
  ref: ref,
60
62
  multiline: true,
61
63
  disableFullscreenUI: true,
@@ -67,7 +69,7 @@ const EditInput = /*#__PURE__*/(0, _react.forwardRef)(function EditInput({
67
69
  onSelectionChange: onSelectionChange,
68
70
  originalText: text,
69
71
  supportRTLAlign: true
70
- }, mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
72
+ }), mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
71
73
  style: {
72
74
  marginTop: 8,
73
75
  flexDirection: 'row'
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","EditInput","forwardRef","style","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","ref","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","styles","editInputContainer","inputWrapper","TextInput","multiline","disableFullscreenUI","editable","placeholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","originalText","supportRTLAlign","textToMentionedComponents","marginTop","flexDirection","Button","variant","onPress","CHANNEL_INPUT_EDIT_CANCEL","space","CHANNEL_INPUT_EDIT_OK","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flex","_default","exports"],"sources":["EditInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData, View } from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport { Button, TextInput, createStyleSheet, useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../hooks/useContext';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface EditInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n messageToEdit: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n autoFocus: boolean;\n mentionedUsers: MentionedUser[];\n}\n\nconst EditInput = forwardRef<RNTextInput, EditInputProps>(function EditInput(\n {\n style,\n text,\n onChangeText,\n messageToEdit,\n setMessageToEdit,\n onPressUpdateUserMessage,\n onSelectionChange,\n autoFocus,\n mentionedUsers,\n inputDisabled,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n\n const onPressCancel = () => {\n setMessageToEdit();\n onChangeText('');\n };\n\n const onPressSave = () => {\n if (messageToEdit.isUserMessage()) {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressUpdateUserMessage(messageToEdit, {\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToUpdate);\n }\n setMessageToEdit();\n onChangeText('');\n };\n\n const onFailureToUpdate = () => toast.show(STRINGS.TOAST.UPDATE_MSG_ERROR, 'error');\n\n return (\n <View style={styles.editInputContainer}>\n <View style={styles.inputWrapper}>\n <TextInput\n ref={ref}\n multiline\n disableFullscreenUI\n editable={!inputDisabled}\n autoFocus={autoFocus}\n onChangeText={onChangeText}\n style={style}\n placeholder={STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE}\n onSelectionChange={onSelectionChange}\n originalText={text}\n supportRTLAlign\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n </View>\n <View style={{ marginTop: 8, flexDirection: 'row' }}>\n <Button variant={'text'} onPress={onPressCancel}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_CANCEL}\n </Button>\n <View style={styles.space} />\n <Button variant={'contained'} onPress={onPressSave}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_OK}\n </Button>\n </View>\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n editInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: 'column',\n alignItems: 'center',\n },\n inputWrapper: {\n flexDirection: 'row',\n },\n space: {\n flex: 1,\n },\n});\n\nexport default EditInput;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,2BAAA,GAAAH,OAAA;AAGA,IAAAI,WAAA,GAAAJ,OAAA;AAA0E,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAP,wBAAAO,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAc1E,MAAMW,SAAS,gBAAG,IAAAC,iBAAU,EAA8B,SAASD,SAASA,CAC1E;EACEE,KAAK;EACLC,IAAI;EACJC,YAAY;EACZC,aAAa;EACbC,gBAAgB;EAChBC,wBAAwB;EACxBC,iBAAiB;EACjBC,SAAS;EACTC,cAAc;EACdC;AACF,CAAC,EACDC,GAAG,EACH;EACA,MAAM;IAAEC,cAAc;IAAEC;EAAU,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACvD,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,2BAAe,EAAC,CAAC;EACrC,MAAMC,KAAK,GAAG,IAAAC,oCAAQ,EAAC,CAAC;EAExB,MAAMC,aAAa,GAAGA,CAAA,KAAM;IAC1Bd,gBAAgB,CAAC,CAAC;IAClBF,YAAY,CAAC,EAAE,CAAC;EAClB,CAAC;EAED,MAAMiB,WAAW,GAAGA,CAAA,KAAM;IACxB,IAAIhB,aAAa,CAACiB,aAAa,CAAC,CAAC,EAAE;MACjC,MAAMC,WAAW,GAAGC,oBAAW,CAACC,KAAK;MACrC,MAAMC,gBAAgB,GAAGhB,cAAc,CAACiB,GAAG,CAAEC,EAAE,IAAKA,EAAE,CAACC,IAAI,CAACC,MAAM,CAAC;MACnE,MAAMC,wBAAwB,GAAGlB,cAAc,CAACmB,8BAA8B,CAC5E7B,IAAI,EACJO,cAAc,EACdI,SAAS,CAACmB,KAAK,CAACC,YAAY,CAACC,OAAO,CAACC,aACvC,CAAC;MAED7B,wBAAwB,CAACF,aAAa,EAAE;QACtCgC,OAAO,EAAElC,IAAI;QACboB,WAAW;QACXG,gBAAgB;QAChBK;MACF,CAAC,CAAC,CAACO,KAAK,CAACC,iBAAiB,CAAC;IAC7B;IACAjC,gBAAgB,CAAC,CAAC;IAClBF,YAAY,CAAC,EAAE,CAAC;EAClB,CAAC;EAED,MAAMmC,iBAAiB,GAAGA,CAAA,KAAMrB,KAAK,CAACsB,IAAI,CAACxB,OAAO,CAACyB,KAAK,CAACC,gBAAgB,EAAE,OAAO,CAAC;EAEnF,oBACErE,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACnE,YAAA,CAAAoE,IAAI;IAAC1C,KAAK,EAAE2C,MAAM,CAACC;EAAmB,gBACrCzE,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACnE,YAAA,CAAAoE,IAAI;IAAC1C,KAAK,EAAE2C,MAAM,CAACE;EAAa,gBAC/B1E,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACjE,2BAAA,CAAAsE,SAAS;IACRpC,GAAG,EAAEA,GAAI;IACTqC,SAAS;IACTC,mBAAmB;IACnBC,QAAQ,EAAE,CAACxC,aAAc;IACzBF,SAAS,EAAEA,SAAU;IACrBL,YAAY,EAAEA,YAAa;IAC3BF,KAAK,EAAEA,KAAM;IACbkD,WAAW,EAAEpC,OAAO,CAACqC,MAAM,CAACC,gCAAiC;IAC7D9C,iBAAiB,EAAEA,iBAAkB;IACrC+C,YAAY,EAAEpD,IAAK;IACnBqD,eAAe;EAAA,GAEd3C,cAAc,CAAC4C,yBAAyB,CACvCtD,IAAI,EACJO,cAAc,EACdI,SAAS,CAACmB,KAAK,CAACC,YAAY,CAACC,OAAO,CAACC,aACvC,CACS,CACP,CAAC,eACP/D,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACnE,YAAA,CAAAoE,IAAI;IAAC1C,KAAK,EAAE;MAAEwD,SAAS,EAAE,CAAC;MAAEC,aAAa,EAAE;IAAM;EAAE,gBAClDtF,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACjE,2BAAA,CAAAkF,MAAM;IAACC,OAAO,EAAE,MAAO;IAACC,OAAO,EAAE1C;EAAc,GAC7CJ,OAAO,CAACqC,MAAM,CAACU,yBACV,CAAC,eACT1F,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACnE,YAAA,CAAAoE,IAAI;IAAC1C,KAAK,EAAE2C,MAAM,CAACmB;EAAM,CAAE,CAAC,eAC7B3F,MAAA,CAAAa,OAAA,CAAAyD,aAAA,CAACjE,2BAAA,CAAAkF,MAAM;IAACC,OAAO,EAAE,WAAY;IAACC,OAAO,EAAEzC;EAAY,GAChDL,OAAO,CAACqC,MAAM,CAACY,qBACV,CACJ,CACF,CAAC;AAEX,CAAC,CAAC;AAEF,MAAMpB,MAAM,GAAG,IAAAqB,4CAAgB,EAAC;EAC9BpB,kBAAkB,EAAE;IAClBqB,eAAe,EAAE,EAAE;IACnBC,iBAAiB,EAAE,EAAE;IACrBT,aAAa,EAAE,QAAQ;IACvBU,UAAU,EAAE;EACd,CAAC;EACDtB,YAAY,EAAE;IACZY,aAAa,EAAE;EACjB,CAAC;EACDK,KAAK,EAAE;IACLM,IAAI,EAAE;EACR;AACF,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAtF,OAAA,GAEYc,SAAS","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_useContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","EditInput","forwardRef","style","text","onChangeText","messageToEdit","setMessageToEdit","onPressUpdateUserMessage","onSelectionChange","autoFocus","mentionedUsers","inputDisabled","partialTextInputProps","ref","mentionManager","sbOptions","useSendbirdChat","STRINGS","useLocalization","toast","useToast","onPressCancel","onPressSave","isUserMessage","mentionType","MentionType","USERS","mentionedUserIds","map","it","user","userId","mentionedMessageTemplate","textToMentionedMessageTemplate","uikit","groupChannel","channel","enableMention","message","catch","onFailureToUpdate","show","TOAST","UPDATE_MSG_ERROR","createElement","View","styles","editInputContainer","inputWrapper","TextInput","multiline","disableFullscreenUI","editable","placeholder","LABELS","CHANNEL_INPUT_PLACEHOLDER_ACTIVE","originalText","supportRTLAlign","textToMentionedComponents","marginTop","flexDirection","Button","variant","onPress","CHANNEL_INPUT_EDIT_CANCEL","space","CHANNEL_INPUT_EDIT_OK","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flex","_default","exports"],"sources":["EditInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { NativeSyntheticEvent, TextInput as RNTextInput, TextInputSelectionChangeEventData, View } from 'react-native';\n\nimport { MentionType } from '@sendbird/chat/message';\nimport { Button, TextInput, createStyleSheet, useToast } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdFileMessage, SendbirdUserMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization, useSendbirdChat } from '../../hooks/useContext';\nimport type { MentionedUser } from '../../types';\nimport type { ChannelInputProps } from './index';\n\ninterface EditInputProps extends ChannelInputProps {\n text: string;\n onChangeText: (val: string) => void;\n messageToEdit: SendbirdUserMessage | SendbirdFileMessage;\n setMessageToEdit: (msg?: SendbirdUserMessage | SendbirdFileMessage) => void;\n onSelectionChange: (e: NativeSyntheticEvent<TextInputSelectionChangeEventData>) => void;\n autoFocus: boolean;\n mentionedUsers: MentionedUser[];\n}\n\nconst EditInput = forwardRef<RNTextInput, EditInputProps>(function EditInput(\n {\n style,\n text,\n onChangeText,\n messageToEdit,\n setMessageToEdit,\n onPressUpdateUserMessage,\n onSelectionChange,\n autoFocus,\n mentionedUsers,\n inputDisabled,\n partialTextInputProps,\n },\n ref,\n) {\n const { mentionManager, sbOptions } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const toast = useToast();\n\n const onPressCancel = () => {\n setMessageToEdit();\n onChangeText('');\n };\n\n const onPressSave = () => {\n if (messageToEdit.isUserMessage()) {\n const mentionType = MentionType.USERS;\n const mentionedUserIds = mentionedUsers.map((it) => it.user.userId);\n const mentionedMessageTemplate = mentionManager.textToMentionedMessageTemplate(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n );\n\n onPressUpdateUserMessage(messageToEdit, {\n message: text,\n mentionType,\n mentionedUserIds,\n mentionedMessageTemplate,\n }).catch(onFailureToUpdate);\n }\n setMessageToEdit();\n onChangeText('');\n };\n\n const onFailureToUpdate = () => toast.show(STRINGS.TOAST.UPDATE_MSG_ERROR, 'error');\n\n return (\n <View style={styles.editInputContainer}>\n <View style={styles.inputWrapper}>\n <TextInput\n {...partialTextInputProps}\n ref={ref}\n multiline\n disableFullscreenUI\n editable={!inputDisabled}\n autoFocus={autoFocus}\n onChangeText={onChangeText}\n style={style}\n placeholder={STRINGS.LABELS.CHANNEL_INPUT_PLACEHOLDER_ACTIVE}\n onSelectionChange={onSelectionChange}\n originalText={text}\n supportRTLAlign\n >\n {mentionManager.textToMentionedComponents(\n text,\n mentionedUsers,\n sbOptions.uikit.groupChannel.channel.enableMention,\n )}\n </TextInput>\n </View>\n <View style={{ marginTop: 8, flexDirection: 'row' }}>\n <Button variant={'text'} onPress={onPressCancel}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_CANCEL}\n </Button>\n <View style={styles.space} />\n <Button variant={'contained'} onPress={onPressSave}>\n {STRINGS.LABELS.CHANNEL_INPUT_EDIT_OK}\n </Button>\n </View>\n </View>\n );\n});\n\nconst styles = createStyleSheet({\n editInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 16,\n flexDirection: 'column',\n alignItems: 'center',\n },\n inputWrapper: {\n flexDirection: 'row',\n },\n space: {\n flex: 1,\n },\n});\n\nexport default EditInput;\n"],"mappings":"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","ignoreList":[]}
@@ -16,6 +16,7 @@ var _SBUUtils = _interopRequireDefault(require("../../libs/SBUUtils"));
16
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
19
20
  const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput({
20
21
  style,
21
22
  VoiceMessageInput,
@@ -33,7 +34,8 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput({
33
34
  channel,
34
35
  messageToReply,
35
36
  setMessageToReply,
36
- messageForThread
37
+ messageForThread,
38
+ partialTextInputProps
37
39
  }, ref) {
38
40
  const {
39
41
  playerService,
@@ -96,7 +98,20 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput({
96
98
  ...messageMentionParams,
97
99
  ...messageReplyParams
98
100
  }).catch(onFailureToSend);
99
- onChangeText('');
101
+
102
+ // On iOS with autoCorrect enabled, calling onChangeText('') immediately after sending
103
+ // can be ignored due to the keyboard's autocorrect not being committed yet.
104
+ // Delay the clear call slightly to allow the autocorrected text to be applied first.
105
+ if (_reactNative.Platform.OS === 'ios') {
106
+ const textInputRef = ref;
107
+ if (textInputRef.current) {
108
+ setTimeout(() => {
109
+ onChangeText('');
110
+ }, 10);
111
+ }
112
+ } else {
113
+ onChangeText('');
114
+ }
100
115
  setMessageToReply === null || setMessageToReply === void 0 || setMessageToReply();
101
116
  };
102
117
  const sendFileMessage = file => {
@@ -156,7 +171,7 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput({
156
171
  sheetItems
157
172
  }),
158
173
  disabled: inputDisabled
159
- }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.TextInput, {
174
+ }), /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.TextInput, _extends({}, partialTextInputProps, {
160
175
  ref: ref,
161
176
  multiline: true,
162
177
  disableFullscreenUI: true,
@@ -167,7 +182,7 @@ const SendInput = /*#__PURE__*/(0, _react.forwardRef)(function SendInput({
167
182
  placeholder: getPlaceholder(),
168
183
  originalText: text,
169
184
  supportRTLAlign: true
170
- }, mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention)), voiceMessageEnabled && /*#__PURE__*/_react.default.createElement(VoiceMessageButton, {
185
+ }), mentionManager.textToMentionedComponents(text, mentionedUsers, sbOptions.uikit.groupChannel.channel.enableMention)), voiceMessageEnabled && /*#__PURE__*/_react.default.createElement(VoiceMessageButton, {
171
186
  visible: !sendButtonVisible,
172
187
  disabled: inputDisabled,
173
188
  onPress: () => setVoiceMessageInputVisible(true)
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_constants","_useChannelInputItems","_useContext","_SBUUtils","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","SendInput","forwardRef","style","VoiceMessageInput","MessageToReplyPreview","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","messageForThread","ref","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","key","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","originalText","supportRTLAlign","textToMentionedComponents","VoiceMessageButton","UserMessageSendButton","Modal","disableBackgroundClose","reset","backgroundStyle","justifyContent","type","onSend","duration","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","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","marginStart","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 originalText={text}\n supportRTLAlign\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 marginStart: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_message","_uikitReactNativeFoundation","_uikitUtils","_constants","_useChannelInputItems","_useContext","_SBUUtils","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","SendInput","forwardRef","style","VoiceMessageInput","MessageToReplyPreview","AttachmentsButton","onPressSendUserMessage","onPressSendFileMessage","text","onChangeText","onSelectionChange","mentionedUsers","inputDisabled","inputFrozen","inputMuted","channel","messageToReply","setMessageToReply","messageForThread","partialTextInputProps","ref","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","Platform","OS","textInputRef","current","setTimeout","sendFileMessage","file","sendVoiceMessage","durationMills","USER_MUTED_ERROR","CHANNEL_FROZEN_ERROR","metaArrays","MessageMetaArray","key","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","originalText","supportRTLAlign","textToMentionedComponents","VoiceMessageButton","UserMessageSendButton","Modal","disableBackgroundClose","reset","backgroundStyle","justifyContent","type","onSend","duration","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","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","marginStart","padding","_default","exports"],"sources":["SendInput.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport {\n NativeSyntheticEvent,\n Platform,\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 partialTextInputProps,\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 // On iOS with autoCorrect enabled, calling onChangeText('') immediately after sending\n // can be ignored due to the keyboard's autocorrect not being committed yet.\n // Delay the clear call slightly to allow the autocorrected text to be applied first.\n if (Platform.OS === 'ios') {\n const textInputRef = ref as React.MutableRefObject<RNTextInput | undefined>;\n if (textInputRef.current) {\n setTimeout(() => {\n onChangeText('');\n }, 10);\n }\n } else {\n onChangeText('');\n }\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 {...partialTextInputProps}\n ref={ref}\n multiline\n disableFullscreenUI\n onSelectionChange={onSelectionChange}\n editable={!inputDisabled}\n onChangeText={onChangeText}\n style={style}\n placeholder={getPlaceholder()}\n originalText={text}\n supportRTLAlign\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 marginStart: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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","ignoreList":[]}
@@ -24,10 +24,10 @@ const AUTO_FOCUS = _reactNative.Platform.select({
24
24
  android: true,
25
25
  default: false
26
26
  });
27
- const isAndroidApi35 = _reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= 35;
27
+ const isAndroidApi35Plus = _reactNative.Platform.OS === 'android' && _reactNative.Platform.Version >= 35;
28
28
  const KEYBOARD_AVOID_VIEW_BEHAVIOR = _reactNative.Platform.select({
29
29
  ios: 'padding',
30
- android: isAndroidApi35 ? 'padding' : undefined,
30
+ android: isAndroidApi35Plus ? 'padding' : undefined,
31
31
  default: undefined
32
32
  });
33
33
 
@@ -55,7 +55,7 @@ const ChannelInput = props => {
55
55
  * For older Android versions, we manually subtract the safe area bottom padding to avoid overlapping with system UI.
56
56
  * See: https://developer.android.com/develop/ui/views/layout/edge-to-edge
57
57
  */
58
- const keyboardVerticalOffset = isAndroidApi35 ? keyboardAvoidOffset : -safeArea.paddingBottom + keyboardAvoidOffset;
58
+ const keyboardVerticalOffset = isAndroidApi35Plus ? keyboardAvoidOffset : -safeArea.paddingBottom + keyboardAvoidOffset;
59
59
  const {
60
60
  colors,
61
61
  typography
@@ -105,6 +105,18 @@ const ChannelInput = props => {
105
105
  range
106
106
  });
107
107
  };
108
+ const [keyboardShown, setKeyboardShown] = (0, _react.useState)(false);
109
+ (0, _react.useEffect)(() => {
110
+ const keyboardDidShow = () => setKeyboardShown(true);
111
+ const keyboardDidHide = () => setKeyboardShown(false);
112
+ const showSubscription = _reactNative.Keyboard.addListener('keyboardDidShow', keyboardDidShow);
113
+ const hideSubscription = _reactNative.Keyboard.addListener('keyboardDidHide', keyboardDidHide);
114
+ return () => {
115
+ showSubscription.remove();
116
+ hideSubscription.remove();
117
+ };
118
+ }, []);
119
+ const shouldShowSafeAreaBottom = !isAndroidApi35Plus || isAndroidApi35Plus && !keyboardShown;
108
120
  if (!props.shouldRenderInput) {
109
121
  return /*#__PURE__*/_react.default.createElement(SafeAreaBottom, {
110
122
  height: safeArea.paddingBottom
@@ -144,7 +156,7 @@ const ChannelInput = props => {
144
156
  messageToEdit: messageToEdit,
145
157
  setMessageToEdit: setMessageToEdit,
146
158
  style: textInputStyle
147
- }))), !isAndroidApi35 && /*#__PURE__*/_react.default.createElement(SafeAreaBottom, {
159
+ }))), shouldShowSafeAreaBottom && /*#__PURE__*/_react.default.createElement(SafeAreaBottom, {
148
160
  height: safeArea.paddingBottom
149
161
  }))), mentionAvailable && props.SuggestedMentionList && /*#__PURE__*/_react.default.createElement(props.SuggestedMentionList, {
150
162
  text: text,
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_MessageToReplyPreview","_SendInput","_VoiceMessageInput","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","AUTO_FOCUS","Platform","select","ios","android","isAndroidApi35","OS","Version","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","safeArea","useSafeAreaPadding","keyboardVerticalOffset","paddingBottom","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","behavior","View","paddingStart","paddingEnd","backgroundColor","background","onLayout","nativeEvent","layout","inputContainer","key","ref","VoiceMessageInput","AttachmentsButton","MessageToReplyPreview","autoFocus","SuggestedMentionList","topInset","paddingTop","bottomInset","useEffect","triggerTyping","action","endTyping","startTyping","catch","error","Logger","debug","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","createStyleSheet","justifyContent","width","flex","marginEnd","borderRadius","minHeight","maxHeight","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport { KeyboardAvoidingView, Platform, StyleProp, StyleSheet, TextInput, TextStyle, View } from 'react-native';\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 useSafeAreaPadding,\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 * Whether to show user id information on each item.\n * */\n showUserId?: boolean;\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 isAndroidApi35 = Platform.OS === 'android' && Platform.Version >= 35;\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({\n ios: 'padding' as const,\n android: isAndroidApi35 ? ('padding' as const) : undefined,\n default: undefined,\n});\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.\n// const GET_INPUT_KEY = (shouldReset: boolean) => {\n// return Platform.OS === 'ios' && shouldReset ? 'uikit-input-clear' : 'uikit-input';\n// };\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const safeArea = useSafeAreaPadding(['top', 'left', 'right', 'bottom']);\n\n // Android API 35+ keyboard avoidance handling\n /**\n * Android API 35+ introduced edge-to-edge layouts, which changed how keyboard avoidance should be handled.\n * For API 35+, the system manages insets automatically, so we use the provided keyboardAvoidOffset directly.\n * For older Android versions, we manually subtract the safe area bottom padding to avoid overlapping with system UI.\n * See: https://developer.android.com/develop/ui/views/layout/edge-to-edge\n */\n const keyboardVerticalOffset = isAndroidApi35 ? keyboardAvoidOffset : -safeArea.paddingBottom + keyboardAvoidOffset;\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 = 'input'; //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={safeArea.paddingBottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView keyboardVerticalOffset={keyboardVerticalOffset} behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}>\n <View\n style={{\n paddingStart: safeArea.paddingStart,\n paddingEnd: safeArea.paddingEnd,\n backgroundColor: colors.background,\n }}\n >\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 {!isAndroidApi35 && <SafeAreaBottom height={safeArea.paddingBottom} />}\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={safeArea.paddingTop}\n bottomInset={safeArea.paddingBottom}\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 marginEnd: 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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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_uikitReactNativeFoundation","_uikitUtils","_useContext","_useMentionTextInput","_interopRequireDefault","_AttachmentsButton","_EditInput","_MessageToReplyPreview","_SendInput","_VoiceMessageInput","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","AUTO_FOCUS","Platform","select","ios","android","isAndroidApi35Plus","OS","Version","KEYBOARD_AVOID_VIEW_BEHAVIOR","undefined","ChannelInput","props","channel","keyboardAvoidOffset","messageToEdit","setMessageToEdit","safeArea","useSafeAreaPadding","keyboardVerticalOffset","paddingBottom","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","keyboardShown","setKeyboardShown","useEffect","keyboardDidShow","keyboardDidHide","showSubscription","Keyboard","addListener","hideSubscription","remove","shouldShowSafeAreaBottom","shouldRenderInput","createElement","SafeAreaBottom","Fragment","KeyboardAvoidingView","behavior","View","paddingStart","paddingEnd","backgroundColor","background","onLayout","nativeEvent","layout","inputContainer","key","ref","VoiceMessageInput","AttachmentsButton","MessageToReplyPreview","autoFocus","SuggestedMentionList","topInset","paddingTop","bottomInset","triggerTyping","action","endTyping","startTyping","catch","error","Logger","debug","setText","chatDisabled","isUserMessage","setTimeout","_textInputRef$current","current","focus","createStyleSheet","justifyContent","width","flex","marginEnd","borderRadius","minHeight","maxHeight","_default","exports","React","memo"],"sources":["index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useState } from 'react';\nimport {\n Keyboard,\n KeyboardAvoidingView,\n Platform,\n StyleProp,\n StyleSheet,\n TextInput,\n TextInputProps,\n TextStyle,\n View,\n} from 'react-native';\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 useSafeAreaPadding,\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 * Whether to show user id information on each item.\n * */\n showUserId?: boolean;\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 // TextInput props - only safe properties that don't interfere with UIKit functionality\n partialTextInputProps?: Partial<Pick<TextInputProps, 'autoCorrect'>>;\n};\n\nconst AUTO_FOCUS = Platform.select({ ios: false, android: true, default: false });\nconst isAndroidApi35Plus = Platform.OS === 'android' && Platform.Version >= 35;\nconst KEYBOARD_AVOID_VIEW_BEHAVIOR = Platform.select({\n ios: 'padding' as const,\n android: isAndroidApi35Plus ? ('padding' as const) : undefined,\n default: undefined,\n});\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.\n// const GET_INPUT_KEY = (shouldReset: boolean) => {\n// return Platform.OS === 'ios' && shouldReset ? 'uikit-input-clear' : 'uikit-input';\n// };\n\n// TODO: Refactor 'Edit' mode to clearly\nconst ChannelInput = (props: ChannelInputProps) => {\n const { channel, keyboardAvoidOffset, messageToEdit, setMessageToEdit } = props;\n\n const safeArea = useSafeAreaPadding(['top', 'left', 'right', 'bottom']);\n\n // Android API 35+ keyboard avoidance handling\n /**\n * Android API 35+ introduced edge-to-edge layouts, which changed how keyboard avoidance should be handled.\n * For API 35+, the system manages insets automatically, so we use the provided keyboardAvoidOffset directly.\n * For older Android versions, we manually subtract the safe area bottom padding to avoid overlapping with system UI.\n * See: https://developer.android.com/develop/ui/views/layout/edge-to-edge\n */\n const keyboardVerticalOffset = isAndroidApi35Plus\n ? keyboardAvoidOffset\n : -safeArea.paddingBottom + keyboardAvoidOffset;\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 = 'input'; //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 const [keyboardShown, setKeyboardShown] = useState(false);\n\n useEffect(() => {\n const keyboardDidShow = () => setKeyboardShown(true);\n const keyboardDidHide = () => setKeyboardShown(false);\n\n const showSubscription = Keyboard.addListener('keyboardDidShow', keyboardDidShow);\n const hideSubscription = Keyboard.addListener('keyboardDidHide', keyboardDidHide);\n\n return () => {\n showSubscription.remove();\n hideSubscription.remove();\n };\n }, []);\n\n const shouldShowSafeAreaBottom = !isAndroidApi35Plus || (isAndroidApi35Plus && !keyboardShown);\n\n if (!props.shouldRenderInput) {\n return <SafeAreaBottom height={safeArea.paddingBottom} />;\n }\n\n return (\n <>\n <KeyboardAvoidingView keyboardVerticalOffset={keyboardVerticalOffset} behavior={KEYBOARD_AVOID_VIEW_BEHAVIOR}>\n <View\n style={{\n paddingStart: safeArea.paddingStart,\n paddingEnd: safeArea.paddingEnd,\n backgroundColor: colors.background,\n }}\n >\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 {shouldShowSafeAreaBottom && <SafeAreaBottom height={safeArea.paddingBottom} />}\n </View>\n </KeyboardAvoidingView>\n {mentionAvailable && props.SuggestedMentionList && (\n <props.SuggestedMentionList\n text={text}\n selection={selection}\n inputHeight={inputHeight}\n topInset={safeArea.paddingTop}\n bottomInset={safeArea.paddingBottom}\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 marginEnd: 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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","ignoreList":[]}
@@ -34,7 +34,7 @@ const GroupChannelMessageList = props => {
34
34
  const {
35
35
  flatListRef,
36
36
  lazyScrollToBottom,
37
- lazyScrollToIndex,
37
+ lazyScrollToMessageId,
38
38
  onPressReplyMessageInThread
39
39
  } = (0, _react.useContext)(_moduleContext.GroupChannelContexts.MessageList);
40
40
  const isFirstMount = (0, _uikitUtils.useIsFirstMount)();
@@ -46,6 +46,7 @@ const GroupChannelMessageList = props => {
46
46
  const viewableMessages = (0, _react.useRef)();
47
47
  const hasUserMarkedAsUnreadRef = (0, _react.useRef)(false);
48
48
  const [unreadFirstMessage, setUnreadFirstMessage] = (0, _react.useState)(undefined);
49
+ const pendingBottomReachedRef = (0, _react.useRef)(null);
49
50
  const updateHasSeenNewLine = (0, _react.useCallback)(hasSeenNewLine => {
50
51
  if (hasSeenNewLineRef.current !== hasSeenNewLine) {
51
52
  var _props$onNewLineSeenC;
@@ -61,16 +62,21 @@ const GroupChannelMessageList = props => {
61
62
  }
62
63
  }, [props.onUserMarkedAsUnreadChange]);
63
64
  const scrollToMessageWithCreatedAt = (0, _uikitUtils.useFreshCallback)((createdAt, focusAnimated, timeout) => {
64
- const foundMessageIndex = props.messages.findIndex(it => it.createdAt === createdAt);
65
- const isIncludedInList = foundMessageIndex > -1;
65
+ const foundMessage = props.messages.find(it => it.createdAt === createdAt);
66
+ const isIncludedInList = !!foundMessage;
67
+ pendingBottomReachedRef.current = null;
66
68
  if (isIncludedInList) {
67
69
  if (focusAnimated) {
68
70
  setTimeout(() => props.onUpdateSearchItem({
69
71
  startingPoint: createdAt
70
72
  }), _constants.MESSAGE_FOCUS_ANIMATION_DELAY);
71
73
  }
72
- lazyScrollToIndex({
73
- index: foundMessageIndex,
74
+ pendingBottomReachedRef.current = {
75
+ timeout,
76
+ timestamp: Date.now()
77
+ };
78
+ lazyScrollToMessageId({
79
+ messageId: foundMessage.messageId,
74
80
  animated: true,
75
81
  timeout
76
82
  });
@@ -308,6 +314,23 @@ const GroupChannelMessageList = props => {
308
314
  if (!canScrollToParent) toast.show(STRINGS.TOAST.FIND_PARENT_MSG_ERROR, 'error');
309
315
  }
310
316
  });
317
+ const onBottomReached = (0, _uikitUtils.useFreshCallback)(() => {
318
+ if (props.hasNext()) {
319
+ if (pendingBottomReachedRef.current) {
320
+ const currentTime = Date.now();
321
+ const elapsedTime = currentTime - pendingBottomReachedRef.current.timestamp;
322
+ const timeoutThreshold = 500;
323
+ if (elapsedTime >= pendingBottomReachedRef.current.timeout + timeoutThreshold) {
324
+ var _props$onBottomReache;
325
+ (_props$onBottomReache = props.onBottomReached) === null || _props$onBottomReache === void 0 || _props$onBottomReache.call(props);
326
+ pendingBottomReachedRef.current = null;
327
+ }
328
+ } else {
329
+ var _props$onBottomReache2;
330
+ (_props$onBottomReache2 = props.onBottomReached) === null || _props$onBottomReache2 === void 0 || _props$onBottomReache2.call(props);
331
+ }
332
+ }
333
+ });
311
334
  return /*#__PURE__*/_react.default.createElement(_ChannelMessageList.default, _extends({}, props, {
312
335
  ref: flatListRef,
313
336
  onScrolledAwayFromBottom: onScrolledAwayFromBottom,
@@ -319,6 +342,7 @@ const GroupChannelMessageList = props => {
319
342
  onPressNewMessagesButton: scrollToBottom,
320
343
  onPressScrollToBottomButton: scrollToBottom,
321
344
  onPressMarkAsUnreadMessage: onPressMarkAsUnreadMessage,
345
+ onBottomReached: onBottomReached,
322
346
  unreadFirstMessage: unreadFirstMessage,
323
347
  unreadMessagesFloatingProps: unreadMessagesFloatingPropsRef.current
324
348
  }));