@sendbird/uikit-react-native 2.0.0 → 2.0.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 (101) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +9 -2
  3. package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  4. package/lib/commonjs/components/UserActionBar.js +7 -4
  5. package/lib/commonjs/components/UserActionBar.js.map +1 -1
  6. package/lib/commonjs/containers/GroupChannelPreviewContainer.js +23 -4
  7. package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
  8. package/lib/commonjs/containers/SendbirdUIKitContainer.js +13 -7
  9. package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
  10. package/lib/commonjs/contexts/{Localization.js → LocalizationCtx.js} +1 -1
  11. package/lib/commonjs/contexts/LocalizationCtx.js.map +1 -0
  12. package/lib/commonjs/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
  13. package/lib/commonjs/contexts/PlatformServiceCtx.js.map +1 -0
  14. package/lib/commonjs/contexts/ProfileCardCtx.js +119 -0
  15. package/lib/commonjs/contexts/ProfileCardCtx.js.map +1 -0
  16. package/lib/commonjs/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +3 -3
  17. package/lib/commonjs/contexts/SendbirdChatCtx.js.map +1 -0
  18. package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
  19. package/lib/commonjs/fragments/createGroupChannelFragment.js +9 -1
  20. package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
  21. package/lib/commonjs/fragments/createGroupChannelListFragment.js +2 -3
  22. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  23. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +11 -11
  24. package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
  25. package/lib/commonjs/hooks/useContext.js +17 -7
  26. package/lib/commonjs/hooks/useContext.js.map +1 -1
  27. package/lib/commonjs/index.js +32 -9
  28. package/lib/commonjs/index.js.map +1 -1
  29. package/lib/commonjs/localization/StringSet.type.js +6 -0
  30. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  31. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  32. package/lib/commonjs/version.js +1 -1
  33. package/lib/commonjs/version.js.map +1 -1
  34. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +9 -3
  35. package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
  36. package/lib/module/components/UserActionBar.js +8 -5
  37. package/lib/module/components/UserActionBar.js.map +1 -1
  38. package/lib/module/containers/GroupChannelPreviewContainer.js +23 -4
  39. package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
  40. package/lib/module/containers/SendbirdUIKitContainer.js +9 -4
  41. package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
  42. package/lib/module/contexts/{Localization.js → LocalizationCtx.js} +1 -1
  43. package/lib/module/contexts/LocalizationCtx.js.map +1 -0
  44. package/lib/module/contexts/{PlatformService.js → PlatformServiceCtx.js} +1 -1
  45. package/lib/module/contexts/PlatformServiceCtx.js.map +1 -0
  46. package/lib/module/contexts/ProfileCardCtx.js +97 -0
  47. package/lib/module/contexts/ProfileCardCtx.js.map +1 -0
  48. package/lib/module/contexts/{SendbirdChat.js → SendbirdChatCtx.js} +3 -3
  49. package/lib/module/contexts/SendbirdChatCtx.js.map +1 -0
  50. package/lib/module/domain/groupChannelList/types.js.map +1 -1
  51. package/lib/module/fragments/createGroupChannelFragment.js +9 -1
  52. package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
  53. package/lib/module/fragments/createGroupChannelListFragment.js +2 -3
  54. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  55. package/lib/module/fragments/createGroupChannelMembersFragment.js +13 -9
  56. package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
  57. package/lib/module/hooks/useContext.js +9 -3
  58. package/lib/module/hooks/useContext.js.map +1 -1
  59. package/lib/module/index.js +5 -4
  60. package/lib/module/index.js.map +1 -1
  61. package/lib/module/localization/StringSet.type.js +6 -0
  62. package/lib/module/localization/StringSet.type.js.map +1 -1
  63. package/lib/module/platform/createFileService.native.js.map +1 -1
  64. package/lib/module/version.js +1 -1
  65. package/lib/module/version.js.map +1 -1
  66. package/lib/typescript/src/components/UserActionBar.d.ts +4 -2
  67. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +7 -3
  68. package/lib/typescript/src/contexts/{Localization.d.ts → LocalizationCtx.d.ts} +0 -0
  69. package/lib/typescript/src/contexts/{PlatformService.d.ts → PlatformServiceCtx.d.ts} +0 -0
  70. package/lib/typescript/src/contexts/ProfileCardCtx.d.ts +15 -0
  71. package/lib/typescript/src/contexts/{SendbirdChat.d.ts → SendbirdChatCtx.d.ts} +0 -0
  72. package/lib/typescript/src/domain/groupChannelList/types.d.ts +2 -0
  73. package/lib/typescript/src/hooks/useContext.d.ts +2 -1
  74. package/lib/typescript/src/index.d.ts +5 -4
  75. package/lib/typescript/src/localization/StringSet.type.d.ts +6 -1
  76. package/lib/typescript/src/platform/createFileService.native.d.ts +1 -1
  77. package/lib/typescript/src/version.d.ts +1 -1
  78. package/package.json +9 -9
  79. package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +9 -2
  80. package/src/components/UserActionBar.tsx +10 -4
  81. package/src/containers/GroupChannelPreviewContainer.tsx +20 -1
  82. package/src/containers/SendbirdUIKitContainer.tsx +26 -6
  83. package/src/contexts/{Localization.tsx → LocalizationCtx.tsx} +0 -0
  84. package/src/contexts/{PlatformService.tsx → PlatformServiceCtx.tsx} +0 -0
  85. package/src/contexts/ProfileCardCtx.tsx +125 -0
  86. package/src/contexts/{SendbirdChat.tsx → SendbirdChatCtx.tsx} +2 -2
  87. package/src/domain/groupChannelList/types.ts +2 -2
  88. package/src/fragments/createGroupChannelFragment.tsx +18 -8
  89. package/src/fragments/createGroupChannelListFragment.tsx +2 -3
  90. package/src/fragments/createGroupChannelMembersFragment.tsx +25 -25
  91. package/src/hooks/useContext.ts +10 -3
  92. package/src/index.ts +5 -4
  93. package/src/localization/StringSet.type.ts +12 -0
  94. package/src/platform/createFileService.native.ts +1 -1
  95. package/src/version.ts +1 -1
  96. package/lib/commonjs/contexts/Localization.js.map +0 -1
  97. package/lib/commonjs/contexts/PlatformService.js.map +0 -1
  98. package/lib/commonjs/contexts/SendbirdChat.js.map +0 -1
  99. package/lib/module/contexts/Localization.js.map +0 -1
  100. package/lib/module/contexts/PlatformService.js.map +0 -1
  101. package/lib/module/contexts/SendbirdChat.js.map +0 -1
package/README.md CHANGED
@@ -142,7 +142,7 @@ You can use `createNativeClipboardService`, `createNativeNotificationService` an
142
142
  npm install react-native-permissions \
143
143
  react-native-image-picker \
144
144
  react-native-document-picker \
145
- @react-native-community/cameraroll \
145
+ @react-native-camera-roll/camera-roll \
146
146
  react-native-file-access \
147
147
  @react-native-clipboard/clipboard \
148
148
  @react-native-firebase/app \
@@ -153,7 +153,7 @@ npx pod-install
153
153
 
