@sendbird/uikit-react-native 1.1.1 → 1.1.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.
- package/lib/commonjs/components/FileViewer.js +8 -3
- package/lib/commonjs/components/FileViewer.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +47 -15
- package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +51 -34
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
- package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/index.js +7 -2
- package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +39 -6
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
- package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +35 -2
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/libs/SBUError.js +41 -0
- package/lib/commonjs/libs/SBUError.js.map +1 -0
- package/lib/commonjs/libs/SBUUtils.js +20 -0
- package/lib/commonjs/libs/SBUUtils.js.map +1 -0
- package/lib/commonjs/localization/StringSet.type.js +6 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createFileService.expo.js +6 -4
- package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +20 -8
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/platform/types.js +4 -0
- package/lib/commonjs/platform/types.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/FileViewer.js +9 -4
- package/lib/module/components/FileViewer.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +48 -17
- package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +52 -35
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
- package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
- package/lib/module/components/MessageRenderer/index.js +7 -2
- package/lib/module/components/MessageRenderer/index.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +38 -7
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
- package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +34 -3
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/libs/SBUError.js +32 -0
- package/lib/module/libs/SBUError.js.map +1 -0
- package/lib/module/libs/SBUUtils.js +10 -0
- package/lib/module/libs/SBUUtils.js.map +1 -0
- package/lib/module/localization/StringSet.type.js +6 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createFileService.expo.js +5 -4
- package/lib/module/platform/createFileService.expo.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +18 -8
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/platform/types.js +1 -1
- package/lib/module/platform/types.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
- package/lib/typescript/src/libs/SBUError.d.ts +14 -0
- package/lib/typescript/src/libs/SBUUtils.d.ts +3 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
- package/lib/typescript/src/platform/types.d.ts +2 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +5 -5
- package/src/components/FileViewer.tsx +12 -4
- package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +55 -12
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +38 -30
- package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +1 -1
- package/src/components/MessageRenderer/index.tsx +5 -2
- package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +28 -4
- package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +26 -3
- package/src/fragments/createGroupChannelListFragment.tsx +1 -1
- package/src/libs/SBUError.ts +26 -0
- package/src/libs/SBUUtils.ts +9 -0
- package/src/localization/StringSet.type.ts +10 -0
- package/src/platform/createFileService.expo.ts +5 -4
- package/src/platform/createFileService.native.ts +17 -8
- package/src/platform/types.ts +3 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","createStyleSheet","useUIKitTheme","useLocalization","MessageIncomingSenderName","message","grouping","colors","STRINGS","styles","sender","isFileMessage","isUserMessage","ui","incoming","enabled","textSenderName","nickname","LABELS","USER_NO_NAME","marginLeft","marginBottom"],"sources":["MessageIncomingSenderName.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingSenderName = ({ message, grouping }: Props) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n if (grouping) return null;\n\n return (\n <View style={styles.sender}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Text caption1 color={colors.ui.message.incoming.enabled.textSenderName}>\n {message.sender?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sender: {\n marginLeft: 12,\n marginBottom: 4,\n },\n});\n\nexport default MessageIncomingSenderName;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;AAGA,SAASC,eAAT,QAAgC,wBAAhC;;AAMA,MAAMC,yBAAyB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAClE,MAAM;IAAEC;EAAF,IAAaL,aAAa,EAAhC;EACA,MAAM;IAAEM;EAAF,IAAcL,eAAe,EAAnC;EACA,IAAIG,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,GACG,CAACL,OAAO,CAACM,aAAR,MAA2BN,OAAO,CAACO,aAAR,EAA5B,kBACC,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEL,MAAM,CAACM,EAAP,CAAUR,OAAV,CAAkBS,QAAlB,CAA2BC,OAA3B,CAAmCC;
|
|
1
|
+
{"version":3,"names":["React","View","Text","createStyleSheet","useUIKitTheme","useLocalization","MessageIncomingSenderName","message","grouping","colors","STRINGS","styles","sender","isFileMessage","isUserMessage","ui","incoming","enabled","textSenderName","nickname","LABELS","USER_NO_NAME","marginLeft","marginBottom"],"sources":["MessageIncomingSenderName.tsx"],"sourcesContent":["import React from 'react';\nimport { View } from 'react-native';\n\nimport { Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\n\nimport { useLocalization } from '../../hooks/useContext';\n\ntype Props = {\n message: SendbirdMessage;\n grouping: boolean;\n};\nconst MessageIncomingSenderName = ({ message, grouping }: Props) => {\n const { colors } = useUIKitTheme();\n const { STRINGS } = useLocalization();\n if (grouping) return null;\n\n return (\n <View style={styles.sender}>\n {(message.isFileMessage() || message.isUserMessage()) && (\n <Text caption1 color={colors.ui.message.incoming.enabled.textSenderName} numberOfLines={1}>\n {message.sender?.nickname || STRINGS.LABELS.USER_NO_NAME}\n </Text>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sender: {\n marginLeft: 12,\n marginBottom: 4,\n },\n});\n\nexport default MessageIncomingSenderName;\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,IAAT,EAAeC,gBAAf,EAAiCC,aAAjC,QAAsD,yCAAtD;AAGA,SAASC,eAAT,QAAgC,wBAAhC;;AAMA,MAAMC,yBAAyB,GAAG,QAAkC;EAAA;;EAAA,IAAjC;IAAEC,OAAF;IAAWC;EAAX,CAAiC;EAClE,MAAM;IAAEC;EAAF,IAAaL,aAAa,EAAhC;EACA,MAAM;IAAEM;EAAF,IAAcL,eAAe,EAAnC;EACA,IAAIG,QAAJ,EAAc,OAAO,IAAP;EAEd,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEG,MAAM,CAACC;EAApB,GACG,CAACL,OAAO,CAACM,aAAR,MAA2BN,OAAO,CAACO,aAAR,EAA5B,kBACC,oBAAC,IAAD;IAAM,QAAQ,MAAd;IAAe,KAAK,EAAEL,MAAM,CAACM,EAAP,CAAUR,OAAV,CAAkBS,QAAlB,CAA2BC,OAA3B,CAAmCC,cAAzD;IAAyE,aAAa,EAAE;EAAxF,GACG,oBAAAX,OAAO,CAACK,MAAR,oEAAgBO,QAAhB,KAA4BT,OAAO,CAACU,MAAR,CAAeC,YAD9C,CAFJ,CADF;AASD,CAdD;;AAgBA,MAAMV,MAAM,GAAGR,gBAAgB,CAAC;EAC9BS,MAAM,EAAE;IACNU,UAAU,EAAE,EADN;IAENC,YAAY,EAAE;EAFR;AADsB,CAAD,CAA/B;AAOA,eAAejB,yBAAf"}
|
|
@@ -108,11 +108,13 @@ const MessageRenderer = _ref => {
|
|
|
108
108
|
})), isIncoming && /*#__PURE__*/React.createElement(MessageIncomingAvatar, {
|
|
109
109
|
message: message,
|
|
110
110
|
grouping: groupWithNext
|
|
111
|
-
}), /*#__PURE__*/React.createElement(View,
|
|
111
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
112
|
+
style: styles.bubbleContainer
|
|
113
|
+
}, isIncoming && /*#__PURE__*/React.createElement(MessageIncomingSenderName, {
|
|
112
114
|
message: message,
|
|
113
115
|
grouping: groupWithPrev
|
|
114
116
|
}), /*#__PURE__*/React.createElement(View, {
|
|
115
|
-
style: styles.
|
|
117
|
+
style: styles.bubbleWrapper
|
|
116
118
|
}, messageComponent, isIncoming && /*#__PURE__*/React.createElement(MessageTime, {
|
|
117
119
|
message: message,
|
|
118
120
|
grouping: groupWithNext,
|
|
@@ -150,6 +152,9 @@ const styles = createStyleSheet({
|
|
|
150
152
|
maxWidth: 240
|
|
151
153
|
},
|
|
152
154
|
bubbleContainer: {
|
|
155
|
+
flexShrink: 1
|
|
156
|
+
},
|
|
157
|
+
bubbleWrapper: {
|
|
153
158
|
flexDirection: 'row',
|
|
154
159
|
alignItems: 'flex-end'
|
|
155
160
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Pressable","View","createStyleSheet","calcMessageGrouping","conditionChaining","isMyMessage","useIIFE","DEFAULT_LONG_PRESS_DELAY","AdminMessage","FileMessage","MessageContainer","MessageDateSeparator","MessageIncomingAvatar","MessageIncomingSenderName","MessageOutgoingStatus","MessageTime","UnknownMessage","UserMessage","MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","pressableProps","style","msgContainer","disabled","delayLongPress","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","timeIncoming","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleContainer}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Pressable","View","createStyleSheet","calcMessageGrouping","conditionChaining","isMyMessage","useIIFE","DEFAULT_LONG_PRESS_DELAY","AdminMessage","FileMessage","MessageContainer","MessageDateSeparator","MessageIncomingAvatar","MessageIncomingSenderName","MessageOutgoingStatus","MessageTime","UnknownMessage","UserMessage","MessageRenderer","currentUserId","channel","message","onPress","onLongPress","rest","variant","isOutgoing","isIncoming","variantContainerStyle","incoming","styles","chatIncoming","outgoing","chatOutgoing","groupWithPrev","groupWithNext","Boolean","enableMessageGrouping","prevMessage","nextMessage","messageComponent","pressableProps","style","msgContainer","disabled","delayLongPress","messageProps","isUserMessage","pressed","isFileMessage","isAdminMessage","chatGroup","chatNonGroup","chatLastMessage","outgoingContainer","timeOutgoing","bubbleContainer","bubbleWrapper","timeIncoming","flexDirection","justifyContent","alignItems","marginLeft","marginRight","marginBottom","maxWidth","flexShrink","memo"],"sources":["index.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable, View } from 'react-native';\n\nimport { createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMessage } from '@sendbird/uikit-utils';\nimport { calcMessageGrouping, conditionChaining, isMyMessage, useIIFE } from '@sendbird/uikit-utils';\n\nimport { DEFAULT_LONG_PRESS_DELAY } from '../../constants';\nimport type { GroupChannelProps } from '../../domain/groupChannel/types';\nimport AdminMessage from './AdminMessage';\nimport FileMessage from './FileMessage';\nimport MessageContainer from './MessageContainer';\nimport MessageDateSeparator from './MessageDateSeparator';\nimport MessageIncomingAvatar from './MessageIncomingAvatar';\nimport MessageIncomingSenderName from './MessageIncomingSenderName';\nimport MessageOutgoingStatus from './MessageOutgoingStatus';\nimport MessageTime from './MessageTime';\nimport UnknownMessage from './UnknownMessage';\nimport UserMessage from './UserMessage';\n\ntype MessageStyleVariant = 'outgoing' | 'incoming';\nexport interface MessageRendererInterface<T = SendbirdMessage> {\n message: T;\n prevMessage?: SendbirdMessage;\n nextMessage?: SendbirdMessage;\n variant: MessageStyleVariant;\n groupWithPrev: boolean;\n groupWithNext: boolean;\n pressed: boolean;\n}\n\nconst MessageRenderer: GroupChannelProps['Fragment']['renderMessage'] = ({\n currentUserId,\n channel,\n message,\n onPress,\n onLongPress,\n ...rest\n}) => {\n const variant: MessageStyleVariant = isMyMessage(message, currentUserId) ? 'outgoing' : 'incoming';\n const isOutgoing = variant === 'outgoing';\n const isIncoming = variant === 'incoming';\n const variantContainerStyle = { incoming: styles.chatIncoming, outgoing: styles.chatOutgoing }[variant];\n\n const { groupWithPrev, groupWithNext } = calcMessageGrouping(\n Boolean(rest.enableMessageGrouping),\n message,\n rest.prevMessage,\n rest.nextMessage,\n );\n\n const messageComponent = useIIFE(() => {\n const pressableProps = {\n style: styles.msgContainer,\n disabled: !onPress && !onLongPress,\n onPress,\n onLongPress,\n delayLongPress: DEFAULT_LONG_PRESS_DELAY,\n };\n const messageProps = { ...rest, variant, groupWithNext, groupWithPrev };\n\n if (message.isUserMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UserMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isFileMessage()) {\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <FileMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n }\n\n if (message.isAdminMessage()) {\n return <AdminMessage message={message} pressed={false} {...messageProps} />;\n }\n\n return (\n <Pressable {...pressableProps}>\n {({ pressed }) => <UnknownMessage message={message} pressed={pressed} {...messageProps} />}\n </Pressable>\n );\n });\n\n return (\n <MessageContainer>\n <MessageDateSeparator message={message} prevMessage={rest.prevMessage} />\n {message.isAdminMessage() && messageComponent}\n {!message.isAdminMessage() && (\n <View\n style={[\n variantContainerStyle,\n conditionChaining(\n [groupWithNext, Boolean(rest.nextMessage)],\n [styles.chatGroup, styles.chatNonGroup, styles.chatLastMessage],\n ),\n ]}\n >\n {isOutgoing && (\n <View style={styles.outgoingContainer}>\n <MessageOutgoingStatus channel={channel} message={message} />\n <MessageTime message={message} grouping={groupWithNext} style={styles.timeOutgoing} />\n </View>\n )}\n {isIncoming && <MessageIncomingAvatar message={message} grouping={groupWithNext} />}\n <View style={styles.bubbleContainer}>\n {isIncoming && <MessageIncomingSenderName message={message} grouping={groupWithPrev} />}\n <View style={styles.bubbleWrapper}>\n {messageComponent}\n {isIncoming && <MessageTime message={message} grouping={groupWithNext} style={styles.timeIncoming} />}\n </View>\n </View>\n </View>\n )}\n </MessageContainer>\n );\n};\n\nconst styles = createStyleSheet({\n chatIncoming: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n },\n chatOutgoing: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n alignItems: 'flex-end',\n },\n timeIncoming: {\n marginLeft: 4,\n },\n timeOutgoing: {\n marginRight: 4,\n },\n chatGroup: {\n marginBottom: 2,\n },\n chatNonGroup: {\n marginBottom: 16,\n },\n chatLastMessage: {\n marginBottom: 16,\n },\n msgContainer: {\n maxWidth: 240,\n },\n bubbleContainer: {\n flexShrink: 1,\n },\n bubbleWrapper: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n },\n outgoingContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default React.memo(MessageRenderer);\n"],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Platform, TouchableOpacity, View } from 'react-native';
|
|
3
|
-
import { Icon, TextInput, createStyleSheet, useBottomSheet, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
3
|
+
import { Icon, TextInput, createStyleSheet, useAlert, useBottomSheet, useToast, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
4
|
import { conditionChaining } from '@sendbird/uikit-utils';
|
|
5
5
|
import { useLocalization, usePlatformService } from '../../../../hooks/useContext';
|
|
6
|
+
import SBUError from '../../../../libs/SBUError';
|
|
7
|
+
import SBUUtils from '../../../../libs/SBUUtils';
|
|
6
8
|
|
|
7
9
|
const SendInput = _ref => {
|
|
8
10
|
let {
|
|
@@ -15,15 +17,18 @@ const SendInput = _ref => {
|
|
|
15
17
|
const {
|
|
16
18
|
STRINGS
|
|
17
19
|
} = useLocalization();
|
|
18
|
-
const {
|
|
19
|
-
openSheet
|
|
20
|
-
} = useBottomSheet();
|
|
21
20
|
const {
|
|
22
21
|
fileService
|
|
23
22
|
} = usePlatformService();
|
|
24
23
|
const {
|
|
25
24
|
colors
|
|
26
25
|
} = useUIKitTheme();
|
|
26
|
+
const {
|
|
27
|
+
openSheet
|
|
28
|
+
} = useBottomSheet();
|
|
29
|
+
const {
|
|
30
|
+
alert
|
|
31
|
+
} = useAlert();
|
|
27
32
|
const toast = useToast();
|
|
28
33
|
|
|
29
34
|
const onPressSend = () => {
|
|
@@ -39,7 +44,20 @@ const SendInput = _ref => {
|
|
|
39
44
|
onPress: async () => {
|
|
40
45
|
const photo = await fileService.openCamera({
|
|
41
46
|
mediaType: 'all',
|
|
42
|
-
|
|
47
|
+
onOpenFailure: error => {
|
|
48
|
+
if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
|
|
49
|
+
alert({
|
|
50
|
+
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
51
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),
|
|
52
|
+
buttons: [{
|
|
53
|
+
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
54
|
+
onPress: () => SBUUtils.openSettings()
|
|
55
|
+
}]
|
|
56
|
+
});
|
|
57
|
+
} else {
|
|
58
|
+
toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
43
61
|
});
|
|
44
62
|
|
|
45
63
|
if (photo) {
|
|
@@ -53,7 +71,20 @@ const SendInput = _ref => {
|
|
|
53
71
|
const photo = await fileService.openMediaLibrary({
|
|
54
72
|
selectionLimit: 1,
|
|
55
73
|
mediaType: 'all',
|
|
56
|
-
|
|
74
|
+
onOpenFailure: error => {
|
|
75
|
+
if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
|
|
76
|
+
alert({
|
|
77
|
+
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
78
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),
|
|
79
|
+
buttons: [{
|
|
80
|
+
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
81
|
+
onPress: () => SBUUtils.openSettings()
|
|
82
|
+
}]
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
57
88
|
});
|
|
58
89
|
|
|
59
90
|
if (photo && photo[0]) {
|
|
@@ -65,7 +96,7 @@ const SendInput = _ref => {
|
|
|
65
96
|
icon: 'document',
|
|
66
97
|
onPress: async () => {
|
|
67
98
|
const file = await fileService.openDocument({
|
|
68
|
-
|
|
99
|
+
onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error')
|
|
69
100
|
});
|
|
70
101
|
|
|
71
102
|
if (file) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","TouchableOpacity","View","Icon","TextInput","createStyleSheet","useBottomSheet","useToast","useUIKitTheme","conditionChaining","useLocalization","usePlatformService","SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","openSheet","fileService","colors","toast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailureWithToastMessage","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} 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.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","Platform","TouchableOpacity","View","Icon","TextInput","createStyleSheet","useAlert","useBottomSheet","useToast","useUIKitTheme","conditionChaining","useLocalization","usePlatformService","SBUError","SBUUtils","SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","fileService","colors","openSheet","alert","toast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailure","error","code","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","ALERT_PERMISSIONS_OK","openSettings","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport SBUError from '../../../../libs/SBUError';\nimport SBUUtils from '../../../../libs/SBUUtils';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} 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.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ const GroupChannelSettingsInfo = _ => {
|
|
|
18
18
|
} = useLocalization();
|
|
19
19
|
|
|
20
20
|
if (!currentUser) {
|
|
21
|
-
Logger.warn('Cannot render GroupChannelSettingsInfo,
|
|
21
|
+
Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');
|
|
22
22
|
return null;
|
|
23
23
|
}
|
|
24
24
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","View","Divider","Text","createStyleSheet","Logger","getGroupChannelTitle","ChannelCover","useLocalization","useSendbirdChat","GroupChannelSettingsContexts","GroupChannelSettingsInfo","_","channel","Fragment","currentUser","STRINGS","warn","styles","userInfoContainer","avatarContainer","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo,
|
|
1
|
+
{"version":3,"names":["React","useContext","View","Divider","Text","createStyleSheet","Logger","getGroupChannelTitle","ChannelCover","useLocalization","useSendbirdChat","GroupChannelSettingsContexts","GroupChannelSettingsInfo","_","channel","Fragment","currentUser","STRINGS","warn","styles","userInfoContainer","avatarContainer","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');\n return null;\n }\n\n return (\n <View>\n <View style={styles.userInfoContainer}>\n <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />\n <Text h1 numberOfLines={1}>\n {getGroupChannelTitle(\n currentUser.userId,\n channel,\n STRINGS.LABELS.USER_NO_NAME,\n STRINGS.LABELS.CHANNEL_NO_MEMBERS,\n )}\n </Text>\n </View>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: { flex: 1 },\n userInfoContainer: { paddingVertical: 24, alignItems: 'center' },\n avatarContainer: { marginBottom: 12 },\n userIdContainer: { paddingVertical: 16 },\n userIdLabel: { marginBottom: 4 },\n});\nexport default GroupChannelSettingsInfo;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AACA,SAASC,IAAT,QAAqB,cAArB;AAEA,SAASC,OAAT,EAAkBC,IAAlB,EAAwBC,gBAAxB,QAAgD,yCAAhD;AACA,SAASC,MAAT,EAAiBC,oBAAjB,QAA6C,uBAA7C;AAEA,OAAOC,YAAP,MAAyB,kCAAzB;AACA,SAASC,eAAT,EAA0BC,eAA1B,QAAiD,2BAAjD;AACA,SAASC,4BAAT,QAA6C,yBAA7C;;AAGA,MAAMC,wBAAwB,GAAIC,CAAD,IAA0C;EACzE,MAAM;IAAEC;EAAF,IAAcb,UAAU,CAACU,4BAA4B,CAACI,QAA9B,CAA9B;EACA,MAAM;IAAEC;EAAF,IAAkBN,eAAe,EAAvC;EACA,MAAM;IAAEO;EAAF,IAAcR,eAAe,EAAnC;;EAEA,IAAI,CAACO,WAAL,EAAkB;IAChBV,MAAM,CAACY,IAAP,CAAY,2FAAZ;IACA,OAAO,IAAP;EACD;;EAED,oBACE,oBAAC,IAAD,qBACE,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,oBAAC,YAAD;IAAc,OAAO,EAAEN,OAAvB;IAAgC,IAAI,EAAE,EAAtC;IAA0C,cAAc,EAAEK,MAAM,CAACE;EAAjE,EADF,eAEE,oBAAC,IAAD;IAAM,EAAE,MAAR;IAAS,aAAa,EAAE;EAAxB,GACGd,oBAAoB,CACnBS,WAAW,CAACM,MADO,EAEnBR,OAFmB,EAGnBG,OAAO,CAACM,MAAR,CAAeC,YAHI,EAInBP,OAAO,CAACM,MAAR,CAAeE,kBAJI,CADvB,CAFF,CADF,eAYE,oBAAC,OAAD,OAZF,CADF;AAgBD,CA1BD;;AA4BA,MAAMN,MAAM,GAAGd,gBAAgB,CAAC;EAC9BqB,SAAS,EAAE;IAAEC,IAAI,EAAE;EAAR,CADmB;EAE9BP,iBAAiB,EAAE;IAAEQ,eAAe,EAAE,EAAnB;IAAuBC,UAAU,EAAE;EAAnC,CAFW;EAG9BR,eAAe,EAAE;IAAES,YAAY,EAAE;EAAhB,CAHa;EAI9BC,eAAe,EAAE;IAAEH,eAAe,EAAE;EAAnB,CAJa;EAK9BI,WAAW,EAAE;IAAEF,YAAY,EAAE;EAAhB;AALiB,CAAD,CAA/B;AAOA,eAAelB,wBAAf"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React, { createContext, useCallback } from 'react';
|
|
2
2
|
import { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';
|
|
3
|
-
import { useActionMenu, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';
|
|
3
|
+
import { useActionMenu, useAlert, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';
|
|
4
4
|
import { NOOP, isDifferentChannel, useForceUpdate, useUniqId } from '@sendbird/uikit-utils';
|
|
5
5
|
import ProviderLayout from '../../../components/ProviderLayout';
|
|
6
6
|
import { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';
|
|
7
|
+
import SBUError from '../../../libs/SBUError';
|
|
8
|
+
import SBUUtils from '../../../libs/SBUUtils';
|
|
7
9
|
export const GroupChannelSettingsContexts = {
|
|
8
10
|
Fragment: /*#__PURE__*/createContext({
|
|
9
11
|
channel: {},
|
|
@@ -29,6 +31,9 @@ export const GroupChannelSettingsContextsProvider = _ref => {
|
|
|
29
31
|
const {
|
|
30
32
|
fileService
|
|
31
33
|
} = usePlatformService();
|
|
34
|
+
const {
|
|
35
|
+
alert
|
|
36
|
+
} = useAlert();
|
|
32
37
|
const {
|
|
33
38
|
activeChannel,
|
|
34
39
|
setActiveChannel
|
|
@@ -81,7 +86,20 @@ export const GroupChannelSettingsContextsProvider = _ref => {
|
|
|
81
86
|
onPress: async () => {
|
|
82
87
|
const file = await fileService.openCamera({
|
|
83
88
|
mediaType: 'photo',
|
|
84
|
-
|
|
89
|
+
onOpenFailure: error => {
|
|
90
|
+
if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
|
|
91
|
+
alert({
|
|
92
|
+
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
93
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),
|
|
94
|
+
buttons: [{
|
|
95
|
+
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
96
|
+
onPress: () => SBUUtils.openSettings()
|
|
97
|
+
}]
|
|
98
|
+
});
|
|
99
|
+
} else {
|
|
100
|
+
toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
85
103
|
});
|
|
86
104
|
if (!file) return;
|
|
87
105
|
const params = new sdk.GroupChannelParams();
|
|
@@ -94,7 +112,20 @@ export const GroupChannelSettingsContextsProvider = _ref => {
|
|
|
94
112
|
const files = await fileService.openMediaLibrary({
|
|
95
113
|
selectionLimit: 1,
|
|
96
114
|
mediaType: 'photo',
|
|
97
|
-
|
|
115
|
+
onOpenFailure: error => {
|
|
116
|
+
if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {
|
|
117
|
+
alert({
|
|
118
|
+
title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
|
|
119
|
+
message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),
|
|
120
|
+
buttons: [{
|
|
121
|
+
text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
|
|
122
|
+
onPress: () => SBUUtils.openSettings()
|
|
123
|
+
}]
|
|
124
|
+
});
|
|
125
|
+
} else {
|
|
126
|
+
toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
98
129
|
});
|
|
99
130
|
if (!files || !files[0]) return;
|
|
100
131
|
const params = new sdk.GroupChannelParams();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createContext","useCallback","useActiveGroupChannel","useChannelHandler","useActionMenu","useBottomSheet","usePrompt","useToast","NOOP","isDifferentChannel","useForceUpdate","useUniqId","ProviderLayout","useLocalization","usePlatformService","useSendbirdChat","GroupChannelSettingsContexts","Fragment","channel","headerTitle","headerRight","onPressHeaderRight","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","forceUpdate","STRINGS","sdk","fileService","activeChannel","setActiveChannel","onChannelChanged","isGroupChannel","onChannelFrozen","onChannelUnfrozen","toast","openSheet","openPrompt","openMenu","updateChannel","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailureWithToastMessage","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","createContext","useCallback","useActiveGroupChannel","useChannelHandler","useActionMenu","useAlert","useBottomSheet","usePrompt","useToast","NOOP","isDifferentChannel","useForceUpdate","useUniqId","ProviderLayout","useLocalization","usePlatformService","useSendbirdChat","SBUError","SBUUtils","GroupChannelSettingsContexts","Fragment","channel","headerTitle","headerRight","onPressHeaderRight","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","forceUpdate","STRINGS","sdk","fileService","alert","activeChannel","setActiveChannel","onChannelChanged","isGroupChannel","onChannelFrozen","onChannelUnfrozen","toast","openSheet","openPrompt","openMenu","updateChannel","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailure","error","code","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","text","ALERT_PERMISSIONS_OK","openSettings","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useAlert, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n const { alert } = useAlert();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
|
|
@@ -56,7 +56,7 @@ const createGroupChannelListFragment = initModule => {
|
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
if (!currentUser) {
|
|
59
|
-
Logger.warn('Cannot render GroupChannelListFragment,
|
|
59
|
+
Logger.warn('Cannot render GroupChannelListFragment, please connect using `useConnection()` hook first');
|
|
60
60
|
return null;
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","AppState","useGroupChannelList","Logger","PASS","useFreshCallback","StatusComposition","GroupChannelPreviewContainer","createGroupChannelListModule","useSendbirdChat","createGroupChannelListFragment","initModule","GroupChannelListModule","TypeSelectorHeader","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","flatListProps","menuItemCreator","sdk","currentUser","features","markAsDeliveredWithChannel","groupChannels","next","loading","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","listener","addEventListener","status","forEach","remove","_renderGroupChannelPreview","channel","onLongPressChannel","warn","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from 'react-native';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { Logger, PASS, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n TypeSelectorHeader,\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n // skipTypeSelection = true,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useEffect(() => {\n const listener = AppState.addEventListener('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n return () => listener.remove();\n }, []);\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelListFragment,
|
|
1
|
+
{"version":3,"names":["React","useEffect","AppState","useGroupChannelList","Logger","PASS","useFreshCallback","StatusComposition","GroupChannelPreviewContainer","createGroupChannelListModule","useSendbirdChat","createGroupChannelListFragment","initModule","GroupChannelListModule","TypeSelectorHeader","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","flatListProps","menuItemCreator","sdk","currentUser","features","markAsDeliveredWithChannel","groupChannels","next","loading","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","listener","addEventListener","status","forEach","remove","_renderGroupChannelPreview","channel","onLongPressChannel","warn","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from 'react-native';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { Logger, PASS, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n TypeSelectorHeader,\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n // skipTypeSelection = true,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useEffect(() => {\n const listener = AppState.addEventListener('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n return () => listener.remove();\n }, []);\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelListFragment, please connect using `useConnection()` hook first');\n return null;\n }\n\n return (\n <GroupChannelListModule.Provider>\n <GroupChannelListModule.Header />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelListModule.StatusLoading />}>\n <GroupChannelListModule.List\n menuItemCreator={menuItemCreator}\n renderGroupChannelPreview={_renderGroupChannelPreview}\n groupChannels={groupChannels}\n onLoadNext={next}\n flatListProps={{\n ListEmptyComponent: <GroupChannelListModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }}\n />\n </StatusComposition>\n <GroupChannelListModule.TypeSelector\n // NOTE: not included in first iteration\n skipTypeSelection\n Header={TypeSelectorHeader}\n onSelectType={onPressCreateChannel}\n />\n </GroupChannelListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelListFragment;\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,SAASC,mBAAT,QAAoC,4BAApC;AACA,SAASC,MAAT,EAAiBC,IAAjB,EAAuBC,gBAAvB,QAA+C,uBAA/C;AAEA,OAAOC,iBAAP,MAA8B,iCAA9B;AACA,OAAOC,4BAAP,MAAyC,4CAAzC;AACA,OAAOC,4BAAP,MAAyC,gEAAzC;AAMA,SAASC,eAAT,QAAgC,qBAAhC;;AAEA,MAAMC,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAGJ,4BAA4B,CAACG,UAAD,CAA3D;EACA,OAAO,QAUD;IAAA,IAVE;MACNE,kBADM;MAENC,cAFM;MAGNC,oBAHM;MAINC,YAJM;MAKNC,iBALM;MAMNC,yBANM;MAON;MACAC,aAAa,GAAG,EARV;MASNC,eAAe,GAAGhB;IATZ,CAUF;IACJ,MAAM;MAAEiB,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6Df,eAAe,EAAlF;IACA,MAAM;MAAEgB,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmCzB,mBAAmB,CAACmB,GAAD,EAAMC,WAAN,aAAMA,WAAN,uBAAMA,WAAW,CAAEM,MAAnB,EAA2B;MACrFZ,YADqF;MAErFC,iBAFqF;MAGrFY,iCAAiC,EAAE,CAACb;IAHiD,CAA3B,CAA5D;;IAMA,IAAIO,QAAQ,CAACO,sBAAb,EAAqC;MACnC9B,SAAS,CAAC,MAAM;QACd,MAAM+B,QAAQ,GAAG9B,QAAQ,CAAC+B,gBAAT,CAA0B,QAA1B,EAAqCC,MAAD,IAAY;UAC/D,IAAIA,MAAM,KAAK,QAAf,EAAyBR,aAAa,CAACS,OAAd,CAAsBV,0BAAtB;QAC1B,CAFgB,CAAjB;QAGA,OAAO,MAAMO,QAAQ,CAACI,MAAT,EAAb;MACD,CALQ,EAKN,EALM,CAAT;IAMD;;IAED,MAAMC,0BAAsF,GAAG/B,gBAAgB,CAC7G,CAACgC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAIpB,yBAAJ,EAA+B,OAAOA,yBAAyB,CAACmB,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,oBAAC,4BAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAMvB,cAAc,CAACuB,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4G,CAA/G;;IAaA,IAAI,CAAChB,WAAL,EAAkB;MAChBnB,MAAM,CAACoC,IAAP,CAAY,2FAAZ;MACA,OAAO,IAAP;IACD;;IAED,oBACE,oBAAC,sBAAD,CAAwB,QAAxB,qBACE,oBAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,oBAAC,iBAAD;MAAmB,OAAO,EAAEZ,OAA5B;MAAqC,gBAAgB,eAAE,oBAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,oBAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAEP,eADnB;MAEE,yBAAyB,EAAEgB,0BAF7B;MAGE,aAAa,EAAEX,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACbc,kBAAkB,eAAE,oBAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAGvB;MAHU;IALjB,EADF,CAFF,eAeE,oBAAC,sBAAD,CAAwB,YAAxB;MACE;MACA,iBAAiB,MAFnB;MAGE,MAAM,EAAEN,kBAHV;MAIE,YAAY,EAAEE;IAJhB,EAfF,CADF;EAwBD,CArED;AAsED,CAxED;;AA0EA,eAAeL,8BAAf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
|
|
3
|
+
var SBUErrorCode;
|
|
4
|
+
|
|
5
|
+
(function (SBUErrorCode) {
|
|
6
|
+
SBUErrorCode[SBUErrorCode["ERR_UNKNOWN"] = 90000000] = "ERR_UNKNOWN";
|
|
7
|
+
SBUErrorCode[SBUErrorCode["ERR_PERMISSIONS_DENIED"] = 91001000] = "ERR_PERMISSIONS_DENIED";
|
|
8
|
+
SBUErrorCode[SBUErrorCode["ERR_DEVICE_UNAVAILABLE"] = 91001001] = "ERR_DEVICE_UNAVAILABLE";
|
|
9
|
+
})(SBUErrorCode || (SBUErrorCode = {}));
|
|
10
|
+
|
|
11
|
+
export default class SBUError extends Error {
|
|
12
|
+
static get UNKNOWN() {
|
|
13
|
+
return new SBUError(SBUErrorCode.ERR_UNKNOWN);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
static get PERMISSIONS_DENIED() {
|
|
17
|
+
return new SBUError(SBUErrorCode.ERR_PERMISSIONS_DENIED);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static get DEVICE_UNAVAILABLE() {
|
|
21
|
+
return new SBUError(SBUErrorCode.ERR_DEVICE_UNAVAILABLE);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
constructor(code, message) {
|
|
25
|
+
super(message);
|
|
26
|
+
this.code = code;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
_defineProperty(SBUError, "CODE", SBUErrorCode);
|
|
32
|
+
//# sourceMappingURL=SBUError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SBUErrorCode","SBUError","Error","UNKNOWN","ERR_UNKNOWN","PERMISSIONS_DENIED","ERR_PERMISSIONS_DENIED","DEVICE_UNAVAILABLE","ERR_DEVICE_UNAVAILABLE","constructor","code","message"],"sources":["SBUError.ts"],"sourcesContent":["enum SBUErrorCode {\n ERR_UNKNOWN = 90000000,\n\n // Platform service - 91001000 ~\n ERR_PERMISSIONS_DENIED = 91001000,\n ERR_DEVICE_UNAVAILABLE,\n}\n\nexport default class SBUError extends Error {\n static CODE = SBUErrorCode;\n\n static get UNKNOWN() {\n return new SBUError(SBUErrorCode.ERR_UNKNOWN);\n }\n\n static get PERMISSIONS_DENIED() {\n return new SBUError(SBUErrorCode.ERR_PERMISSIONS_DENIED);\n }\n static get DEVICE_UNAVAILABLE() {\n return new SBUError(SBUErrorCode.ERR_DEVICE_UNAVAILABLE);\n }\n\n constructor(public code: SBUErrorCode, message?: string) {\n super(message);\n }\n}\n"],"mappings":";;IAAKA,Y;;WAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;GAAAA,Y,KAAAA,Y;;AAQL,eAAe,MAAMC,QAAN,SAAuBC,KAAvB,CAA6B;EAGxB,WAAPC,OAAO,GAAG;IACnB,OAAO,IAAIF,QAAJ,CAAaD,YAAY,CAACI,WAA1B,CAAP;EACD;;EAE4B,WAAlBC,kBAAkB,GAAG;IAC9B,OAAO,IAAIJ,QAAJ,CAAaD,YAAY,CAACM,sBAA1B,CAAP;EACD;;EAC4B,WAAlBC,kBAAkB,GAAG;IAC9B,OAAO,IAAIN,QAAJ,CAAaD,YAAY,CAACQ,sBAA1B,CAAP;EACD;;EAEDC,WAAW,CAAQC,IAAR,EAA4BC,OAA5B,EAA8C;IACvD,MAAMA,OAAN;IADuD,KAAtCD,IAAsC,GAAtCA,IAAsC;EAExD;;AAhByC;;gBAAvBT,Q,UACLD,Y"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Linking, Platform } from 'react-native';
|
|
2
|
+
export default class SBUUtils {
|
|
3
|
+
static openSettings() {
|
|
4
|
+
Linking.openSettings().catch(() => {
|
|
5
|
+
if (Platform.OS === 'ios') Linking.openURL('App-Prefs:root');
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=SBUUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Linking","Platform","SBUUtils","openSettings","catch","OS","openURL"],"sources":["SBUUtils.ts"],"sourcesContent":["import { Linking, Platform } from 'react-native';\n\nexport default class SBUUtils {\n static openSettings() {\n Linking.openSettings().catch(() => {\n if (Platform.OS === 'ios') Linking.openURL('App-Prefs:root');\n });\n }\n}\n"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,QAAlB,QAAkC,cAAlC;AAEA,eAAe,MAAMC,QAAN,CAAe;EACT,OAAZC,YAAY,GAAG;IACpBH,OAAO,CAACG,YAAR,GAAuBC,KAAvB,CAA6B,MAAM;MACjC,IAAIH,QAAQ,CAACI,EAAT,KAAgB,KAApB,EAA2BL,OAAO,CAACM,OAAR,CAAgB,gBAAhB;IAC5B,CAFD;EAGD;;AAL2B"}
|
|
@@ -154,6 +154,12 @@ export const createBaseStringSet = _ref => {
|
|
|
154
154
|
},
|
|
155
155
|
DIALOG: {
|
|
156
156
|
ALERT_DEFAULT_OK: 'OK',
|
|
157
|
+
ALERT_PERMISSIONS_TITLE: 'Allow permission',
|
|
158
|
+
ALERT_PERMISSIONS_MESSAGE: function (permission) {
|
|
159
|
+
let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Application';
|
|
160
|
+
return `${appName} need permission to access your ${permission}. Go to Settings to allow access`;
|
|
161
|
+
},
|
|
162
|
+
ALERT_PERMISSIONS_OK: 'SETTINGS',
|
|
157
163
|
PROMPT_DEFAULT_OK: 'Submit',
|
|
158
164
|
PROMPT_DEFAULT_CANCEL: 'Cancel',
|
|
159
165
|
PROMPT_DEFAULT_PLACEHOLDER: 'Enter',
|