@sendbird/uikit-react-native 2.0.2 → 2.0.3
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/README.md +2 -2
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js +2 -9
- package/lib/commonjs/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
- package/lib/commonjs/components/UserActionBar.js +4 -7
- package/lib/commonjs/components/UserActionBar.js.map +1 -1
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js +4 -23
- package/lib/commonjs/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/commonjs/containers/SendbirdUIKitContainer.js +7 -13
- package/lib/commonjs/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/contexts/{LocalizationCtx.js → Localization.js} +1 -1
- package/lib/commonjs/contexts/Localization.js.map +1 -0
- package/lib/commonjs/contexts/{PlatformServiceCtx.js → PlatformService.js} +1 -1
- package/lib/commonjs/contexts/PlatformService.js.map +1 -0
- package/lib/commonjs/contexts/{SendbirdChatCtx.js → SendbirdChat.js} +1 -1
- package/lib/commonjs/contexts/SendbirdChat.js.map +1 -0
- package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +1 -9
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +3 -2
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +11 -11
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js +7 -17
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/index.js +9 -32
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js +0 -6
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js +3 -9
- package/lib/module/components/MessageRenderer/MessageIncomingAvatar.js.map +1 -1
- package/lib/module/components/UserActionBar.js +5 -8
- package/lib/module/components/UserActionBar.js.map +1 -1
- package/lib/module/containers/GroupChannelPreviewContainer.js +4 -23
- package/lib/module/containers/GroupChannelPreviewContainer.js.map +1 -1
- package/lib/module/containers/SendbirdUIKitContainer.js +4 -9
- package/lib/module/containers/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/contexts/{LocalizationCtx.js → Localization.js} +1 -1
- package/lib/module/contexts/Localization.js.map +1 -0
- package/lib/module/contexts/{PlatformServiceCtx.js → PlatformService.js} +1 -1
- package/lib/module/contexts/PlatformService.js.map +1 -0
- package/lib/module/contexts/{SendbirdChatCtx.js → SendbirdChat.js} +1 -1
- package/lib/module/contexts/SendbirdChat.js.map +1 -0
- package/lib/module/domain/groupChannelList/types.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +1 -9
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +3 -2
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js +9 -13
- package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/module/hooks/useContext.js +3 -9
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/index.js +4 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/localization/StringSet.type.js +0 -6
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/src/components/UserActionBar.d.ts +2 -4
- package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +3 -7
- package/lib/typescript/src/contexts/{LocalizationCtx.d.ts → Localization.d.ts} +0 -0
- package/lib/typescript/src/contexts/{PlatformServiceCtx.d.ts → PlatformService.d.ts} +0 -0
- package/lib/typescript/src/contexts/{SendbirdChatCtx.d.ts → SendbirdChat.d.ts} +0 -0
- package/lib/typescript/src/domain/groupChannelList/types.d.ts +0 -2
- package/lib/typescript/src/hooks/useContext.d.ts +1 -2
- package/lib/typescript/src/index.d.ts +4 -5
- package/lib/typescript/src/localization/StringSet.type.d.ts +1 -6
- package/lib/typescript/src/platform/createFileService.native.d.ts +1 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +9 -9
- package/src/components/MessageRenderer/MessageIncomingAvatar.tsx +2 -9
- package/src/components/UserActionBar.tsx +4 -10
- package/src/containers/GroupChannelPreviewContainer.tsx +1 -20
- package/src/containers/SendbirdUIKitContainer.tsx +6 -26
- package/src/contexts/{LocalizationCtx.tsx → Localization.tsx} +0 -0
- package/src/contexts/{PlatformServiceCtx.tsx → PlatformService.tsx} +0 -0
- package/src/contexts/{SendbirdChatCtx.tsx → SendbirdChat.tsx} +0 -0
- package/src/domain/groupChannelList/types.ts +2 -2
- package/src/fragments/createGroupChannelFragment.tsx +8 -18
- package/src/fragments/createGroupChannelListFragment.tsx +3 -2
- package/src/fragments/createGroupChannelMembersFragment.tsx +25 -25
- package/src/hooks/useContext.ts +3 -10
- package/src/index.ts +4 -5
- package/src/localization/StringSet.type.ts +0 -12
- package/src/platform/createFileService.native.ts +1 -1
- package/src/version.ts +1 -1
- package/lib/commonjs/contexts/LocalizationCtx.js.map +0 -1
- package/lib/commonjs/contexts/PlatformServiceCtx.js.map +0 -1
- package/lib/commonjs/contexts/ProfileCardCtx.js +0 -119
- package/lib/commonjs/contexts/ProfileCardCtx.js.map +0 -1
- package/lib/commonjs/contexts/SendbirdChatCtx.js.map +0 -1
- package/lib/module/contexts/LocalizationCtx.js.map +0 -1
- package/lib/module/contexts/PlatformServiceCtx.js.map +0 -1
- package/lib/module/contexts/ProfileCardCtx.js +0 -97
- package/lib/module/contexts/ProfileCardCtx.js.map +0 -1
- package/lib/module/contexts/SendbirdChatCtx.js.map +0 -1
- package/lib/typescript/src/contexts/ProfileCardCtx.d.ts +0 -15
- package/src/contexts/ProfileCardCtx.tsx +0 -125
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { TouchableOpacity, View } from 'react-native';
|
|
3
3
|
import { Avatar, Icon, Text, createStyleSheet, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
|
|
4
4
|
import { conditionChaining } from '@sendbird/uikit-utils';
|
|
5
5
|
|
|
@@ -9,9 +9,8 @@ const UserActionBar = _ref => {
|
|
|
9
9
|
uri,
|
|
10
10
|
name,
|
|
11
11
|
disabled,
|
|
12
|
-
label,
|
|
13
12
|
onPressActionMenu,
|
|
14
|
-
|
|
13
|
+
label
|
|
15
14
|
} = _ref;
|
|
16
15
|
const {
|
|
17
16
|
colors
|
|
@@ -19,14 +18,12 @@ const UserActionBar = _ref => {
|
|
|
19
18
|
const iconColor = conditionChaining([disabled], [colors.onBackground04, colors.onBackground01]);
|
|
20
19
|
return /*#__PURE__*/React.createElement(View, {
|
|
21
20
|
style: styles.container
|
|
22
|
-
}, /*#__PURE__*/React.createElement(Pressable, {
|
|
23
|
-
onPress: onPressAvatar,
|
|
24
|
-
style: styles.avatar
|
|
25
21
|
}, /*#__PURE__*/React.createElement(Avatar, {
|
|
26
22
|
muted: muted,
|
|
27
23
|
size: 36,
|
|
28
|
-
uri: uri
|
|
29
|
-
|
|
24
|
+
uri: uri,
|
|
25
|
+
containerStyle: styles.avatar
|
|
26
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
30
27
|
style: [styles.infoContainer, {
|
|
31
28
|
borderBottomColor: colors.onBackground04
|
|
32
29
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","TouchableOpacity","View","Avatar","Icon","Text","createStyleSheet","useUIKitTheme","conditionChaining","UserActionBar","muted","uri","name","disabled","onPressActionMenu","label","colors","iconColor","onBackground04","onBackground01","styles","container","avatar","infoContainer","borderBottomColor","Boolean","onBackground02","iconContainer","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,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,gBAAT,EAA2BC,IAA3B,QAAuC,cAAvC;AAEA,SAASC,MAAT,EAAiBC,IAAjB,EAAuBC,IAAvB,EAA6BC,gBAA7B,EAA+CC,aAA/C,QAAoE,yCAApE;AACA,SAASC,iBAAT,QAAkC,uBAAlC;;AAUA,MAAMC,aAAa,GAAG,QAAqE;EAAA,IAApE;IAAEC,KAAF;IAASC,GAAT;IAAcC,IAAd;IAAoBC,QAApB;IAA8BC,iBAA9B;IAAiDC;EAAjD,CAAoE;EACzF,MAAM;IAAEC;EAAF,IAAaT,aAAa,EAAhC;EAEA,MAAMU,SAAS,GAAGT,iBAAiB,CAAC,CAACK,QAAD,CAAD,EAAa,CAACG,MAAM,CAACE,cAAR,EAAwBF,MAAM,CAACG,cAA/B,CAAb,CAAnC;EAEA,oBACE,oBAAC,IAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,oBAAC,MAAD;IAAQ,KAAK,EAAEX,KAAf;IAAsB,IAAI,EAAE,EAA5B;IAAgC,GAAG,EAAEC,GAArC;IAA0C,cAAc,EAAES,MAAM,CAACE;EAAjE,EADF,eAEE,oBAAC,IAAD;IAAM,KAAK,EAAE,CAACF,MAAM,CAACG,aAAR,EAAuB;MAAEC,iBAAiB,EAAER,MAAM,CAACE;IAA5B,CAAvB;EAAb,gBACE,oBAAC,IAAD;IAAM,SAAS,MAAf;IAAgB,aAAa,EAAE,CAA/B;IAAkC,KAAK,EAAEE,MAAM,CAACR,IAAhD;IAAsD,KAAK,EAAEI,MAAM,CAACG;EAApE,GACGP,IADH,CADF,EAIGa,OAAO,CAACV,KAAD,CAAP,iBACC,oBAAC,IAAD;IAAM,KAAK,MAAX;IAAY,KAAK,EAAEC,MAAM,CAACU,cAA1B;IAA0C,KAAK,EAAEN,MAAM,CAACL;EAAxD,GACGA,KADH,CALJ,EASGU,OAAO,CAACX,iBAAD,CAAP,iBACC,oBAAC,gBAAD;IAAkB,OAAO,EAAEA,iBAA3B;IAA8C,QAAQ,EAAED;EAAxD,gBACE,oBAAC,IAAD;IAAM,KAAK,EAAEI,SAAb;IAAwB,IAAI,EAAE,EAA9B;IAAkC,IAAI,EAAE,MAAxC;IAAgD,cAAc,EAAEG,MAAM,CAACO;EAAvE,EADF,CAVJ,CAFF,CADF;AAoBD,CAzBD;;AA2BA,MAAMP,MAAM,GAAGd,gBAAgB,CAAC;EAC9Be,SAAS,EAAE;IACTO,aAAa,EAAE,KADN;IAETC,UAAU,EAAE,QAFH;IAGTC,KAAK,EAAE,MAHE;IAITC,MAAM,EAAE;EAJC,CADmB;EAO9BT,MAAM,EAAE;IACNU,UAAU,EAAE,EADN;IAENC,WAAW,EAAE;EAFP,CAPsB;EAW9BlB,KAAK,EAAE;IACLkB,WAAW,EAAE;EADR,CAXuB;EAc9BV,aAAa,EAAE;IACbQ,MAAM,EAAE,MADK;IAEbG,IAAI,EAAE,CAFO;IAGbL,UAAU,EAAE,QAHC;IAIbD,aAAa,EAAE,KAJF;IAKbO,YAAY,EAAE,EALD;IAMbC,iBAAiB,EAAE;EANN,CAde;EAsB9BT,aAAa,EAAE;IACbU,OAAO,EAAE;EADI,CAtBe;EAyB9BzB,IAAI,EAAE;IACJsB,IAAI,EAAE,CADF;IAEJD,WAAW,EAAE;EAFT;AAzBwB,CAAD,CAA/B;AA+BA,eAAexB,aAAf"}
|
|
@@ -104,29 +104,15 @@ const GroupChannelPreviewContainer = _ref => {
|
|
|
104
104
|
|
|
105
105
|
return undefined;
|
|
106
106
|
});
|
|
107
|
-
const customCover = useIIFE(() => {
|
|
108
|
-
if (channel.isBroadcast) {
|
|
109
|
-
return /*#__PURE__*/React.createElement(Icon, {
|
|
110
|
-
icon: 'broadcast',
|
|
111
|
-
size: 32,
|
|
112
|
-
color: colors.onBackgroundReverse01,
|
|
113
|
-
containerStyle: [styles.broadcastCover, {
|
|
114
|
-
backgroundColor: colors.secondary
|
|
115
|
-
}]
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
return /*#__PURE__*/React.createElement(ChannelCover, {
|
|
120
|
-
channel: channel,
|
|
121
|
-
size: 56
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
107
|
return /*#__PURE__*/React.createElement(Pressable, {
|
|
125
108
|
delayLongPress: DEFAULT_LONG_PRESS_DELAY,
|
|
126
109
|
onPress: onPress,
|
|
127
110
|
onLongPress: onLongPress
|
|
128
111
|
}, /*#__PURE__*/React.createElement(GroupChannelPreview, {
|
|
129
|
-
customCover:
|
|
112
|
+
customCover: /*#__PURE__*/React.createElement(ChannelCover, {
|
|
113
|
+
channel: channel,
|
|
114
|
+
size: 56
|
|
115
|
+
}),
|
|
130
116
|
coverUrl: channel.coverUrl,
|
|
131
117
|
title: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '', channel),
|
|
132
118
|
titleCaptionLeft: titleCaptionIcon,
|
|
@@ -136,7 +122,6 @@ const GroupChannelPreviewContainer = _ref => {
|
|
|
136
122
|
badgeCount: channel.unreadMessageCount,
|
|
137
123
|
memberCount: channel.memberCount > 2 ? channel.memberCount : undefined,
|
|
138
124
|
frozen: channel.isFrozen,
|
|
139
|
-
broadcast: channel.isBroadcast,
|
|
140
125
|
notificationOff: channel.myPushTriggerOption === 'off'
|
|
141
126
|
}));
|
|
142
127
|
};
|
|
@@ -144,10 +129,6 @@ const GroupChannelPreviewContainer = _ref => {
|
|
|
144
129
|
const styles = createStyleSheet({
|
|
145
130
|
titleCaptionIcon: {
|
|
146
131
|
marginRight: 4
|
|
147
|
-
},
|
|
148
|
-
broadcastCover: {
|
|
149
|
-
padding: 12,
|
|
150
|
-
borderRadius: 28
|
|
151
132
|
}
|
|
152
133
|
});
|
|
153
134
|
export default GroupChannelPreviewContainer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","getFileExtension","getFileType","isDifferentChannel","isMyMessage","useIIFE","useUniqId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","STRINGS","colors","typingUsers","setTypingUsers","channelListTypingIndicatorEnabled","typingId","onTypingStatusUpdated","eventChannel","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","type","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","userId","styles","error","onBackground03","secondary","customCover","isBroadcast","onBackgroundReverse01","broadcastCover","backgroundColor","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","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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"}
|
|
1
|
+
{"version":3,"names":["React","useState","Pressable","useChannelHandler","useMessageOutgoingStatus","GroupChannelPreview","Icon","LoadingSpinner","createStyleSheet","useUIKitTheme","getFileExtension","getFileType","isDifferentChannel","isMyMessage","useIIFE","useUniqId","ChannelCover","DEFAULT_LONG_PRESS_DELAY","useLocalization","useSendbirdChat","iconMapper","audio","image","video","file","GroupChannelPreviewContainer","onPress","onLongPress","channel","currentUser","sdk","features","STRINGS","colors","typingUsers","setTypingUsers","channelListTypingIndicatorEnabled","typingId","onTypingStatusUpdated","eventChannel","getTypingUsers","outgoingStatus","lastMessage","bodyText","length","LABELS","TYPING_INDICATOR_TYPINGS","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_BODY","bodyIcon","isFileMessage","undefined","type","name","titleCaptionIcon","channelListMessageReceiptStatusEnabled","userId","styles","error","onBackground03","secondary","coverUrl","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","unreadMessageCount","memberCount","isFrozen","myPushTriggerOption","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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"}
|
|
@@ -5,10 +5,9 @@ import Sendbird from '@sendbird/chat';
|
|
|
5
5
|
import { GroupChannelModule } from '@sendbird/chat/groupChannel';
|
|
6
6
|
import { OpenChannelModule } from '@sendbird/chat/openChannel';
|
|
7
7
|
import { DialogProvider, Header, HeaderStyleProvider, LightUIKitTheme, ToastProvider, UIKitThemeProvider } from '@sendbird/uikit-react-native-foundation';
|
|
8
|
-
import { LocalizationProvider } from '../contexts/
|
|
9
|
-
import { PlatformServiceProvider } from '../contexts/
|
|
10
|
-
import {
|
|
11
|
-
import { SendbirdChatProvider } from '../contexts/SendbirdChatCtx';
|
|
8
|
+
import { LocalizationProvider } from '../contexts/Localization';
|
|
9
|
+
import { PlatformServiceProvider } from '../contexts/PlatformService';
|
|
10
|
+
import { SendbirdChatProvider } from '../contexts/SendbirdChat';
|
|
12
11
|
import { useLocalization } from '../hooks/useContext';
|
|
13
12
|
import InternalLocalCacheStorage from '../libs/InternalLocalCacheStorage';
|
|
14
13
|
import StringSetEn from '../localization/StringSet.en';
|
|
@@ -30,7 +29,6 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
30
29
|
localization,
|
|
31
30
|
styles,
|
|
32
31
|
toast,
|
|
33
|
-
profileCard,
|
|
34
32
|
errorBoundary
|
|
35
33
|
} = _ref;
|
|
36
34
|
const unsubscribes = useRef([]).current;
|
|
@@ -108,10 +106,7 @@ const SendbirdUIKitContainer = _ref => {
|
|
|
108
106
|
statusBarTranslucent: (styles === null || styles === void 0 ? void 0 : styles.statusBarTranslucent) ?? true
|
|
109
107
|
}, /*#__PURE__*/React.createElement(LocalizedDialogProvider, null, /*#__PURE__*/React.createElement(ToastProvider, {
|
|
110
108
|
dismissTimeout: toast === null || toast === void 0 ? void 0 : toast.dismissTimeout
|
|
111
|
-
}, /*#__PURE__*/React.createElement(
|
|
112
|
-
onCreateChannel: profileCard === null || profileCard === void 0 ? void 0 : profileCard.onCreateChannel,
|
|
113
|
-
onBeforeCreateChannel: profileCard === null || profileCard === void 0 ? void 0 : profileCard.onBeforeCreateChannel
|
|
114
|
-
}, /*#__PURE__*/React.createElement(InternalErrorBoundaryContainer, errorBoundary, children))))))))));
|
|
109
|
+
}, /*#__PURE__*/React.createElement(InternalErrorBoundaryContainer, errorBoundary, children)))))))));
|
|
115
110
|
};
|
|
116
111
|
|
|
117
112
|
const LocalizedDialogProvider = _ref2 => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","useState","Platform","SafeAreaProvider","Sendbird","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","LocalizationProvider","PlatformServiceProvider","ProfileCardProvider","SendbirdChatProvider","useLocalization","InternalLocalCacheStorage","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","profileCard","errorBoundary","unsubscribes","current","getSendbirdSDK","sdk","init","modules","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","file","notification","clipboard","media","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","onCreateChannel","onBeforeCreateChannel","LocalizedDialogProvider","STRINGS","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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"}
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","useState","Platform","SafeAreaProvider","Sendbird","GroupChannelModule","OpenChannelModule","DialogProvider","Header","HeaderStyleProvider","LightUIKitTheme","ToastProvider","UIKitThemeProvider","LocalizationProvider","PlatformServiceProvider","SendbirdChatProvider","useLocalization","InternalLocalCacheStorage","StringSetEn","SBUDynamicModule","VERSION","InternalErrorBoundaryContainer","NetInfo","get","SendbirdUIKit","Object","freeze","PLATFORM","OS","toLowerCase","SendbirdUIKitContainer","children","appId","chatOptions","platformServices","localization","styles","toast","errorBoundary","unsubscribes","current","getSendbirdSDK","sdk","init","modules","localCacheEnabled","Boolean","localCacheStorage","useAsyncStorageStore","undefined","onInitialized","addExtension","addEventListener","listener","callback","callbackType","unsubscribe","state","online","isConnected","isInternetReachable","push","setOnlineListener","onOnline","setOfflineListener","onOffline","sdkInstance","setSdkInstance","forEach","u","enableAutoPushTokenRegistration","enableChannelListTypingIndicator","enableChannelListMessageReceiptStatus","stringSet","file","notification","clipboard","media","theme","HeaderComponent","defaultHeaderTitleAlign","statusBarTranslucent","dismissTimeout","LocalizedDialogProvider","STRINGS","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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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","LocalizationContext","createContext","LocalizationProvider","children","stringSet","STRINGS"],"sources":["Localization.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,OAAOA,KAAP,MAAkB,OAAlB;AAYA,OAAO,MAAMC,mBAAmB,gBAAGD,KAAK,CAACE,aAAN,CAAoD,IAApD,CAA5B;AACP,OAAO,MAAMC,oBAAoB,GAAG,QAAoC;EAAA,IAAnC;IAAEC,QAAF;IAAYC;EAAZ,CAAmC;EACtE,oBAAO,oBAAC,mBAAD,CAAqB,QAArB;IAA8B,KAAK,EAAE;MAAEC,OAAO,EAAED;IAAX;EAArC,GAA8DD,QAA9D,CAAP;AACD,CAFM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","PlatformServiceContext","createContext","PlatformServiceProvider","children","fileService","clipboardService","notificationService","mediaService"],"sources":["PlatformService.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,OAAOA,KAAP,MAAkB,OAAlB;AAgBA,OAAO,MAAMC,sBAAsB,gBAAGD,KAAK,CAACE,aAAN,CAAkC,IAAlC,CAA/B;AACP,OAAO,MAAMC,uBAAuB,GAAG,QAM1B;EAAA,IAN2B;IACtCC,QADsC;IAEtCC,WAFsC;IAGtCC,gBAHsC;IAItCC,mBAJsC;IAKtCC;EALsC,CAM3B;EACX,oBACE,oBAAC,sBAAD,CAAwB,QAAxB;IAAiC,KAAK,EAAE;MAAEH,WAAF;MAAeC,gBAAf;MAAiCC,mBAAjC;MAAsDC;IAAtD;EAAxC,GACGJ,QADH,CADF;AAKD,CAZM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useState","AppState","useAppFeatures","confirmAndMarkAsDelivered","useForceUpdate","SendbirdChatContext","createContext","SendbirdChatProvider","children","sdkInstance","enableAutoPushTokenRegistration","enableChannelListMessageReceiptStatus","enableChannelListTypingIndicator","currentUser","_setCurrentUser","forceUpdate","appFeatures","setCurrentUser","user","updateCurrentUserInfo","nickname","profile","Error","params","profileUrl","profileImage","markAsDeliveredWithChannel","channel","deliveryReceiptEnabled","listener","status","connectionState","setForegroundState","setBackgroundState","subscriber","addEventListener","remove","value","sdk","features","autoPushTokenRegistrationEnabled","channelListTypingIndicatorEnabled","channelListMessageReceiptStatusEnabled"],"sources":["SendbirdChat.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":""}
|
|
@@ -120,7 +120,7 @@ const createGroupChannelFragment = initModule => {
|
|
|
120
120
|
onPressImageMessage: onPressImageMessage,
|
|
121
121
|
onPressMediaMessage: onPressMediaMessage,
|
|
122
122
|
flatListProps: memoizedFlatListProps
|
|
123
|
-
}),
|
|
123
|
+
}), /*#__PURE__*/React.createElement(GroupChannelModule.Input, {
|
|
124
124
|
channel: activeChannel,
|
|
125
125
|
onSendFileMessage: onSendFileMessage,
|
|
126
126
|
onSendUserMessage: onSendUserMessage,
|
|
@@ -130,13 +130,5 @@ const createGroupChannelFragment = initModule => {
|
|
|
130
130
|
};
|
|
131
131
|
};
|
|
132
132
|
|
|
133
|
-
function shouldRenderInput(channel) {
|
|
134
|
-
if (channel.isBroadcast) {
|
|
135
|
-
return channel.myRole === 'operator';
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return true;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
133
|
export default createGroupChannelFragment;
|
|
142
134
|
//# sourceMappingURL=createGroupChannelFragment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","useGroupChannelMessages","NOOP","PASS","messageComparator","useFreshCallback","MessageRenderer","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","useSendbirdChat","createGroupChannelFragment","initModule","GroupChannelModule","renderNewMessagesButton","props","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressImageMessage","onPressMediaMessage","onChannelDeleted","onBeforeSendFileMessage","onBeforeSendUserMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","flatListProps","sdk","currentUser","activeChannel","messages","nextMessages","newMessagesFromMembers","next","prev","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","loading","userId","enableCollectionWithoutLocalCache","_renderMessage","memoizedFlatListProps","ListEmptyComponent","contentContainerStyle","flexGrow","onSendFileMessage","file","processedParams","onSendUserMessage","text","message","onUpdateFileMessage","editedFile","messageId","onUpdateUserMessage","editedText","shouldRenderInput","isBroadcast","myRole"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport { NOOP, PASS, SendbirdGroupChannel, messageComparator, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport MessageRenderer from '../components/MessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type { GroupChannelFragment, GroupChannelModule, GroupChannelProps } from '../domain/groupChannel/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressImageMessage,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendFileMessage = PASS,\n onBeforeSendUserMessage = PASS,\n channel,\n keyboardAvoidOffset,\n queryCreator,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { sdk, currentUser } = useSendbirdChat();\n\n const {\n activeChannel,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n loading,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n collectionCreator,\n queryCreator,\n sortComparator,\n onChannelDeleted,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n const _renderMessage: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <MessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [loading, flatListProps],\n );\n\n const onSendFileMessage: GroupChannelProps['Input']['onSendFileMessage'] = useFreshCallback(async (file) => {\n const processedParams = await onBeforeSendFileMessage({ file });\n await sendFileMessage(processedParams);\n });\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useFreshCallback(async (text) => {\n const processedParams = await onBeforeSendUserMessage({ message: text });\n await sendUserMessage(processedParams);\n });\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useFreshCallback(\n async (editedFile, message) => {\n const processedParams = await onBeforeSendFileMessage({ file: editedFile });\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useFreshCallback(\n async (editedText, message) => {\n const processedParams = await onBeforeSendUserMessage({ message: editedText });\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n\n return (\n <GroupChannelModule.Provider\n channel={activeChannel}\n enableTypingIndicator={enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n >\n <GroupChannelModule.Header onPressHeaderLeft={onPressHeaderLeft} onPressHeaderRight={onPressHeaderRight} />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n channel={activeChannel}\n renderMessage={_renderMessage}\n messages={messages}\n nextMessages={nextMessages}\n newMessagesFromMembers={newMessagesFromMembers}\n onTopReached={prev}\n onBottomReached={next}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressImageMessage={onPressImageMessage}\n onPressMediaMessage={onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n {shouldRenderInput(channel) && (\n <GroupChannelModule.Input\n channel={activeChannel}\n onSendFileMessage={onSendFileMessage}\n onSendUserMessage={onSendUserMessage}\n onUpdateFileMessage={onUpdateFileMessage}\n onUpdateUserMessage={onUpdateUserMessage}\n />\n )}\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nfunction shouldRenderInput(channel: SendbirdGroupChannel) {\n if (channel.isBroadcast) {\n return channel.myRole === 'operator';\n }\n\n return true;\n}\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","useMemo","useGroupChannelMessages","NOOP","PASS","messageComparator","useFreshCallback","MessageRenderer","NewMessagesButton","ScrollToBottomButton","StatusComposition","createGroupChannelModule","useSendbirdChat","createGroupChannelFragment","initModule","GroupChannelModule","renderNewMessagesButton","props","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","onPressHeaderRight","onPressImageMessage","onPressMediaMessage","onChannelDeleted","onBeforeSendFileMessage","onBeforeSendUserMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","flatListProps","sdk","currentUser","activeChannel","messages","nextMessages","newMessagesFromMembers","next","prev","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","loading","userId","enableCollectionWithoutLocalCache","_renderMessage","memoizedFlatListProps","ListEmptyComponent","contentContainerStyle","flexGrow","onSendFileMessage","file","processedParams","onSendUserMessage","text","message","onUpdateFileMessage","editedFile","messageId","onUpdateUserMessage","editedText"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\n\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport { NOOP, PASS, messageComparator, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport MessageRenderer from '../components/MessageRenderer';\nimport NewMessagesButton from '../components/NewMessagesButton';\nimport ScrollToBottomButton from '../components/ScrollToBottomButton';\nimport StatusComposition from '../components/StatusComposition';\nimport createGroupChannelModule from '../domain/groupChannel/module/createGroupChannelModule';\nimport type { GroupChannelFragment, GroupChannelModule, GroupChannelProps } from '../domain/groupChannel/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelFragment = (initModule?: Partial<GroupChannelModule>): GroupChannelFragment => {\n const GroupChannelModule = createGroupChannelModule(initModule);\n\n return ({\n renderNewMessagesButton = (props) => <NewMessagesButton {...props} />,\n renderScrollToBottomButton = (props) => <ScrollToBottomButton {...props} />,\n renderMessage,\n enableMessageGrouping = true,\n enableTypingIndicator = true,\n onPressHeaderLeft = NOOP,\n onPressHeaderRight = NOOP,\n onPressImageMessage,\n onPressMediaMessage = NOOP,\n onChannelDeleted = NOOP,\n onBeforeSendFileMessage = PASS,\n onBeforeSendUserMessage = PASS,\n channel,\n keyboardAvoidOffset,\n queryCreator,\n collectionCreator,\n sortComparator = messageComparator,\n flatListProps,\n }) => {\n const { sdk, currentUser } = useSendbirdChat();\n\n const {\n activeChannel,\n messages,\n nextMessages,\n newMessagesFromMembers,\n next,\n prev,\n sendFileMessage,\n sendUserMessage,\n updateFileMessage,\n updateUserMessage,\n resendMessage,\n deleteMessage,\n loading,\n } = useGroupChannelMessages(sdk, channel, currentUser?.userId, {\n collectionCreator,\n queryCreator,\n sortComparator,\n onChannelDeleted,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n const _renderMessage: GroupChannelProps['MessageList']['renderMessage'] = useFreshCallback((props) => {\n if (renderMessage) return renderMessage(props);\n return <MessageRenderer {...props} />;\n });\n\n const memoizedFlatListProps = useMemo(\n () => ({\n ListEmptyComponent: <GroupChannelModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }),\n [loading, flatListProps],\n );\n\n const onSendFileMessage: GroupChannelProps['Input']['onSendFileMessage'] = useFreshCallback(async (file) => {\n const processedParams = await onBeforeSendFileMessage({ file });\n await sendFileMessage(processedParams);\n });\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useFreshCallback(async (text) => {\n const processedParams = await onBeforeSendUserMessage({ message: text });\n await sendUserMessage(processedParams);\n });\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useFreshCallback(\n async (editedFile, message) => {\n const processedParams = await onBeforeSendFileMessage({ file: editedFile });\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useFreshCallback(\n async (editedText, message) => {\n const processedParams = await onBeforeSendUserMessage({ message: editedText });\n await updateUserMessage(message.messageId, processedParams);\n },\n );\n\n return (\n <GroupChannelModule.Provider\n channel={activeChannel}\n enableTypingIndicator={enableTypingIndicator}\n keyboardAvoidOffset={keyboardAvoidOffset}\n >\n <GroupChannelModule.Header onPressHeaderLeft={onPressHeaderLeft} onPressHeaderRight={onPressHeaderRight} />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelModule.StatusLoading />}>\n <GroupChannelModule.MessageList\n enableMessageGrouping={enableMessageGrouping}\n currentUserId={currentUser?.userId}\n channel={activeChannel}\n renderMessage={_renderMessage}\n messages={messages}\n nextMessages={nextMessages}\n newMessagesFromMembers={newMessagesFromMembers}\n onTopReached={prev}\n onBottomReached={next}\n renderNewMessagesButton={renderNewMessagesButton}\n renderScrollToBottomButton={renderScrollToBottomButton}\n onResendFailedMessage={resendMessage}\n onDeleteMessage={deleteMessage}\n onPressImageMessage={onPressImageMessage}\n onPressMediaMessage={onPressMediaMessage}\n flatListProps={memoizedFlatListProps}\n />\n <GroupChannelModule.Input\n channel={activeChannel}\n onSendFileMessage={onSendFileMessage}\n onSendUserMessage={onSendUserMessage}\n onUpdateFileMessage={onUpdateFileMessage}\n onUpdateUserMessage={onUpdateUserMessage}\n />\n </StatusComposition>\n </GroupChannelModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelFragment;\n"],"mappings":"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"}
|
|
@@ -17,7 +17,7 @@ const createGroupChannelListFragment = initModule => {
|
|
|
17
17
|
queryCreator,
|
|
18
18
|
collectionCreator,
|
|
19
19
|
renderGroupChannelPreview,
|
|
20
|
-
skipTypeSelection =
|
|
20
|
+
// skipTypeSelection = true,
|
|
21
21
|
flatListProps = {},
|
|
22
22
|
menuItemCreator = PASS
|
|
23
23
|
} = _ref;
|
|
@@ -76,7 +76,8 @@ const createGroupChannelListFragment = initModule => {
|
|
|
76
76
|
...flatListProps
|
|
77
77
|
}
|
|
78
78
|
})), /*#__PURE__*/React.createElement(GroupChannelListModule.TypeSelector, {
|
|
79
|
-
|
|
79
|
+
// NOTE: not included in first iteration
|
|
80
|
+
skipTypeSelection: true,
|
|
80
81
|
Header: TypeSelectorHeader,
|
|
81
82
|
onSelectType: onPressCreateChannel
|
|
82
83
|
}));
|
|
@@ -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","
|
|
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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useCallback } from 'react';
|
|
2
2
|
import { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';
|
|
3
3
|
import { Icon } from '@sendbird/uikit-react-native-foundation';
|
|
4
|
-
import { useForceUpdate,
|
|
4
|
+
import { useForceUpdate, useUniqId } from '@sendbird/uikit-utils';
|
|
5
5
|
import UserActionBar from '../components/UserActionBar';
|
|
6
6
|
import createUserListModule from '../domain/userList/module/createUserListModule';
|
|
7
|
-
import { useLocalization,
|
|
7
|
+
import { useLocalization, useSendbirdChat } from '../hooks/useContext';
|
|
8
8
|
|
|
9
9
|
const noop = () => '';
|
|
10
10
|
|
|
@@ -21,19 +21,16 @@ const createGroupChannelMembersFragment = initModule => {
|
|
|
21
21
|
} = _ref;
|
|
22
22
|
const uniqId = useUniqId(name);
|
|
23
23
|
const forceUpdate = useForceUpdate();
|
|
24
|
-
const {
|
|
25
|
-
STRINGS
|
|
26
|
-
} = useLocalization();
|
|
27
24
|
const {
|
|
28
25
|
sdk,
|
|
29
26
|
currentUser
|
|
30
27
|
} = useSendbirdChat();
|
|
31
|
-
const {
|
|
32
|
-
show
|
|
33
|
-
} = useProfileCard();
|
|
34
28
|
const {
|
|
35
29
|
activeChannel
|
|
36
30
|
} = useActiveGroupChannel(sdk, channel);
|
|
31
|
+
const {
|
|
32
|
+
STRINGS
|
|
33
|
+
} = useLocalization();
|
|
37
34
|
useChannelHandler(sdk, `${name}_${uniqId}`, {
|
|
38
35
|
// Note: Removed from v4
|
|
39
36
|
// onUserEntered(channel) {
|
|
@@ -81,7 +78,7 @@ const createGroupChannelMembersFragment = initModule => {
|
|
|
81
78
|
|
|
82
79
|
});
|
|
83
80
|
|
|
84
|
-
const _renderUser =
|
|
81
|
+
const _renderUser = useCallback((user, selectedUsers, setSelectedUsers) => {
|
|
85
82
|
if (renderUser) return renderUser(user, selectedUsers, setSelectedUsers);
|
|
86
83
|
return /*#__PURE__*/React.createElement(UserActionBar, {
|
|
87
84
|
muted: user.isMuted,
|
|
@@ -90,10 +87,9 @@ const createGroupChannelMembersFragment = initModule => {
|
|
|
90
87
|
name: (user.nickname || STRINGS.LABELS.USER_NO_NAME) + (user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ? STRINGS.GROUP_CHANNEL_MEMBERS.USER_BAR_ME_POSTFIX : ''),
|
|
91
88
|
disabled: user.userId === (currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) // TODO: implement ban/mute actions, use channel.members with handlers instead member query
|
|
92
89
|
,
|
|
93
|
-
onPressActionMenu: undefined
|
|
94
|
-
onPressAvatar: () => show(user)
|
|
90
|
+
onPressActionMenu: undefined
|
|
95
91
|
});
|
|
96
|
-
});
|
|
92
|
+
}, [renderUser]);
|
|
97
93
|
|
|
98
94
|
return /*#__PURE__*/React.createElement(UserListModule.Provider, {
|
|
99
95
|
headerRight: noop,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useActiveGroupChannel","useChannelHandler","Icon","useForceUpdate","
|
|
1
|
+
{"version":3,"names":["React","useCallback","useActiveGroupChannel","useChannelHandler","Icon","useForceUpdate","useUniqId","UserActionBar","createUserListModule","useLocalization","useSendbirdChat","noop","name","createGroupChannelMembersFragment","initModule","UserListModule","channel","onPressHeaderLeft","onPressHeaderRight","renderUser","uniqId","forceUpdate","sdk","currentUser","activeChannel","STRINGS","onUserLeft","url","onUserJoined","onUserUnmuted","onUserUnbanned","onUserBanned","onUserMuted","onChannelMemberCountChanged","channels","find","c","onChannelChanged","onChannelFrozen","onChannelUnfrozen","_renderUser","user","selectedUsers","setSelectedUsers","isMuted","profileUrl","role","GROUP_CHANNEL_MEMBERS","USER_BAR_OPERATOR","nickname","LABELS","USER_NO_NAME","userId","USER_BAR_ME_POSTFIX","undefined","HEADER_TITLE","members"],"sources":["createGroupChannelMembersFragment.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { Icon } from '@sendbird/uikit-react-native-foundation';\nimport type { SendbirdMember } from '@sendbird/uikit-utils';\nimport { useForceUpdate, useUniqId } from '@sendbird/uikit-utils';\n\nimport UserActionBar from '../components/UserActionBar';\nimport type { GroupChannelMembersFragment } from '../domain/groupChannelUserList/types';\nimport createUserListModule from '../domain/userList/module/createUserListModule';\nimport type { UserListModule } from '../domain/userList/types';\nimport { useLocalization, useSendbirdChat } from '../hooks/useContext';\n\nconst noop = () => '';\nconst name = 'createGroupChannelMembersFragment';\nconst createGroupChannelMembersFragment = (\n initModule?: Partial<UserListModule<SendbirdMember>>,\n): GroupChannelMembersFragment<SendbirdMember> => {\n const UserListModule = createUserListModule<SendbirdMember>(initModule);\n\n return ({ channel, onPressHeaderLeft, onPressHeaderRight, renderUser }) => {\n const uniqId = useUniqId(name);\n const forceUpdate = useForceUpdate();\n const { sdk, currentUser } = useSendbirdChat();\n const { activeChannel } = useActiveGroupChannel(sdk, channel);\n\n const { STRINGS } = useLocalization();\n\n useChannelHandler(sdk, `${name}_${uniqId}`, {\n // Note: Removed from v4\n // onUserEntered(channel) {\n // if (channel.url === activeChannel.url) forceUpdate();\n // },\n onUserLeft(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onUserJoined(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onUserUnmuted(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onUserUnbanned(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onUserBanned(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onUserMuted(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onChannelMemberCountChanged(channels) {\n if (channels.find((c) => c.url === channel.url)) forceUpdate();\n },\n onChannelChanged(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onChannelFrozen(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n onChannelUnfrozen(channel) {\n if (channel.url === activeChannel.url) forceUpdate();\n },\n });\n\n const _renderUser: NonNullable<typeof renderUser> = useCallback(\n (user, selectedUsers, setSelectedUsers) => {\n if (renderUser) return renderUser(user, selectedUsers, setSelectedUsers);\n\n return (\n <UserActionBar\n muted={user.isMuted}\n uri={user.profileUrl}\n label={user.role === 'operator' ? STRINGS.GROUP_CHANNEL_MEMBERS.USER_BAR_OPERATOR : ''}\n name={\n (user.nickname || STRINGS.LABELS.USER_NO_NAME) +\n (user.userId === currentUser?.userId ? STRINGS.GROUP_CHANNEL_MEMBERS.USER_BAR_ME_POSTFIX : '')\n }\n disabled={user.userId === currentUser?.userId}\n // TODO: implement ban/mute actions, use channel.members with handlers instead member query\n onPressActionMenu={undefined}\n />\n );\n },\n [renderUser],\n );\n\n return (\n <UserListModule.Provider headerRight={noop} headerTitle={STRINGS.GROUP_CHANNEL_MEMBERS.HEADER_TITLE}>\n <UserListModule.Header\n shouldActivateHeaderRight={() => true}\n onPressHeaderLeft={onPressHeaderLeft}\n right={<Icon icon={'plus'} />}\n onPressHeaderRight={async () => onPressHeaderRight()}\n />\n\n <UserListModule.List\n users={activeChannel.members}\n renderUser={_renderUser}\n onLoadNext={async () => void 0}\n ListEmptyComponent={<UserListModule.StatusEmpty />}\n />\n </UserListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelMembersFragment;\n"],"mappings":"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"}
|