154
154
  ```ts
155
155
  import Clipboard from '@react-native-clipboard/clipboard';
156
- import CameraRoll from '@react-native-community/cameraroll';
156
+ import { CameraRoll } from '@react-native-camera-roll/camera-roll';
157
157
  import RNFBMessaging from '@react-native-firebase/messaging';
158
158
  import * as DocumentPicker from 'react-native-document-picker';
159
159
  import * as FileAccess from 'react-native-file-access';
@@ -11,6 +11,8 @@ var _reactNative = require("react-native");
11
11
 
12
12
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
13
 
14
+ var _useContext = require("../../hooks/useContext");
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
17
 
16
18
  const MessageIncomingAvatar = _ref => {
@@ -20,15 +22,20 @@ const MessageIncomingAvatar = _ref => {
20
22
  message,
21
23
  grouping
22
24
  } = _ref;
25
+ const {
26
+ show
27
+ } = (0, _useContext.useProfileCard)();
23
28
  if (grouping) return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
24
29
  style: styles.avatar
25
30
  });
26
31
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
27
32
  style: styles.avatar
28
- }, (message.isFileMessage() || message.isUserMessage()) && /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
33
+ }, (message.isFileMessage() || message.isUserMessage()) && /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
34
+ onPress: () => show(message.sender)
35
+ }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
29
36
  size: 26,
30
37
  uri: (_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.profileUrl
31
- }));
38
+ })));
32
39
  };
33
40
 
34
41
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
@@ -1 +1 @@
1
- {"version":3,"names":["MessageIncomingAvatar","message","grouping","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","createStyleSheet","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingAvatar = ({ message, grouping }: Props) => {\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && <Avatar size={26} uri={message.sender?.profileUrl} />}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;AAOA,MAAMA,qBAAqB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAC9D,IAAIA,QAAJ,EAAc,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACH,OAAO,CAACI,aAAR,MAA2BJ,OAAO,CAACK,aAAR,EAA5B,kBAAwD,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAEL,OAAO,CAACM,MAAV,oDAAE,gBAAgBC;EAAvC,EAD3D,CADF;AAKD,CAPD;;AASA,MAAML,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,MAAM,EAAE;IACNM,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAjB,CAAf;eAOeX,qB"}
1
+ {"version":3,"names":["MessageIncomingAvatar","message","grouping","show","useProfileCard","styles","avatar","isFileMessage","isUserMessage","sender","profileUrl","createStyleSheet","width","marginRight"],"sources":["MessageIncomingAvatar.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { Avatar, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useProfileCard } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingAvatar = ({ message, grouping }: Props) => {\n const { show } = useProfileCard();\n if (grouping) return <View style={styles.avatar} />;\n return (\n <View style={styles.avatar}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Pressable onPress={() => show(message.sender)}>\n <Avatar size={26} uri={message.sender?.profileUrl} />\n </Pressable>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n avatar: {\n width: 26,\n marginRight: 12,\n },\n});\n\nexport default MessageIncomingAvatar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;AAMA,MAAMA,qBAAqB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAC9D,MAAM;IAAEC;EAAF,IAAW,IAAAC,0BAAA,GAAjB;EACA,IAAIF,QAAJ,EAAc,oBAAO,6BAAC,iBAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,EAAP;EACd,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAED,MAAM,CAACC;EAApB,GACG,CAACL,OAAO,CAACM,aAAR,MAA2BN,OAAO,CAACO,aAAR,EAA5B,kBACC,6BAAC,sBAAD;IAAW,OAAO,EAAE,MAAML,IAAI,CAACF,OAAO,CAACQ,MAAT;EAA9B,gBACE,6BAAC,kCAAD;IAAQ,IAAI,EAAE,EAAd;IAAkB,GAAG,qBAAER,OAAO,CAACQ,MAAV,oDAAE,gBAAgBC;EAAvC,EADF,CAFJ,CADF;AASD,CAZD;;AAcA,MAAML,MAAM,GAAG,IAAAM,4CAAA,EAAiB;EAC9BL,MAAM,EAAE;IACNM,KAAK,EAAE,EADD;IAENC,WAAW,EAAE;EAFP;AADsB,CAAjB,CAAf;eAOeb,qB"}
@@ -21,8 +21,9 @@ const UserActionBar = _ref => {
21
21
  uri,
22
22
  name,
23
23
  disabled,
24
+ label,
24
25
  onPressActionMenu,
25
- label
26
+ onPressAvatar
26
27
  } = _ref;
27
28
  const {
28
29
  colors
@@ -30,12 +31,14 @@ const UserActionBar = _ref => {
30
31
  const iconColor = (0, _uikitUtils.conditionChaining)([disabled], [colors.onBackground04, colors.onBackground01]);
31
32
  return /*#__PURE__*/_react.default.createElement(_reactNative.View, {
32
33
  style: styles.container
34
+ }, /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
35
+ onPress: onPressAvatar,
36
+ style: styles.avatar
33
37
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Avatar, {
34
38
  muted: muted,
35
39
  size: 36,
36
- uri: uri,
37
- containerStyle: styles.avatar
38
- }), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
40
+ uri: uri
41
+ })), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
39
42
  style: [styles.infoContainer, {
40
43
  borderBottomColor: colors.onBackground04
41
44
  }]
@@ -1 +1 @@
1
- {"version":3,"names":["UserActionBar","muted","uri","name","disabled","onPressActionMenu","label","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n muted: boolean;\n disabled: boolean;\n onPressActionMenu?: () => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, onPressActionMenu, label }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Avatar muted={muted} size={36} uri={uri} containerStyle={styles.avatar} />\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserActionBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;AAUA,MAAMA,aAAa,GAAG,QAAqE;EAAA,IAApE;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,iBAA9B;IAAiDC;EAAjD,CAAoE;EACzF,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACN,QAAD,CAAlB,EAA8B,CAACG,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEb,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC,GAArC;IAA0C,cAAc,EAAEW,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACV,IAAhD;IAAsD,KAAK,EAAEI,MAAM,CAACK;EAApE,GACGT,IADH,CADF,EAIGe,OAAO,CAACZ,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEC,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACP;EAAxD,GACGA,KADH,CALJ,EASGY,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAED;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEK,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAFF,CADF;AAoBD,CAzBD;;AA2BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BrB,KAAK,EAAE;IACLqB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B5B,IAAI,EAAE;IACJyB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;eA+Be3B,a"}
1
+ {"version":3,"names":["UserActionBar","muted","uri","name","disabled","label","onPressActionMenu","onPressAvatar","colors","useUIKitTheme","iconColor","conditionChaining","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","createStyleSheet","flexDirection","alignItems","width","height","marginLeft","marginRight","flex","paddingRight","borderBottomWidth","padding"],"sources":["UserActionBar.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, TouchableOpacity, View } from 'react-native';\nimport type { GestureResponderEvent } from 'react-native';\n\nimport { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\ntype Props = {\n uri: string;\n name: string;\n label?: string;\n\n muted: boolean;\n disabled: boolean;\n\n onPressActionMenu?: (ev: GestureResponderEvent) => void;\n onPressAvatar?: (ev: GestureResponderEvent) => void;\n};\nconst UserActionBar = ({ muted, uri, name, disabled, label, onPressActionMenu, onPressAvatar }: Props) => {\n const { colors } = useUIKitTheme();\n\n const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);\n\n return (\n <View style={styles.container}>\n <Pressable onPress={onPressAvatar} style={styles.avatar}>\n <Avatar muted={muted} size={36} uri={uri} />\n </Pressable>\n <View style={[styles.infoContainer, { borderBottomColor: colors.onBackground04 }]}>\n <Text subtitle2 numberOfLines={1} style={styles.name} color={colors.onBackground01}>\n {name}\n </Text>\n {Boolean(label) && (\n <Text body2 color={colors.onBackground02} style={styles.label}>\n {label}\n </Text>\n )}\n {Boolean(onPressActionMenu) && (\n <TouchableOpacity onPress={onPressActionMenu} disabled={disabled}>\n <Icon color={iconColor} size={24} icon={'more'} containerStyle={styles.iconContainer} />\n </TouchableOpacity>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n width: '100%',\n height: 56,\n },\n avatar: {\n marginLeft: 16,\n marginRight: 16,\n },\n label: {\n marginRight: 4,\n },\n infoContainer: {\n height: '100%',\n flex: 1,\n alignItems: 'center',\n flexDirection: 'row',\n paddingRight: 12,\n borderBottomWidth: 1,\n },\n iconContainer: {\n padding: 4,\n },\n name: {\n flex: 1,\n marginRight: 8,\n },\n});\n\nexport default UserActionBar;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAGA;;AACA;;;;AAaA,MAAMA,aAAa,GAAG,QAAoF;EAAA,IAAnF;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,KAA9B;IAAqCC,iBAArC;IAAwDC;EAAxD,CAAmF;EACxG,MAAM;IAAEC;EAAF,IAAa,IAAAC,yCAAA,GAAnB;EAEA,MAAMC,SAAS,GAAG,IAAAC,6BAAA,EAAkB,CAACP,QAAD,CAAlB,EAA8B,CAACI,MAAM,CAACI,cAAR,EAAwBJ,MAAM,CAACK,cAA/B,CAA9B,CAAlB;EAEA,oBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,sBAAD;IAAW,OAAO,EAAER,aAApB;IAAmC,KAAK,EAAEO,MAAM,CAACE;EAAjD,gBACE,6BAAC,kCAAD;IAAQ,KAAK,EAAEf,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC;EAArC,EADF,CADF,eAIE,6BAAC,iBAAD;IAAM,KAAK,EAAE,CAACY,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAEV,MAAM,CAACI;IAA5B,CAAvB;EAAb,gBACE,6BAAC,gCAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACX,IAAhD;IAAsD,KAAK,EAAEK,MAAM,CAACK;EAApE,GACGV,IADH,CADF,EAIGgB,OAAO,CAACd,KAAD,CAAP,iBACC,6BAAC,gCAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEG,MAAM,CAACY,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACT;EAAxD,GACGA,KADH,CALJ,EASGc,OAAO,CAACb,iBAAD,CAAP,iBACC,6BAAC,6BAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAEF;EAAxD,gBACE,6BAAC,gCAAD;IAAM,KAAK,EAAEM,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEI,MAAM,CAACO;EAAvE,EADF,CAVJ,CAJF,CADF;AAsBD,CA3BD;;AA6BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BP,SAAS,EAAE;IACTQ,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BV,MAAM,EAAE;IACNW,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BvB,KAAK,EAAE;IACLuB,WAAW,EAAE;EADR,CAXuB;EAc9BX,aAAa,EAAE;IACbS,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BV,aAAa,EAAE;IACbW,OAAO,EAAE;EADI,CAtBe;EAyB9B7B,IAAI,EAAE;IACJ0B,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAjB,CAAf;eA+Be5B,a"}
@@ -125,15 +125,29 @@ const GroupChannelPreviewContainer = _ref => {
125
125
 
126
126
  return undefined;
127
127
  });
128
+ const customCover = (0, _uikitUtils.useIIFE)(() => {
129
+ if (channel.isBroadcast) {
130
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Icon, {
131
+ icon: 'broadcast',
132
+ size: 32,
133
+ color: colors.onBackgroundReverse01,
134
+ containerStyle: [styles.broadcastCover, {
135
+ backgroundColor: colors.secondary
136
+ }]
137
+ });
138
+ }
139
+
140
+ return /*#__PURE__*/_react.default.createElement(_ChannelCover.default, {
141
+ channel: channel,
142
+ size: 56
143
+ });
144
+ });
128
145
  return /*#__PURE__*/_react.default.createElement(_reactNative.Pressable, {
129
146
  delayLongPress: _constants.DEFAULT_LONG_PRESS_DELAY,
130
147
  onPress: onPress,
131
148
  onLongPress: onLongPress
132
149
  }, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.GroupChannelPreview, {
133
- customCover: /*#__PURE__*/_react.default.createElement(_ChannelCover.default, {
134
- channel: channel,
135
- size: 56
136
- }),
150
+ customCover: customCover,
137
151
  coverUrl: channel.coverUrl,
138
152
  title: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '', channel),
139
153
  titleCaptionLeft: titleCaptionIcon,
@@ -143,6 +157,7 @@ const GroupChannelPreviewContainer = _ref => {
143
157
  badgeCount: channel.unreadMessageCount,
144
158
  memberCount: channel.memberCount > 2 ? channel.memberCount : undefined,
145
159
  frozen: channel.isFrozen,
160
+ broadcast: channel.isBroadcast,
146
161
  notificationOff: channel.myPushTriggerOption === 'off'
147
162
  }));
148
163
  };
@@ -150,6 +165,10 @@ const GroupChannelPreviewContainer = _ref => {
150
165
  const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
151
166
  titleCaptionIcon: {
152
167
  marginRight: 4
168
+ },
169
+ broadcastCover: {
170
+ padding: 12,
171
+ borderRadius: 28
153
172
  }
154
173
  });
155
174
  var _default = GroupChannelPreviewContainer;
@@ -1 +1 @@
1
- {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n if (features.channelListTypingIndicatorEnabled) {\n const typingId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n }\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const bodyIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage) return undefined;\n if (!features.channelListMessageReceiptStatusEnabled) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={<ChannelCover channel={channel} size={56} />}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={bodyIcon}\n badgeCount={channel.unreadMessageCount}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","useSendbirdChat","STRINGS","useLocalization","colors","useUIKitTheme","typingUsers","setTypingUsers","useState","channelListTypingIndicatorEnabled","typingId","useUniqId","useChannelHandler","onTypingStatusUpdated","eventChannel","isDifferentChannel","getTypingUsers","outgoingStatus","useMessageOutgoingStatus","lastMessage","bodyText","useIIFE","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","getFileType","type","getFileExtension","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","isMyMessage","userId","styles","error","onBackground03","secondary","customCover","isBroadcast","onBackgroundReverse01","broadcastCover","backgroundColor","DEFAULT_LONG_PRESS_DELAY","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","createStyleSheet","marginRight","padding","borderRadius"],"sources":["GroupChannelPreviewContainer.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useChannelHandler, useMessageOutgoingStatus } from '@sendbird/uikit-chat-hooks';\nimport {\n GroupChannelPreview,\n Icon,\n LoadingSpinner,\n createStyleSheet,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport {\n SendbirdGroupChannel,\n SendbirdUser,\n getFileExtension,\n getFileType,\n isDifferentChannel,\n isMyMessage,\n useIIFE,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../components/ChannelCover';\nimport { DEFAULT_LONG_PRESS_DELAY } from '../constants';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst iconMapper = { audio: 'file-audio', image: 'photo', video: 'play', file: 'file-document' } as const;\n\ntype Props = {\n channel: SendbirdGroupChannel;\n onPress: () => void;\n onLongPress: () => void;\n};\nconst GroupChannelPreviewContainer = ({ onPress, onLongPress, channel }: Props) => {\n const { currentUser, sdk, features } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n const { colors } = useUIKitTheme();\n\n const [typingUsers, setTypingUsers] = useState<SendbirdUser[]>([]);\n\n if (features.channelListTypingIndicatorEnabled) {\n const typingId = useUniqId('GroupChannelPreviewContainer');\n useChannelHandler(sdk, `GroupChannelPreviewContainer_TypingIndicator_${typingId}`, {\n onTypingStatusUpdated(eventChannel) {\n if (isDifferentChannel(channel, eventChannel)) return;\n setTypingUsers(eventChannel.getTypingUsers());\n },\n });\n }\n\n const outgoingStatus = useMessageOutgoingStatus(sdk, channel, channel.lastMessage);\n\n const bodyText = useIIFE(() => {\n if (typingUsers.length > 0) return STRINGS.LABELS.TYPING_INDICATOR_TYPINGS(typingUsers) || '';\n else return STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel);\n });\n\n const bodyIcon = useIIFE(() => {\n if (!channel.lastMessage?.isFileMessage()) return undefined;\n if (typingUsers.length > 0) return undefined;\n return iconMapper[getFileType(channel.lastMessage.type || getFileExtension(channel.lastMessage.name))];\n });\n\n const titleCaptionIcon = useIIFE(() => {\n if (!channel.lastMessage) return undefined;\n if (!features.channelListMessageReceiptStatusEnabled) return undefined;\n if (!isMyMessage(channel.lastMessage, currentUser?.userId)) return undefined;\n\n if (outgoingStatus === 'PENDING') {\n return <LoadingSpinner size={16} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'FAILED') {\n return <Icon icon={'error'} size={16} color={colors.error} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'UNDELIVERED') {\n return <Icon icon={'done'} size={16} color={colors.onBackground03} containerStyle={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'DELIVERED' || outgoingStatus === 'UNREAD') {\n return <Icon icon={'done-all'} size={16} color={colors.onBackground03} style={styles.titleCaptionIcon} />;\n }\n\n if (outgoingStatus === 'READ') {\n return <Icon icon={'done-all'} size={16} color={colors.secondary} style={styles.titleCaptionIcon} />;\n }\n\n return undefined;\n });\n\n const customCover = useIIFE(() => {\n if (channel.isBroadcast) {\n return (\n <Icon\n icon={'broadcast'}\n size={32}\n color={colors.onBackgroundReverse01}\n containerStyle={[styles.broadcastCover, { backgroundColor: colors.secondary }]}\n />\n );\n }\n return <ChannelCover channel={channel} size={56} />;\n });\n\n return (\n <Pressable delayLongPress={DEFAULT_LONG_PRESS_DELAY} onPress={onPress} onLongPress={onLongPress}>\n <GroupChannelPreview\n customCover={customCover}\n coverUrl={channel.coverUrl}\n title={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE(currentUser?.userId ?? '', channel)}\n titleCaptionLeft={titleCaptionIcon}\n titleCaption={STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel)}\n body={bodyText}\n bodyIcon={bodyIcon}\n badgeCount={channel.unreadMessageCount}\n memberCount={channel.memberCount > 2 ? channel.memberCount : undefined}\n frozen={channel.isFrozen}\n broadcast={channel.isBroadcast}\n notificationOff={channel.myPushTriggerOption === 'off'}\n />\n </Pressable>\n );\n};\n\nconst styles = createStyleSheet({\n titleCaptionIcon: {\n marginRight: 4,\n },\n broadcastCover: {\n padding: 12,\n borderRadius: 28,\n },\n});\n\nexport default GroupChannelPreviewContainer;\n"],"mappings":"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"}
@@ -19,11 +19,13 @@ var _openChannel = require("@sendbird/chat/openChannel");
19
19
 
20
20
  var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
21
21
 
22
- var _Localization = require("../contexts/Localization");
22
+ var _LocalizationCtx = require("../contexts/LocalizationCtx");
23
23
 
24
- var _PlatformService = require("../contexts/PlatformService");
24
+ var _PlatformServiceCtx = require("../contexts/PlatformServiceCtx");
25
25
 
26
- var _SendbirdChat = require("../contexts/SendbirdChat");
26
+ var _ProfileCardCtx = require("../contexts/ProfileCardCtx");
27
+
28
+ var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
27
29
 
28
30
  var _useContext = require("../hooks/useContext");
29
31
 
@@ -60,6 +62,7 @@ const SendbirdUIKitContainer = _ref => {
60
62
  localization,
61
63
  styles,
62
64
  toast,
65
+ profileCard,
63
66
  errorBoundary
64
67
  } = _ref;
65
68
  const unsubscribes = (0, _react.useRef)([]).current;
@@ -117,14 +120,14 @@ const SendbirdUIKitContainer = _ref => {
117
120
  });
118
121
  };
119
122
  }, [appId, chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.localCacheStorage]);
120
- return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChat.SendbirdChatProvider, {
123
+ return /*#__PURE__*/_react.default.createElement(_reactNativeSafeAreaContext.SafeAreaProvider, null, /*#__PURE__*/_react.default.createElement(_SendbirdChatCtx.SendbirdChatProvider, {
121
124
  sdkInstance: sdkInstance,
122
125
  enableAutoPushTokenRegistration: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableAutoPushTokenRegistration) ?? true,
123
126
  enableChannelListTypingIndicator: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListTypingIndicator) ?? false,
124
127
  enableChannelListMessageReceiptStatus: (chatOptions === null || chatOptions === void 0 ? void 0 : chatOptions.enableChannelListMessageReceiptStatus) ?? false
125
- }, /*#__PURE__*/_react.default.createElement(_Localization.LocalizationProvider, {
128
+ }, /*#__PURE__*/_react.default.createElement(_LocalizationCtx.LocalizationProvider, {
126
129
  stringSet: (localization === null || localization === void 0 ? void 0 : localization.stringSet) ?? _StringSet.default
127
- }, /*#__PURE__*/_react.default.createElement(_PlatformService.PlatformServiceProvider, {
130
+ }, /*#__PURE__*/_react.default.createElement(_PlatformServiceCtx.PlatformServiceProvider, {
128
131
  fileService: platformServices.file,
129
132
  notificationService: platformServices.notification,
130
133
  clipboardService: platformServices.clipboard,
@@ -137,7 +140,10 @@ const SendbirdUIKitContainer = _ref => {
137
140
  statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
138
141
  }, /*#__PURE__*/_react.default.createElement(LocalizedDialogProvider, null, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ToastProvider, {
139
142
  dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
140
- }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children)))))))));
143
+ }, /*#__PURE__*/_react.default.createElement(_ProfileCardCtx.ProfileCardProvider, {
144
+ onCreateChannel: profileCard === null || profileCard === void 0 ? void 0 : profileCard.onCreateChannel,
145
+ onBeforeCreateChannel: profileCard === null || profileCard === void 0 ? void 0 : profileCard.onBeforeCreateChannel
146
+ }, /*#__PURE__*/_react.default.createElement(_InternalErrorBoundaryContainer.default, errorBoundary, children))))))))));
141
147
  };
142
148
 
143
149
  const LocalizedDialogProvider = _ref2 => {
@@ -1 +1 @@
1
- {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","InternalLocalCacheStorage","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdChatSDK } from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/Localization';\nimport { PlatformServiceProvider } from '../contexts/PlatformService';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChat';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n enableAutoPushTokenRegistration?: boolean;\n enableChannelListTypingIndicator?: boolean;\n enableChannelListMessageReceiptStatus?: boolean;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n sdk = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(chatOptions?.localCacheStorage),\n // @ts-ignore\n useAsyncStorageStore: chatOptions?.localCacheStorage\n ? new InternalLocalCacheStorage(chatOptions.localCacheStorage)\n : undefined,\n });\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
1
+ {"version":3,"names":["NetInfo","SBUDynamicModule","get","SendbirdUIKit","Object","freeze","VERSION","PLATFORM","Platform","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","profileCard","errorBoundary","unsubscribes","useRef","current","getSendbirdSDK","sdk","Sendbird","init","modules","GroupChannelModule","OpenChannelModule","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","InternalLocalCacheStorage","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","useState","useEffect","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","StringSetEn","file","notification","clipboard","media","theme","LightUIKitTheme","HeaderComponent","Header","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","LocalizedDialogProvider","STRINGS","useLocalization","alert","ok","DIALOG","ALERT_DEFAULT_OK","prompt","PROMPT_DEFAULT_OK","cancel","PROMPT_DEFAULT_CANCEL","placeholder","PROMPT_DEFAULT_PLACEHOLDER"],"sources":["SendbirdUIKitContainer.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { Platform } from 'react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\n\nimport Sendbird from '@sendbird/chat';\nimport { GroupChannelModule } from '@sendbird/chat/groupChannel';\nimport { OpenChannelModule } from '@sendbird/chat/openChannel';\nimport type { HeaderStyleContextType, UIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport {\n DialogProvider,\n Header,\n HeaderStyleProvider,\n LightUIKitTheme,\n ToastProvider,\n UIKitThemeProvider,\n} from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\n\nimport { LocalizationProvider } from '../contexts/LocalizationCtx';\nimport { PlatformServiceProvider } from '../contexts/PlatformServiceCtx';\nimport { ProfileCardProvider } from '../contexts/ProfileCardCtx';\nimport { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';\nimport { useLocalization } from '../hooks/useContext';\nimport InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';\nimport StringSetEn from '../localization/StringSet.en';\nimport type { StringSet } from '../localization/StringSet.type';\nimport SBUDynamicModule from '../platform/dynamicModule';\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\nimport type { ErrorBoundaryProps, LocalCacheStorage } from '../types';\nimport VERSION from '../version';\nimport InternalErrorBoundaryContainer from './InternalErrorBoundaryContainer';\n\nconst NetInfo = SBUDynamicModule.get('@react-native-community/netinfo', 'warn');\n\nexport const SendbirdUIKit = Object.freeze({\n VERSION,\n PLATFORM: Platform.OS.toLowerCase(),\n});\n\nexport type SendbirdUIKitContainerProps = React.PropsWithChildren<{\n appId: string;\n platformServices: {\n file: FileServiceInterface;\n notification: NotificationServiceInterface;\n clipboard: ClipboardServiceInterface;\n media?: MediaServiceInterface;\n };\n chatOptions?: {\n localCacheStorage?: LocalCacheStorage;\n onInitialized?: (sdkInstance: SendbirdChatSDK) => SendbirdChatSDK;\n enableAutoPushTokenRegistration?: boolean;\n enableChannelListTypingIndicator?: boolean;\n enableChannelListMessageReceiptStatus?: boolean;\n };\n localization?: {\n stringSet?: StringSet;\n };\n styles?: {\n theme?: UIKitTheme;\n statusBarTranslucent?: boolean;\n defaultHeaderTitleAlign?: 'left' | 'center';\n defaultHeaderHeight?: number;\n HeaderComponent?: HeaderStyleContextType['HeaderComponent'];\n };\n toast?: {\n dismissTimeout?: number;\n };\n profileCard?: {\n onCreateChannel: (channel: SendbirdGroupChannel) => void;\n onBeforeCreateChannel?: (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n ) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n };\n errorBoundary?: {\n onError?: (props: ErrorBoundaryProps) => void;\n ErrorInfoComponent?: (props: ErrorBoundaryProps) => JSX.Element;\n };\n}>;\n\nconst SendbirdUIKitContainer = ({\n children,\n appId,\n chatOptions,\n platformServices,\n localization,\n styles,\n toast,\n profileCard,\n errorBoundary,\n}: SendbirdUIKitContainerProps) => {\n const unsubscribes = useRef<(() => void)[]>([]).current;\n const getSendbirdSDK = () => {\n let sdk: SendbirdChatSDK;\n\n sdk = Sendbird.init({\n appId,\n modules: [new GroupChannelModule(), new OpenChannelModule()],\n localCacheEnabled: Boolean(chatOptions?.localCacheStorage),\n // @ts-ignore\n useAsyncStorageStore: chatOptions?.localCacheStorage\n ? new InternalLocalCacheStorage(chatOptions.localCacheStorage)\n : undefined,\n });\n\n if (chatOptions?.onInitialized) {\n sdk = chatOptions?.onInitialized(sdk);\n }\n\n if (SendbirdUIKit.VERSION) {\n sdk.addExtension('sb_uikit', SendbirdUIKit.VERSION);\n }\n\n if (SendbirdUIKit.PLATFORM) {\n sdk.addExtension('device-os-platform', SendbirdUIKit.PLATFORM);\n }\n\n if (NetInfo?.addEventListener) {\n const listener = (callback: () => void, callbackType: 'online' | 'offline') => {\n const unsubscribe = NetInfo.addEventListener((state) => {\n const online = Boolean(state.isConnected) || Boolean(state.isInternetReachable);\n if (online && callbackType === 'online') callback();\n if (!online && callbackType === 'offline') callback();\n });\n unsubscribes.push(unsubscribe);\n return unsubscribe;\n };\n sdk.setOnlineListener?.((onOnline) => listener(onOnline, 'online'));\n sdk.setOfflineListener?.((onOffline) => listener(onOffline, 'offline'));\n }\n return sdk;\n };\n\n const [sdkInstance, setSdkInstance] = useState<SendbirdChatSDK>(getSendbirdSDK);\n\n useEffect(() => {\n setSdkInstance(getSendbirdSDK);\n return () => {\n unsubscribes.forEach((u) => {\n try {\n u();\n } catch {}\n });\n };\n }, [appId, chatOptions?.localCacheStorage]);\n\n return (\n <SafeAreaProvider>\n <SendbirdChatProvider\n sdkInstance={sdkInstance}\n enableAutoPushTokenRegistration={chatOptions?.enableAutoPushTokenRegistration ?? true}\n enableChannelListTypingIndicator={chatOptions?.enableChannelListTypingIndicator ?? false}\n enableChannelListMessageReceiptStatus={chatOptions?.enableChannelListMessageReceiptStatus ?? false}\n >\n <LocalizationProvider stringSet={localization?.stringSet ?? StringSetEn}>\n <PlatformServiceProvider\n fileService={platformServices.file}\n notificationService={platformServices.notification}\n clipboardService={platformServices.clipboard}\n mediaService={platformServices.media}\n >\n <UIKitThemeProvider theme={styles?.theme ?? LightUIKitTheme}>\n <HeaderStyleProvider\n HeaderComponent={styles?.HeaderComponent ?? Header}\n defaultTitleAlign={styles?.defaultHeaderTitleAlign ?? 'left'}\n statusBarTranslucent={styles?.statusBarTranslucent ?? true}\n >\n <LocalizedDialogProvider>\n <ToastProvider dismissTimeout={toast?.dismissTimeout}>\n <ProfileCardProvider\n onCreateChannel={profileCard?.onCreateChannel}\n onBeforeCreateChannel={profileCard?.onBeforeCreateChannel}\n >\n <InternalErrorBoundaryContainer {...errorBoundary}>{children}</InternalErrorBoundaryContainer>\n </ProfileCardProvider>\n </ToastProvider>\n </LocalizedDialogProvider>\n </HeaderStyleProvider>\n </UIKitThemeProvider>\n </PlatformServiceProvider>\n </LocalizationProvider>\n </SendbirdChatProvider>\n </SafeAreaProvider>\n );\n};\n\nconst LocalizedDialogProvider = ({ children }: React.PropsWithChildren) => {\n const { STRINGS } = useLocalization();\n return (\n <DialogProvider\n defaultLabels={{\n alert: {\n ok: STRINGS.DIALOG.ALERT_DEFAULT_OK,\n },\n prompt: {\n ok: STRINGS.DIALOG.PROMPT_DEFAULT_OK,\n cancel: STRINGS.DIALOG.PROMPT_DEFAULT_CANCEL,\n placeholder: STRINGS.DIALOG.PROMPT_DEFAULT_PLACEHOLDER,\n },\n }}\n >\n {children}\n </DialogProvider>\n );\n};\n\nexport default SendbirdUIKitContainer;\n"],"mappings":"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"}
@@ -26,4 +26,4 @@ const LocalizationProvider = _ref => {
26
26
  };
27
27
 
28
28
  exports.LocalizationProvider = LocalizationProvider;
29
- //# sourceMappingURL=Localization.js.map
29
+ //# sourceMappingURL=LocalizationCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LocalizationContext","React","createContext","LocalizationProvider","children","stringSet","STRINGS"],"sources":["LocalizationCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { StringSet } from '../localization/StringSet.type';\n\ntype Props = React.PropsWithChildren<{\n stringSet: StringSet;\n}>;\n\nexport type LocalizationContextType = {\n STRINGS: StringSet;\n};\n\nexport const LocalizationContext = React.createContext<LocalizationContextType | null>(null);\nexport const LocalizationProvider = ({ children, stringSet }: Props) => {\n return <LocalizationContext.Provider value={{ STRINGS: stringSet }}>{children}</LocalizationContext.Provider>;\n};\n"],"mappings":";;;;;;;AAAA;;;;AAYO,MAAMA,mBAAmB,gBAAGC,cAAA,CAAMC,aAAN,CAAoD,IAApD,CAA5B;;;;AACA,MAAMC,oBAAoB,GAAG,QAAoC;EAAA,IAAnC;IAAEC,QAAF;IAAYC;EAAZ,CAAmC;EACtE,oBAAO,6BAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAE;MAAEC,OAAO,EAAED;IAAX;EAArC,GAA8DD,QAA9D,CAAP;AACD,CAFM"}
@@ -32,4 +32,4 @@ const PlatformServiceProvider = _ref => {
32
32
  };
33
33
 
34
34
  exports.PlatformServiceProvider = PlatformServiceProvider;
35
- //# sourceMappingURL=PlatformService.js.map
35
+ //# sourceMappingURL=PlatformServiceCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["PlatformServiceContext","React","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformServiceCtx.tsx"],"sourcesContent":["import React from 'react';\n\nimport type {\n ClipboardServiceInterface,\n FileServiceInterface,\n MediaServiceInterface,\n NotificationServiceInterface,\n} from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n fileService: FileServiceInterface;\n clipboardService: ClipboardServiceInterface;\n notificationService: NotificationServiceInterface;\n mediaService?: MediaServiceInterface;\n}>;\n\nexport const PlatformServiceContext = React.createContext<Props | null>(null);\nexport const PlatformServiceProvider = ({\n children,\n fileService,\n clipboardService,\n notificationService,\n mediaService,\n}: Props) => {\n return (\n <PlatformServiceContext.Provider value={{ fileService, clipboardService, notificationService, mediaService }}>\n {children}\n </PlatformServiceContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAAA;;;;AAgBO,MAAMA,sBAAsB,gBAAGC,cAAA,CAAMC,aAAN,CAAkC,IAAlC,CAA/B;;;;AACA,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,6BAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ProfileCardProvider = exports.ProfileCardContext = void 0;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
11
+
12
+ var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
13
+
14
+ var _uikitUtils = require("@sendbird/uikit-utils");
15
+
16
+ var _LocalizationCtx = require("../contexts/LocalizationCtx");
17
+
18
+ var _SendbirdChatCtx = require("../contexts/SendbirdChatCtx");
19
+
20
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
+
22
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
+
24
+ const ProfileCardContext = /*#__PURE__*/_react.default.createContext(null);
25
+
26
+ exports.ProfileCardContext = ProfileCardContext;
27
+
28
+ const ProfileCardProvider = _ref => {
29
+ let {
30
+ children,
31
+ onCreateChannel,
32
+ onBeforeCreateChannel = _uikitUtils.PASS
33
+ } = _ref;
34
+ const chatContext = (0, _react.useContext)(_SendbirdChatCtx.SendbirdChatContext);
35
+ const localizationContext = (0, _react.useContext)(_LocalizationCtx.LocalizationContext);
36
+ const {
37
+ bottom,
38
+ left,
39
+ right
40
+ } = (0, _reactNativeSafeAreaContext.useSafeAreaInsets)();
41
+ const [user, setUser] = (0, _react.useState)();
42
+ const [visible, setVisible] = (0, _react.useState)(false);
43
+
44
+ const show = user => {
45
+ setUser(user);
46
+ setVisible(true);
47
+ };
48
+
49
+ const hide = () => {
50
+ setVisible(false);
51
+ };
52
+
53
+ if (!chatContext) throw new Error('SendbirdChatContext is not provided');
54
+ if (!localizationContext) throw new Error('LocalizationContext is not provided');
55
+ const profileCardButton = (0, _uikitUtils.useIIFE)(() => {
56
+ const isMe = chatContext.currentUser && (user === null || user === void 0 ? void 0 : user.userId) === chatContext.currentUser.userId;
57
+ if (isMe) return undefined;
58
+
59
+ const onPressMessageButton = async () => {
60
+ if (user) {
61
+ const params = {
62
+ invitedUserIds: [user.userId],
63
+ name: '',
64
+ coverUrl: '',
65
+ isDistinct: false
66
+ };
67
+ if (chatContext.currentUser) params.operatorUserIds = [chatContext.currentUser.userId];
68
+ const processedParams = await onBeforeCreateChannel(params, [user]);
69
+ hide();
70
+ const channel = await chatContext.sdk.groupChannel.createChannel(processedParams);
71
+
72
+ if (onCreateChannel) {
73
+ onCreateChannel(channel);
74
+ } else {
75
+ _uikitUtils.Logger.warn('Please set `onCreateChannel` before message to user from profile card, see `profileCard` prop in the `SendbirdUIKitContainer` props');
76
+ }
77
+ }
78
+ };
79
+
80
+ return /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.OutlinedButton, {
81
+ onPress: onPressMessageButton
82
+ }, localizationContext.STRINGS.PROFILE_CARD.BUTTON_MESSAGE);
83
+ });
84
+ return /*#__PURE__*/_react.default.createElement(ProfileCardContext.Provider, {
85
+ value: {
86
+ show,
87
+ hide
88
+ }
89
+ }, children, /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.Modal, {
90
+ type: 'slide',
91
+ onClose: hide,
92
+ onDismiss: () => setUser(undefined),
93
+ visible: visible && Boolean(user),
94
+ backgroundStyle: styles.modal
95
+ }, user && /*#__PURE__*/_react.default.createElement(_uikitReactNativeFoundation.ProfileCard, {
96
+ containerStyle: [styles.profileCardContainer, {
97
+ paddingLeft: left,
98
+ paddingRight: right,
99
+ paddingBottom: bottom
100
+ }],
101
+ uri: user.profileUrl,
102
+ username: user.nickname || localizationContext.STRINGS.LABELS.USER_NO_NAME,
103
+ bodyLabel: localizationContext.STRINGS.PROFILE_CARD.BODY_LABEL,
104
+ body: localizationContext.STRINGS.PROFILE_CARD.BODY(user),
105
+ button: profileCardButton
106
+ })));
107
+ };
108
+
109
+ exports.ProfileCardProvider = ProfileCardProvider;
110
+ const styles = (0, _uikitReactNativeFoundation.createStyleSheet)({
111
+ modal: {
112
+ justifyContent: 'flex-end'
113
+ },
114
+ profileCardContainer: {
115
+ borderTopLeftRadius: 8,
116
+ borderTopRightRadius: 8
117
+ }
118
+ });
119
+ //# sourceMappingURL=ProfileCardCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ProfileCardContext","React","createContext","ProfileCardProvider","children","onCreateChannel","onBeforeCreateChannel","PASS","chatContext","useContext","SendbirdChatContext","localizationContext","LocalizationContext","bottom","left","right","useSafeAreaInsets","user","setUser","useState","visible","setVisible","show","hide","Error","profileCardButton","useIIFE","isMe","currentUser","userId","undefined","onPressMessageButton","params","invitedUserIds","name","coverUrl","isDistinct","operatorUserIds","processedParams","channel","sdk","groupChannel","createChannel","Logger","warn","STRINGS","PROFILE_CARD","BUTTON_MESSAGE","Boolean","styles","modal","profileCardContainer","paddingLeft","paddingRight","paddingBottom","profileUrl","nickname","LABELS","USER_NO_NAME","BODY_LABEL","BODY","createStyleSheet","justifyContent","borderTopLeftRadius","borderTopRightRadius"],"sources":["ProfileCardCtx.tsx"],"sourcesContent":["import React, { useContext, useState } from 'react';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport { Modal, OutlinedButton, ProfileCard, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type {\n SendbirdGroupChannel,\n SendbirdGroupChannelCreateParams,\n SendbirdMember,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport { Logger, PASS, useIIFE } from '@sendbird/uikit-utils';\n\nimport { LocalizationContext } from '../contexts/LocalizationCtx';\nimport { SendbirdChatContext } from '../contexts/SendbirdChatCtx';\n\ntype OnCreateChannel = (channel: SendbirdGroupChannel) => void;\ntype OnBeforeCreateChannel = (\n channelParams: SendbirdGroupChannelCreateParams,\n users: SendbirdUser[] | SendbirdMember[],\n) => SendbirdGroupChannelCreateParams | Promise<SendbirdGroupChannelCreateParams>;\n\nexport type ProfileCardContextType = {\n show(user: SendbirdUser | SendbirdMember): void;\n hide(): void;\n};\n\ntype Props = React.PropsWithChildren<{\n onCreateChannel?: OnCreateChannel;\n onBeforeCreateChannel?: OnBeforeCreateChannel;\n}>;\n\nexport const ProfileCardContext = React.createContext<ProfileCardContextType | null>(null);\nexport const ProfileCardProvider = ({ children, onCreateChannel, onBeforeCreateChannel = PASS }: Props) => {\n const chatContext = useContext(SendbirdChatContext);\n const localizationContext = useContext(LocalizationContext);\n const { bottom, left, right } = useSafeAreaInsets();\n\n const [user, setUser] = useState<SendbirdUser | SendbirdMember>();\n const [visible, setVisible] = useState(false);\n\n const show: ProfileCardContextType['show'] = (user) => {\n setUser(user);\n setVisible(true);\n };\n\n const hide: ProfileCardContextType['hide'] = () => {\n setVisible(false);\n };\n\n if (!chatContext) throw new Error('SendbirdChatContext is not provided');\n if (!localizationContext) throw new Error('LocalizationContext is not provided');\n\n const profileCardButton = useIIFE(() => {\n const isMe = chatContext.currentUser && user?.userId === chatContext.currentUser.userId;\n if (isMe) return undefined;\n\n const onPressMessageButton = async () => {\n if (user) {\n const params: SendbirdGroupChannelCreateParams = {\n invitedUserIds: [user.userId],\n name: '',\n coverUrl: '',\n isDistinct: false,\n };\n\n if (chatContext.currentUser) params.operatorUserIds = [chatContext.currentUser.userId];\n const processedParams = await onBeforeCreateChannel(params, [user]);\n\n hide();\n const channel = await chatContext.sdk.groupChannel.createChannel(processedParams);\n\n if (onCreateChannel) {\n onCreateChannel(channel);\n } else {\n Logger.warn(\n 'Please set `onCreateChannel` before message to user from profile card, see `profileCard` prop in the `SendbirdUIKitContainer` props',\n );\n }\n }\n };\n\n return (\n <OutlinedButton onPress={onPressMessageButton}>\n {localizationContext.STRINGS.PROFILE_CARD.BUTTON_MESSAGE}\n </OutlinedButton>\n );\n });\n\n return (\n <ProfileCardContext.Provider value={{ show, hide }}>\n {children}\n <Modal\n type={'slide'}\n onClose={hide}\n onDismiss={() => setUser(undefined)}\n visible={visible && Boolean(user)}\n backgroundStyle={styles.modal}\n >\n {user && (\n <ProfileCard\n containerStyle={[\n styles.profileCardContainer,\n { paddingLeft: left, paddingRight: right, paddingBottom: bottom },\n ]}\n uri={user.profileUrl}\n username={user.nickname || localizationContext.STRINGS.LABELS.USER_NO_NAME}\n bodyLabel={localizationContext.STRINGS.PROFILE_CARD.BODY_LABEL}\n body={localizationContext.STRINGS.PROFILE_CARD.BODY(user)}\n button={profileCardButton}\n />\n )}\n </Modal>\n </ProfileCardContext.Provider>\n );\n};\n\nconst styles = createStyleSheet({\n modal: {\n justifyContent: 'flex-end',\n },\n profileCardContainer: {\n borderTopLeftRadius: 8,\n borderTopRightRadius: 8,\n },\n});\n"],"mappings":"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"}
@@ -58,12 +58,12 @@ const SendbirdChatProvider = _ref => {
58
58
  return user;
59
59
  }, [sdkInstance, currentUser, setCurrentUser]);
60
60
  const markAsDeliveredWithChannel = (0, _react.useCallback)(channel => {
61
- if (appFeatures.deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)(sdkInstance, channel);
61
+ if (appFeatures.deliveryReceiptEnabled) (0, _uikitUtils.confirmAndMarkAsDelivered)([channel]);
62
62
  }, [sdkInstance, appFeatures.deliveryReceiptEnabled]);
63
63
  (0, _react.useEffect)(() => {
64
64
  const listener = status => {
65
65
  // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';
66
- if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
66
+ if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();
67
67
  };
68
68
 
69
69
  const subscriber = _reactNative.AppState.addEventListener('change', listener);
@@ -88,4 +88,4 @@ const SendbirdChatProvider = _ref => {
88
88
  };
89
89
 
90
90
  exports.SendbirdChatProvider = SendbirdChatProvider;
91
- //# sourceMappingURL=SendbirdChat.js.map
91
+ //# sourceMappingURL=SendbirdChatCtx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SendbirdChatContext","React","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","currentUser","_setCurrentUser","useState","forceUpdate","useForceUpdate","appFeatures","useAppFeatures","setCurrentUser","useCallback","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","confirmAndMarkAsDelivered","useEffect","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","AppState","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled"],"sources":["SendbirdChatCtx.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { AppState, AppStateStatus } from 'react-native';\n\nimport { useAppFeatures } from '@sendbird/uikit-chat-hooks';\nimport type {\n SendbirdChatSDK,\n SendbirdGroupChannel,\n SendbirdUser,\n SendbirdUserUpdateParams,\n} from '@sendbird/uikit-utils';\nimport { confirmAndMarkAsDelivered, useForceUpdate } from '@sendbird/uikit-utils';\n\nimport type { FileType } from '../platform/types';\n\ntype Props = React.PropsWithChildren<{\n sdkInstance: SendbirdChatSDK;\n\n enableAutoPushTokenRegistration: boolean;\n enableChannelListTypingIndicator: boolean;\n enableChannelListMessageReceiptStatus: boolean;\n}>;\n\ntype Context = {\n sdk: SendbirdChatSDK;\n currentUser?: SendbirdUser;\n setCurrentUser: React.Dispatch<React.SetStateAction<SendbirdUser | undefined>>;\n\n // helper functions\n updateCurrentUserInfo: (nickname?: string, profile?: string | FileType) => Promise<SendbirdUser>;\n markAsDeliveredWithChannel: (channel: SendbirdGroupChannel) => void;\n\n features: {\n // UIKit features\n autoPushTokenRegistrationEnabled: boolean;\n channelListTypingIndicatorEnabled: boolean;\n channelListMessageReceiptStatusEnabled: boolean;\n\n // Sendbird application features\n deliveryReceiptEnabled: boolean;\n broadcastChannelEnabled: boolean;\n superGroupChannelEnabled: boolean;\n reactionEnabled: boolean;\n };\n};\n\nexport const SendbirdChatContext = React.createContext<Context | null>(null);\nexport const SendbirdChatProvider = ({\n children,\n sdkInstance,\n enableAutoPushTokenRegistration,\n enableChannelListMessageReceiptStatus,\n enableChannelListTypingIndicator,\n}: Props) => {\n const [currentUser, _setCurrentUser] = useState<SendbirdUser>();\n const forceUpdate = useForceUpdate();\n const appFeatures = useAppFeatures(sdkInstance);\n\n const setCurrentUser: Context['setCurrentUser'] = useCallback((user) => {\n // NOTE: Sendbird SDK handle User object is always same object, so force update after setCurrentUser\n _setCurrentUser(user);\n forceUpdate();\n }, []);\n\n const updateCurrentUserInfo: Context['updateCurrentUserInfo'] = useCallback(\n async (nickname, profile) => {\n let user = currentUser;\n\n if (!user) throw new Error('Current user is not defined, please connect using `useConnection()` hook first');\n\n const params: SendbirdUserUpdateParams = { nickname };\n\n if (typeof profile === 'string') {\n params.profileUrl = profile;\n } else if (typeof profile === 'object') {\n params.profileImage = profile;\n } else {\n throw new Error(`Cannot update profile, not supported profile type(${typeof profile})`);\n }\n\n user = await sdkInstance.updateCurrentUserInfo(params);\n\n setCurrentUser(user);\n return user;\n },\n [sdkInstance, currentUser, setCurrentUser],\n );\n\n const markAsDeliveredWithChannel: Context['markAsDeliveredWithChannel'] = useCallback(\n (channel: SendbirdGroupChannel) => {\n if (appFeatures.deliveryReceiptEnabled) confirmAndMarkAsDelivered([channel]);\n },\n [sdkInstance, appFeatures.deliveryReceiptEnabled],\n );\n\n useEffect(() => {\n const listener = (status: AppStateStatus) => {\n // 'active' | 'background' | 'inactive' | 'unknown' | 'extension';\n if (status === 'active') sdkInstance.connectionState === 'CLOSED' && sdkInstance.setForegroundState();\n else if (status === 'background') sdkInstance.connectionState === 'OPEN' && sdkInstance.setBackgroundState();\n };\n\n const subscriber = AppState.addEventListener('change', listener);\n return () => subscriber.remove();\n }, [sdkInstance]);\n\n const value: Context = {\n sdk: sdkInstance,\n currentUser,\n setCurrentUser,\n\n updateCurrentUserInfo,\n markAsDeliveredWithChannel,\n\n features: {\n ...appFeatures,\n autoPushTokenRegistrationEnabled: enableAutoPushTokenRegistration,\n channelListTypingIndicatorEnabled: enableChannelListTypingIndicator,\n channelListMessageReceiptStatusEnabled: enableChannelListMessageReceiptStatus,\n },\n };\n\n return <SendbirdChatContext.Provider value={value}>{children}</SendbirdChatContext.Provider>;\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n // /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n // skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Custom Collection creator for group channel collection **/\n collectionCreator?: UseGroupChannelListOptions['collectionCreator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type React from 'react';\nimport type { FlatListProps } from 'react-native';\n\nimport type { UseGroupChannelListOptions } from '@sendbird/uikit-chat-hooks';\nimport type { ActionMenuItem, BaseHeaderProps } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdGroupChannel } from '@sendbird/uikit-utils';\n\nimport type { CommonComponent } from '../../types';\n\nexport interface GroupChannelListProps {\n /** Props for `GroupChannelListFragment` **/\n Fragment: {\n /** Navigate to GroupChannelFragment **/\n onPressChannel: (channel: SendbirdGroupChannel) => void;\n /** Navigate to GroupChannelCreateFragment **/\n onPressCreateChannel: (channelType: GroupChannelType) => void;\n /** Custom Header for TypeSelector, Only replace header component not a module **/\n TypeSelectorHeader?: null | CommonComponent<\n BaseHeaderProps<{ title: string; right: React.ReactElement; onPressRight: () => void }>\n >;\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview?: (\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Skip type selection, When this is set to true 'channelType' only receive 'GROUP' type **/\n skipTypeSelection?: boolean;\n /** Custom Query creator for channels query **/\n queryCreator?: UseGroupChannelListOptions['queryCreator'];\n /** Custom Collection creator for group channel collection **/\n collectionCreator?: UseGroupChannelListOptions['collectionCreator'];\n /** FlatList props for GroupChannelList.List **/\n flatListProps?: GroupChannelListProps['List']['flatListProps'];\n /** Action menu item creator for onLongPress **/\n menuItemCreator?: GroupChannelListProps['List']['menuItemCreator'];\n };\n /** Props for `GroupChannelListModule.Header` **/\n Header: {};\n /** Props for `GroupChannelListModule.List` **/\n List: {\n /** GroupChannels from SendbirdChat SDK **/\n groupChannels: SendbirdGroupChannel[];\n /** Method to render GroupChannel preview **/\n renderGroupChannelPreview: (\n // FIXME/BREAKING: Changed to props object\n channel: SendbirdGroupChannel,\n onLongPressChannel: () => void,\n ) => React.ReactElement | null;\n /** Method to load more data, called with onEndReached of FlatList **/\n onLoadNext: () => Promise<void>;\n /** Prop from Fragment **/\n flatListProps?: Omit<FlatListProps<SendbirdGroupChannel>, 'data' | 'renderItem'>;\n /** Prop from Fragment **/\n menuItemCreator?: (defaultMenuItem: ActionMenuItem) => ActionMenuItem;\n };\n /** Props for `GroupChannelListModule.TypeSelector` **/\n TypeSelector: {\n /** Prop from Fragment `Fragment.TypeSelectorHeader` **/\n Header: GroupChannelListProps['Fragment']['TypeSelectorHeader'];\n /** Prop from Fragment `Fragment.skipTypeSelection` **/\n skipTypeSelection: boolean;\n /** Method called when type is selected, call `Fragment.onPressCreateChannel` **/\n onSelectType: (type: GroupChannelType) => void;\n };\n}\n\n/**\n * Internal context for GroupChannelList\n * For example, the developer can create a custom header\n * with getting data from the domain context\n * */\nexport interface GroupChannelListContextsType {\n Fragment: React.Context<{\n headerTitle: string;\n }>;\n TypeSelector: React.Context<{\n visible: boolean;\n show: () => void;\n hide: () => void;\n headerTitle: string;\n }>;\n}\nexport interface GroupChannelListModule {\n Provider: CommonComponent;\n Header: CommonComponent<GroupChannelListProps['Header']>;\n List: CommonComponent<GroupChannelListProps['List']>;\n TypeSelector: CommonComponent<GroupChannelListProps['TypeSelector']>;\n StatusEmpty: CommonComponent;\n StatusLoading: CommonComponent;\n}\n\nexport type GroupChannelListFragment = CommonComponent<GroupChannelListProps['Fragment']>;\nexport type GroupChannelType = 'GROUP' | 'SUPER_GROUP' | 'BROADCAST';\n"],"mappings":""}
@@ -141,7 +141,7 @@ const createGroupChannelFragment = initModule => {
141
141
  onPressImageMessage: onPressImageMessage,
142
142
  onPressMediaMessage: onPressMediaMessage,
143
143
  flatListProps: memoizedFlatListProps
144
- }), /*#__PURE__*/_react.default.createElement(GroupChannelModule.Input, {
144
+ }), shouldRenderInput(channel) && /*#__PURE__*/_react.default.createElement(GroupChannelModule.Input, {
145
145
  channel: activeChannel,
146
146
  onSendFileMessage: onSendFileMessage,
147
147
  onSendUserMessage: onSendUserMessage,
@@ -151,6 +151,14 @@ const createGroupChannelFragment = initModule => {
151
151
  };
152
152
  };
153
153
 
154
+ function shouldRenderInput(channel) {
155
+ if (channel.isBroadcast) {
156
+ return channel.myRole === 'operator';
157
+ }
158
+
159
+ return true;
160
+ }
161
+
154
162
  var _default = createGroupChannelFragment;
155
163
  exports.default = _default;
156
164
  //# sourceMappingURL=createGroupChannelFragment.js.map