@sendbird/uikit-react-native 1.0.2 → 1.1.0
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 +7 -7
- package/lib/commonjs/SendbirdUIKitContainer.js +5 -2
- package/lib/commonjs/SendbirdUIKitContainer.js.map +1 -1
- package/lib/commonjs/components/FileViewer.js +326 -0
- package/lib/commonjs/components/FileViewer.js.map +1 -0
- package/lib/commonjs/components/GroupChannelPreviewContainer.js +180 -0
- package/lib/commonjs/components/GroupChannelPreviewContainer.js.map +1 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +116 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js +8 -0
- package/lib/commonjs/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js +15 -24
- package/lib/commonjs/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
- package/lib/commonjs/components/SBUPressable.js +45 -0
- package/lib/commonjs/components/SBUPressable.js.map +1 -0
- package/lib/commonjs/components/UserActionBar.js +1 -3
- package/lib/commonjs/components/UserActionBar.js.map +1 -1
- package/lib/commonjs/components/UserSelectableBar.js +1 -3
- package/lib/commonjs/components/UserSelectableBar.js.map +1 -1
- package/lib/commonjs/constants.js +7 -1
- package/lib/commonjs/constants.js.map +1 -1
- package/lib/commonjs/contexts/PlatformService.js +4 -2
- package/lib/commonjs/contexts/PlatformService.js.map +1 -1
- package/lib/commonjs/contexts/SendbirdChat.js +6 -2
- package/lib/commonjs/contexts/SendbirdChat.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js +30 -7
- package/lib/commonjs/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js +2 -3
- package/lib/commonjs/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/commonjs/domain/groupChannel/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelList/types.js.map +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +1 -1
- package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js +3 -7
- package/lib/commonjs/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelFragment.js +13 -11
- package/lib/commonjs/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelListFragment.js +7 -37
- package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js +1 -1
- package/lib/commonjs/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/commonjs/hooks/useContext.js.map +1 -1
- package/lib/commonjs/index.js +29 -2
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/localization/StringSet.type.js +8 -0
- package/lib/commonjs/localization/StringSet.type.js.map +1 -1
- package/lib/commonjs/platform/createFileService.expo.js +21 -2
- package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
- package/lib/commonjs/platform/createFileService.native.js +20 -3
- package/lib/commonjs/platform/createFileService.native.js.map +1 -1
- package/lib/commonjs/platform/createMediaService.expo.js +64 -0
- package/lib/commonjs/platform/createMediaService.expo.js.map +1 -0
- package/lib/commonjs/platform/createMediaService.native.js +67 -0
- package/lib/commonjs/platform/createMediaService.native.js.map +1 -0
- package/lib/commonjs/platform/createNotificationService.expo.js.map +1 -1
- 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/SendbirdUIKitContainer.js +5 -2
- package/lib/module/SendbirdUIKitContainer.js.map +1 -1
- package/lib/module/components/FileViewer.js +304 -0
- package/lib/module/components/FileViewer.js.map +1 -0
- package/lib/module/components/GroupChannelPreviewContainer.js +158 -0
- package/lib/module/components/GroupChannelPreviewContainer.js.map +1 -0
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +100 -0
- package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -0
- package/lib/module/components/MessageRenderer/FileMessage/index.js +6 -0
- package/lib/module/components/MessageRenderer/FileMessage/index.js.map +1 -1
- package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js +17 -26
- package/lib/module/components/MessageRenderer/MessageOutgoingStatus.js.map +1 -1
- package/lib/module/components/SBUPressable.js +33 -0
- package/lib/module/components/SBUPressable.js.map +1 -0
- package/lib/module/components/UserActionBar.js +1 -1
- package/lib/module/components/UserActionBar.js.map +1 -1
- package/lib/module/components/UserSelectableBar.js +1 -1
- package/lib/module/components/UserSelectableBar.js.map +1 -1
- package/lib/module/constants.js +5 -0
- package/lib/module/constants.js.map +1 -1
- package/lib/module/contexts/PlatformService.js +4 -2
- package/lib/module/contexts/PlatformService.js.map +1 -1
- package/lib/module/contexts/SendbirdChat.js +6 -2
- package/lib/module/contexts/SendbirdChat.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js +28 -7
- package/lib/module/domain/groupChannel/component/GroupChannelMessageList.js.map +1 -1
- package/lib/module/domain/groupChannel/module/moduleContext.js +2 -3
- package/lib/module/domain/groupChannel/module/moduleContext.js.map +1 -1
- package/lib/module/domain/groupChannel/types.js.map +1 -1
- package/lib/module/domain/groupChannelList/types.js.map +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js +1 -1
- package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
- package/lib/module/fragments/createGroupChannelCreateFragment.js +4 -4
- package/lib/module/fragments/createGroupChannelCreateFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelFragment.js +15 -13
- package/lib/module/fragments/createGroupChannelFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelListFragment.js +11 -38
- package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js +1 -1
- package/lib/module/fragments/createGroupChannelMembersFragment.js.map +1 -1
- package/lib/module/hooks/useContext.js.map +1 -1
- package/lib/module/index.js +4 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/localization/StringSet.type.js +8 -0
- package/lib/module/localization/StringSet.type.js.map +1 -1
- package/lib/module/platform/createFileService.expo.js +21 -2
- package/lib/module/platform/createFileService.expo.js.map +1 -1
- package/lib/module/platform/createFileService.native.js +20 -3
- package/lib/module/platform/createFileService.native.js.map +1 -1
- package/lib/module/platform/createMediaService.expo.js +54 -0
- package/lib/module/platform/createMediaService.expo.js.map +1 -0
- package/lib/module/platform/createMediaService.native.js +57 -0
- package/lib/module/platform/createMediaService.native.js.map +1 -0
- package/lib/module/platform/createNotificationService.expo.js.map +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/SendbirdUIKitContainer.d.ts +7 -3
- package/lib/typescript/src/components/FileViewer.d.ts +12 -0
- package/lib/typescript/src/components/GroupChannelPreviewContainer.d.ts +8 -0
- package/lib/typescript/src/components/MessageRenderer/FileMessage/VideoFileMessage.d.ts +3 -0
- package/lib/typescript/src/components/SBUPressable.d.ts +18 -0
- package/lib/typescript/src/components/UserActionBar.d.ts +2 -3
- package/lib/typescript/src/components/UserSelectableBar.d.ts +2 -3
- package/lib/typescript/src/constants.d.ts +5 -0
- package/lib/typescript/src/contexts/PlatformService.d.ts +3 -2
- package/lib/typescript/src/contexts/SendbirdChat.d.ts +5 -1
- package/lib/typescript/src/domain/groupChannel/component/GroupChannelMessageList.d.ts +3 -2
- package/lib/typescript/src/domain/groupChannel/types.d.ts +6 -2
- package/lib/typescript/src/hooks/useContext.d.ts +7 -5
- package/lib/typescript/src/index.d.ts +3 -0
- package/lib/typescript/src/localization/StringSet.type.d.ts +4 -0
- package/lib/typescript/src/platform/createMediaService.expo.d.ts +9 -0
- package/lib/typescript/src/platform/createMediaService.native.d.ts +9 -0
- package/lib/typescript/src/platform/createNotificationService.expo.d.ts +1 -1
- package/lib/typescript/src/platform/types.d.ts +20 -1
- package/lib/typescript/src/version.d.ts +1 -1
- package/package.json +14 -5
- package/src/SendbirdUIKitContainer.tsx +14 -2
- package/src/components/FileViewer.tsx +284 -0
- package/src/components/GroupChannelPreviewContainer.tsx +134 -0
- package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +91 -0
- package/src/components/MessageRenderer/FileMessage/index.tsx +6 -0
- package/src/components/MessageRenderer/MessageOutgoingStatus.tsx +25 -32
- package/src/components/SBUPressable.tsx +40 -0
- package/src/components/UserActionBar.tsx +1 -1
- package/src/components/UserSelectableBar.tsx +1 -1
- package/src/constants.ts +5 -0
- package/src/contexts/PlatformService.tsx +15 -3
- package/src/contexts/SendbirdChat.tsx +13 -5
- package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +1 -1
- package/src/domain/groupChannel/component/GroupChannelMessageList.tsx +23 -6
- package/src/domain/groupChannel/module/moduleContext.tsx +6 -13
- package/src/domain/groupChannel/types.ts +8 -2
- package/src/domain/groupChannelList/types.ts +1 -0
- package/src/domain/groupChannelSettings/module/moduleContext.tsx +5 -10
- package/src/fragments/createGroupChannelCreateFragment.tsx +38 -41
- package/src/fragments/createGroupChannelFragment.tsx +23 -33
- package/src/fragments/createGroupChannelListFragment.tsx +10 -32
- package/src/fragments/createGroupChannelMembersFragment.tsx +34 -39
- package/src/hooks/useContext.ts +3 -5
- package/src/index.ts +5 -1
- package/src/localization/StringSet.type.ts +8 -0
- package/src/platform/createFileService.expo.ts +17 -2
- package/src/platform/createFileService.native.ts +16 -3
- package/src/platform/createMediaService.expo.tsx +30 -0
- package/src/platform/createMediaService.native.tsx +37 -0
- package/src/platform/createNotificationService.expo.ts +1 -1
- package/src/platform/types.ts +26 -1
- package/src/version.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","renderNewMessagesButton","props","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressImageMessage","onChannelDeleted","onBeforeSendFileMessage","PASS","onBeforeSendUserMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","messageComparator","flatListProps","sdk","currentUser","useSendbirdChat","activeChannel","messages","nextMessages","newMessagesFromMembers","next","prev","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","loading","useGroupChannelMessages","userId","enableCollectionWithoutLocalCache","_renderMessage","useCallback","memoizedFlatListProps","useMemo","ListEmptyComponent","contentContainerStyle","flexGrow","onSendFileMessage","file","params","FileMessageParams","processedParams","onSendUserMessage","text","UserMessageParams","message","onUpdateFileMessage","editedFile","messageId","onUpdateUserMessage","editedText"],"sources":["createGroupChannelFragment.tsx"],"sourcesContent":["import React, { useCallback, useMemo } from 'react';\n\nimport { useGroupChannelMessages } from '@sendbird/uikit-chat-hooks';\nimport { NOOP, PASS, messageComparator } 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 = 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: true,\n });\n\n const _renderMessage: GroupChannelProps['MessageList']['renderMessage'] = useCallback(\n (props) => {\n if (renderMessage) return renderMessage(props);\n return <MessageRenderer {...props} />;\n },\n [renderMessage],\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'] = useCallback(\n async (file) => {\n const params = new sdk.FileMessageParams();\n params.file = file;\n const processedParams = await onBeforeSendFileMessage(params);\n await sendFileMessage(processedParams);\n },\n [sdk, sendFileMessage, onBeforeSendFileMessage],\n );\n\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useCallback(\n async (text) => {\n const params = new sdk.UserMessageParams();\n params.message = text;\n const processedParams = await onBeforeSendUserMessage(params);\n await sendUserMessage(processedParams);\n },\n [sdk, sendUserMessage, onBeforeSendUserMessage],\n );\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useCallback(\n async (editedFile, message) => {\n const params = new sdk.FileMessageParams();\n params.file = editedFile;\n const processedParams = await onBeforeSendFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n [sdk, updateFileMessage, onBeforeSendFileMessage],\n );\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useCallback(\n async (editedText, message) => {\n const params = new sdk.UserMessageParams();\n params.message = editedText;\n const processedParams = await onBeforeSendUserMessage(params);\n await updateUserMessage(message.messageId, processedParams);\n },\n [sdk, updateUserMessage, onBeforeSendUserMessage],\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 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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"}
|
|
1
|
+
{"version":3,"names":["createGroupChannelFragment","initModule","GroupChannelModule","createGroupChannelModule","renderNewMessagesButton","props","renderScrollToBottomButton","renderMessage","enableMessageGrouping","enableTypingIndicator","onPressHeaderLeft","NOOP","onPressHeaderRight","onPressImageMessage","onPressMediaMessage","onChannelDeleted","onBeforeSendFileMessage","PASS","onBeforeSendUserMessage","channel","keyboardAvoidOffset","queryCreator","collectionCreator","sortComparator","messageComparator","flatListProps","sdk","currentUser","useSendbirdChat","activeChannel","messages","nextMessages","newMessagesFromMembers","next","prev","sendFileMessage","sendUserMessage","updateFileMessage","updateUserMessage","resendMessage","deleteMessage","loading","useGroupChannelMessages","userId","enableCollectionWithoutLocalCache","_renderMessage","useFreshCallback","memoizedFlatListProps","useMemo","ListEmptyComponent","contentContainerStyle","flexGrow","onSendFileMessage","file","params","FileMessageParams","processedParams","onSendUserMessage","text","UserMessageParams","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: true,\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 params = new sdk.FileMessageParams();\n params.file = file;\n const processedParams = await onBeforeSendFileMessage(params);\n await sendFileMessage(processedParams);\n });\n const onSendUserMessage: GroupChannelProps['Input']['onSendUserMessage'] = useFreshCallback(async (text) => {\n const params = new sdk.UserMessageParams();\n params.message = text;\n const processedParams = await onBeforeSendUserMessage(params);\n await sendUserMessage(processedParams);\n });\n const onUpdateFileMessage: GroupChannelProps['Input']['onUpdateFileMessage'] = useFreshCallback(\n async (editedFile, message) => {\n const params = new sdk.FileMessageParams();\n params.file = editedFile;\n const processedParams = await onBeforeSendFileMessage(params);\n await updateFileMessage(message.messageId, processedParams);\n },\n );\n const onUpdateUserMessage: GroupChannelProps['Input']['onUpdateUserMessage'] = useFreshCallback(\n async (editedText, message) => {\n const params = new sdk.UserMessageParams();\n params.message = editedText;\n const processedParams = await onBeforeSendUserMessage(params);\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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"}
|
|
@@ -11,16 +11,12 @@ var _reactNative = require("react-native");
|
|
|
11
11
|
|
|
12
12
|
var _uikitChatHooks = require("@sendbird/uikit-chat-hooks");
|
|
13
13
|
|
|
14
|
-
var _uikitReactNativeFoundation = require("@sendbird/uikit-react-native-foundation");
|
|
15
|
-
|
|
16
14
|
var _uikitUtils = require("@sendbird/uikit-utils");
|
|
17
15
|
|
|
18
|
-
var
|
|
16
|
+
var _GroupChannelPreviewContainer = _interopRequireDefault(require("../components/GroupChannelPreviewContainer"));
|
|
19
17
|
|
|
20
18
|
var _StatusComposition = _interopRequireDefault(require("../components/StatusComposition"));
|
|
21
19
|
|
|
22
|
-
var _constants = require("../constants");
|
|
23
|
-
|
|
24
20
|
var _createGroupChannelListModule = _interopRequireDefault(require("../domain/groupChannelList/module/createGroupChannelListModule"));
|
|
25
21
|
|
|
26
22
|
var _useContext = require("../hooks/useContext");
|
|
@@ -31,13 +27,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
31
27
|
|
|
32
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
29
|
|
|
34
|
-
const iconMapper = {
|
|
35
|
-
audio: 'file-audio',
|
|
36
|
-
image: 'photo',
|
|
37
|
-
video: 'play',
|
|
38
|
-
file: 'file-document'
|
|
39
|
-
};
|
|
40
|
-
|
|
41
30
|
const createGroupChannelListFragment = initModule => {
|
|
42
31
|
const GroupChannelListModule = (0, _createGroupChannelListModule.default)(initModule);
|
|
43
32
|
return _ref => {
|
|
@@ -58,9 +47,6 @@ const createGroupChannelListFragment = initModule => {
|
|
|
58
47
|
features,
|
|
59
48
|
markAsDeliveredWithChannel
|
|
60
49
|
} = (0, _useContext.useSendbirdChat)();
|
|
61
|
-
const {
|
|
62
|
-
STRINGS
|
|
63
|
-
} = (0, _useContext.useLocalization)();
|
|
64
50
|
const {
|
|
65
51
|
groupChannels,
|
|
66
52
|
next,
|
|
@@ -81,30 +67,14 @@ const createGroupChannelListFragment = initModule => {
|
|
|
81
67
|
}, []);
|
|
82
68
|
}
|
|
83
69
|
|
|
84
|
-
const _renderGroupChannelPreview = (0,
|
|
85
|
-
var _channel$lastMessage;
|
|
86
|
-
|
|
70
|
+
const _renderGroupChannelPreview = (0, _uikitUtils.useFreshCallback)((channel, onLongPressChannel) => {
|
|
87
71
|
if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);
|
|
88
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
72
|
+
return /*#__PURE__*/_react.default.createElement(_GroupChannelPreviewContainer.default, {
|
|
73
|
+
channel: channel,
|
|
89
74
|
onPress: () => onPressChannel(channel),
|
|
90
|
-
onLongPress: onLongPressChannel
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
customCover: /*#__PURE__*/_react.default.createElement(_ChannelCover.default, {
|
|
94
|
-
channel: channel,
|
|
95
|
-
size: 56
|
|
96
|
-
}),
|
|
97
|
-
coverUrl: channel.coverUrl,
|
|
98
|
-
title: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE((currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId) ?? '', channel),
|
|
99
|
-
titleCaption: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_TITLE_CAPTION(channel),
|
|
100
|
-
body: STRINGS.GROUP_CHANNEL_LIST.CHANNEL_PREVIEW_BODY(channel),
|
|
101
|
-
badgeCount: channel.unreadMessageCount,
|
|
102
|
-
bodyIcon: (_channel$lastMessage = channel.lastMessage) !== null && _channel$lastMessage !== void 0 && _channel$lastMessage.isFileMessage() ? iconMapper[(0, _uikitUtils.getFileType)(channel.lastMessage.type || (0, _uikitUtils.getFileExtension)(channel.lastMessage.name))] : undefined,
|
|
103
|
-
frozen: channel.isFrozen,
|
|
104
|
-
notificationOff: channel.myPushTriggerOption === 'off',
|
|
105
|
-
memberCount: channel.memberCount > 2 ? channel.memberCount : undefined
|
|
106
|
-
}));
|
|
107
|
-
}, [STRINGS, onPressChannel, currentUser === null || currentUser === void 0 ? void 0 : currentUser.userId]);
|
|
75
|
+
onLongPress: () => onLongPressChannel()
|
|
76
|
+
});
|
|
77
|
+
});
|
|
108
78
|
|
|
109
79
|
if (!currentUser) {
|
|
110
80
|
_uikitUtils.Logger.warn('Cannot render GroupChannelListFragment, User is not connected');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["createGroupChannelListFragment","initModule","GroupChannelListModule","createGroupChannelListModule","TypeSelectorHeader","onPressChannel","onPressCreateChannel","queryCreator","sortComparator","channelComparator","renderGroupChannelPreview","flatListProps","menuItemCreator","PASS","sdk","currentUser","features","markAsDeliveredWithChannel","useSendbirdChat","groupChannels","next","loading","useGroupChannelList","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","useEffect","listener","AppState","addEventListener","status","forEach","remove","_renderGroupChannelPreview","useFreshCallback","channel","onLongPressChannel","Logger","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, channelComparator, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport GroupChannelPreviewContainer from '../components/GroupChannelPreviewContainer';\nimport StatusComposition from '../components/StatusComposition';\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 sortComparator = channelComparator,\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 sortComparator,\n enableCollectionWithoutLocalCache: true,\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, User is not connected');\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;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;;;;;;;AAEA,MAAMA,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6BF,UAA7B,CAA/B;EACA,OAAO,QAUD;IAAA,IAVE;MACNG,kBADM;MAENC,cAFM;MAGNC,oBAHM;MAINC,YAJM;MAKNC,cAAc,GAAGC,6BALX;MAMNC,yBANM;MAON;MACAC,aAAa,GAAG,EARV;MASNC,eAAe,GAAGC;IATZ,CAUF;IACJ,MAAM;MAAEC,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6D,IAAAC,2BAAA,GAAnE;IACA,MAAM;MAAEC,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmC,IAAAC,mCAAA,EAAoBR,GAApB,EAAyBC,WAAzB,aAAyBA,WAAzB,uBAAyBA,WAAW,CAAEQ,MAAtC,EAA8C;MACrFhB,YADqF;MAErFC,cAFqF;MAGrFgB,iCAAiC,EAAE;IAHkD,CAA9C,CAAzC;;IAMA,IAAIR,QAAQ,CAACS,sBAAb,EAAqC;MACnC,IAAAC,gBAAA,EAAU,MAAM;QACd,MAAMC,QAAQ,GAAGC,qBAAA,CAASC,gBAAT,CAA0B,QAA1B,EAAqCC,MAAD,IAAY;UAC/D,IAAIA,MAAM,KAAK,QAAf,EAAyBX,aAAa,CAACY,OAAd,CAAsBd,0BAAtB;QAC1B,CAFgB,CAAjB;;QAGA,OAAO,MAAMU,QAAQ,CAACK,MAAT,EAAb;MACD,CALD,EAKG,EALH;IAMD;;IAED,MAAMC,0BAAsF,GAAG,IAAAC,4BAAA,EAC7F,CAACC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAI1B,yBAAJ,EAA+B,OAAOA,yBAAyB,CAACyB,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,6BAAC,qCAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAM9B,cAAc,CAAC8B,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4F,CAA/F;;IAaA,IAAI,CAACrB,WAAL,EAAkB;MAChBsB,kBAAA,CAAOC,IAAP,CAAY,+DAAZ;;MACA,OAAO,IAAP;IACD;;IAED,oBACE,6BAAC,sBAAD,CAAwB,QAAxB,qBACE,6BAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,6BAAC,0BAAD;MAAmB,OAAO,EAAEjB,OAA5B;MAAqC,gBAAgB,eAAE,6BAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,6BAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAET,eADnB;MAEE,yBAAyB,EAAEqB,0BAF7B;MAGE,aAAa,EAAEd,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACbmB,kBAAkB,eAAE,6BAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAG9B;MAHU;IALjB,EADF,CAFF,eAeE,6BAAC,sBAAD,CAAwB,YAAxB;MACE;MACA,iBAAiB,MAFnB;MAGE,MAAM,EAAEP,kBAHV;MAIE,YAAY,EAAEE;IAJhB,EAfF,CADF;EAwBD,CArED;AAsED,CAxED;;eA0EeN,8B"}
|
|
@@ -95,7 +95,7 @@ const createGroupChannelMembersFragment = initModule => {
|
|
|
95
95
|
if (channel.url === activeChannel.url) forceUpdate();
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
}
|
|
98
|
+
});
|
|
99
99
|
|
|
100
100
|
const _renderUser = (0, _react.useCallback)((user, selectedUsers, setSelectedUsers) => {
|
|
101
101
|
if (renderUser) return renderUser(user, selectedUsers, setSelectedUsers);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["noop","name","createGroupChannelMembersFragment","initModule","UserListModule","createUserListModule","channel","onPressHeaderLeft","onPressHeaderRight","renderUser","uniqId","useUniqId","forceUpdate","useForceUpdate","sdk","currentUser","useSendbirdChat","activeChannel","useActiveGroupChannel","STRINGS","useLocalization","useChannelHandler","onUserEntered","url","onUserLeft","onUserJoined","onUserUnmuted","onUserUnbanned","onUserBanned","onUserMuted","onChannelMemberCountChanged","channels","find","c","onChannelChanged","onChannelFrozen","onChannelUnfrozen","_renderUser","useCallback","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(
|
|
1
|
+
{"version":3,"names":["noop","name","createGroupChannelMembersFragment","initModule","UserListModule","createUserListModule","channel","onPressHeaderLeft","onPressHeaderRight","renderUser","uniqId","useUniqId","forceUpdate","useForceUpdate","sdk","currentUser","useSendbirdChat","activeChannel","useActiveGroupChannel","STRINGS","useLocalization","useChannelHandler","onUserEntered","url","onUserLeft","onUserJoined","onUserUnmuted","onUserUnbanned","onUserBanned","onUserMuted","onChannelMemberCountChanged","channels","find","c","onChannelChanged","onChannelFrozen","onChannelUnfrozen","_renderUser","useCallback","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 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":";;;;;;;AAAA;;AAEA;;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;;;;;;;AAEA,MAAMA,IAAI,GAAG,MAAM,EAAnB;;AACA,MAAMC,IAAI,GAAG,mCAAb;;AACA,MAAMC,iCAAiC,GACrCC,UADwC,IAEQ;EAChD,MAAMC,cAAc,GAAG,IAAAC,6BAAA,EAAqCF,UAArC,CAAvB;EAEA,OAAO,QAAoE;IAAA,IAAnE;MAAEG,OAAF;MAAWC,iBAAX;MAA8BC,kBAA9B;MAAkDC;IAAlD,CAAmE;IACzE,MAAMC,MAAM,GAAG,IAAAC,qBAAA,EAAUV,IAAV,CAAf;IACA,MAAMW,WAAW,GAAG,IAAAC,0BAAA,GAApB;IACA,MAAM;MAAEC,GAAF;MAAOC;IAAP,IAAuB,IAAAC,2BAAA,GAA7B;IACA,MAAM;MAAEC;IAAF,IAAoB,IAAAC,qCAAA,EAAsBJ,GAAtB,EAA2BR,OAA3B,CAA1B;IAEA,MAAM;MAAEa;IAAF,IAAc,IAAAC,2BAAA,GAApB;IAEA,IAAAC,iCAAA,EAAkBP,GAAlB,EAAwB,GAAEb,IAAK,IAAGS,MAAO,EAAzC,EAA4C;MAC1CY,aAAa,CAAChB,OAAD,EAAU;QACrB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CAHyC;;MAI1CY,UAAU,CAAClB,OAAD,EAAU;QAClB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CANyC;;MAO1Ca,YAAY,CAACnB,OAAD,EAAU;QACpB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CATyC;;MAU1Cc,aAAa,CAACpB,OAAD,EAAU;QACrB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CAZyC;;MAa1Ce,cAAc,CAACrB,OAAD,EAAU;QACtB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CAfyC;;MAgB1CgB,YAAY,CAACtB,OAAD,EAAU;QACpB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CAlByC;;MAmB1CiB,WAAW,CAACvB,OAAD,EAAU;QACnB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CArByC;;MAsB1CkB,2BAA2B,CAACC,QAAD,EAAW;QACpC,IAAIA,QAAQ,CAACC,IAAT,CAAeC,CAAD,IAAOA,CAAC,CAACV,GAAF,KAAUjB,OAAO,CAACiB,GAAvC,CAAJ,EAAiDX,WAAW;MAC7D,CAxByC;;MAyB1CsB,gBAAgB,CAAC5B,OAAD,EAAU;QACxB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CA3ByC;;MA4B1CuB,eAAe,CAAC7B,OAAD,EAAU;QACvB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD,CA9ByC;;MA+B1CwB,iBAAiB,CAAC9B,OAAD,EAAU;QACzB,IAAIA,OAAO,CAACiB,GAAR,KAAgBN,aAAa,CAACM,GAAlC,EAAuCX,WAAW;MACnD;;IAjCyC,CAA5C;;IAoCA,MAAMyB,WAA2C,GAAG,IAAAC,kBAAA,EAClD,CAACC,IAAD,EAAOC,aAAP,EAAsBC,gBAAtB,KAA2C;MACzC,IAAIhC,UAAJ,EAAgB,OAAOA,UAAU,CAAC8B,IAAD,EAAOC,aAAP,EAAsBC,gBAAtB,CAAjB;MAEhB,oBACE,6BAAC,sBAAD;QACE,KAAK,EAAEF,IAAI,CAACG,OADd;QAEE,GAAG,EAAEH,IAAI,CAACI,UAFZ;QAGE,KAAK,EAAEJ,IAAI,CAACK,IAAL,KAAc,UAAd,GAA2BzB,OAAO,CAAC0B,qBAAR,CAA8BC,iBAAzD,GAA6E,EAHtF;QAIE,IAAI,EACF,CAACP,IAAI,CAACQ,QAAL,IAAiB5B,OAAO,CAAC6B,MAAR,CAAeC,YAAjC,KACCV,IAAI,CAACW,MAAL,MAAgBnC,WAAhB,aAAgBA,WAAhB,uBAAgBA,WAAW,CAAEmC,MAA7B,IAAsC/B,OAAO,CAAC0B,qBAAR,CAA8BM,mBAApE,GAA0F,EAD3F,CALJ;QAQE,QAAQ,EAAEZ,IAAI,CAACW,MAAL,MAAgBnC,WAAhB,aAAgBA,WAAhB,uBAAgBA,WAAW,CAAEmC,MAA7B,CARZ,CASE;QATF;QAUE,iBAAiB,EAAEE;MAVrB,EADF;IAcD,CAlBiD,EAmBlD,CAAC3C,UAAD,CAnBkD,CAApD;;IAsBA,oBACE,6BAAC,cAAD,CAAgB,QAAhB;MAAyB,WAAW,EAAET,IAAtC;MAA4C,WAAW,EAAEmB,OAAO,CAAC0B,qBAAR,CAA8BQ;IAAvF,gBACE,6BAAC,cAAD,CAAgB,MAAhB;MACE,yBAAyB,EAAE,MAAM,IADnC;MAEE,iBAAiB,EAAE9C,iBAFrB;MAGE,KAAK,eAAE,6BAAC,gCAAD;QAAM,IAAI,EAAE;MAAZ,EAHT;MAIE,kBAAkB,EAAE,YAAYC,kBAAkB;IAJpD,EADF,eAQE,6BAAC,cAAD,CAAgB,IAAhB;MACE,KAAK,EAAES,aAAa,CAACqC,OADvB;MAEE,UAAU,EAAEjB,WAFd;MAGE,UAAU,EAAE,YAAY,KAAK,CAH/B;MAIE,kBAAkB,eAAE,6BAAC,cAAD,CAAgB,WAAhB;IAJtB,EARF,CADF;EAiBD,CAnFD;AAoFD,CAzFD;;eA2FenC,iC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useLocalization","value","useContext","LocalizationContext","Error","usePlatformService","PlatformServiceContext","useSendbirdChat","SendbirdChatContext"],"sources":["useContext.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"names":["useLocalization","value","useContext","LocalizationContext","Error","usePlatformService","PlatformServiceContext","useSendbirdChat","SendbirdChatContext"],"sources":["useContext.ts"],"sourcesContent":["import { useContext } from 'react';\n\nimport { LocalizationContext } from '../contexts/Localization';\nimport { PlatformServiceContext } from '../contexts/PlatformService';\nimport { SendbirdChatContext } from '../contexts/SendbirdChat';\n\nexport const useLocalization = () => {\n const value = useContext(LocalizationContext);\n if (!value) throw new Error('LocalizationContext is not provided');\n return value;\n};\n\nexport const usePlatformService = () => {\n const value = useContext(PlatformServiceContext);\n if (!value) throw new Error('PlatformServiceContext is not provided');\n return value;\n};\n\nexport const useSendbirdChat = () => {\n const value = useContext(SendbirdChatContext);\n if (!value) throw new Error('SendbirdChatContext is not provided');\n return value;\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AACA;;AACA;;AAEO,MAAMA,eAAe,GAAG,MAAM;EACnC,MAAMC,KAAK,GAAG,IAAAC,iBAAA,EAAWC,iCAAX,CAAd;EACA,IAAI,CAACF,KAAL,EAAY,MAAM,IAAIG,KAAJ,CAAU,qCAAV,CAAN;EACZ,OAAOH,KAAP;AACD,CAJM;;;;AAMA,MAAMI,kBAAkB,GAAG,MAAM;EACtC,MAAMJ,KAAK,GAAG,IAAAC,iBAAA,EAAWI,uCAAX,CAAd;EACA,IAAI,CAACL,KAAL,EAAY,MAAM,IAAIG,KAAJ,CAAU,wCAAV,CAAN;EACZ,OAAOH,KAAP;AACD,CAJM;;;;AAMA,MAAMM,eAAe,GAAG,MAAM;EACnC,MAAMN,KAAK,GAAG,IAAAC,iBAAA,EAAWM,iCAAX,CAAd;EACA,IAAI,CAACP,KAAL,EAAY,MAAM,IAAIG,KAAJ,CAAU,qCAAV,CAAN;EACZ,OAAOH,KAAP;AACD,CAJM"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var _exportNames = {
|
|
|
7
7
|
MessageRenderer: true,
|
|
8
8
|
ChannelCover: true,
|
|
9
9
|
ChatFlatList: true,
|
|
10
|
+
FileViewer: true,
|
|
10
11
|
NewMessagesButton: true,
|
|
11
12
|
ProviderLayout: true,
|
|
12
13
|
ScrollToBottomButton: true,
|
|
@@ -36,9 +37,11 @@ var _exportNames = {
|
|
|
36
37
|
createNativeFileService: true,
|
|
37
38
|
createNativeClipboardService: true,
|
|
38
39
|
createNativeNotificationService: true,
|
|
40
|
+
createNativeMediaService: true,
|
|
39
41
|
createExpoFileService: true,
|
|
40
42
|
createExpoClipboardService: true,
|
|
41
43
|
createExpoNotificationService: true,
|
|
44
|
+
createExpoMediaService: true,
|
|
42
45
|
SendbirdUIKitContainer: true,
|
|
43
46
|
SendbirdUIKit: true,
|
|
44
47
|
SendbirdUIKitContainerProps: true
|
|
@@ -55,6 +58,12 @@ Object.defineProperty(exports, "ChatFlatList", {
|
|
|
55
58
|
return _ChatFlatList.default;
|
|
56
59
|
}
|
|
57
60
|
});
|
|
61
|
+
Object.defineProperty(exports, "FileViewer", {
|
|
62
|
+
enumerable: true,
|
|
63
|
+
get: function () {
|
|
64
|
+
return _FileViewer.default;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
58
67
|
Object.defineProperty(exports, "LocalizationContext", {
|
|
59
68
|
enumerable: true,
|
|
60
69
|
get: function () {
|
|
@@ -181,6 +190,12 @@ Object.defineProperty(exports, "createExpoFileService", {
|
|
|
181
190
|
return _createFileService2.default;
|
|
182
191
|
}
|
|
183
192
|
});
|
|
193
|
+
Object.defineProperty(exports, "createExpoMediaService", {
|
|
194
|
+
enumerable: true,
|
|
195
|
+
get: function () {
|
|
196
|
+
return _createMediaService2.default;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
184
199
|
Object.defineProperty(exports, "createExpoNotificationService", {
|
|
185
200
|
enumerable: true,
|
|
186
201
|
get: function () {
|
|
@@ -235,6 +250,12 @@ Object.defineProperty(exports, "createNativeFileService", {
|
|
|
235
250
|
return _createFileService.default;
|
|
236
251
|
}
|
|
237
252
|
});
|
|
253
|
+
Object.defineProperty(exports, "createNativeMediaService", {
|
|
254
|
+
enumerable: true,
|
|
255
|
+
get: function () {
|
|
256
|
+
return _createMediaService.default;
|
|
257
|
+
}
|
|
258
|
+
});
|
|
238
259
|
Object.defineProperty(exports, "createNativeNotificationService", {
|
|
239
260
|
enumerable: true,
|
|
240
261
|
get: function () {
|
|
@@ -282,6 +303,8 @@ var _ChannelCover = _interopRequireDefault(require("./components/ChannelCover"))
|
|
|
282
303
|
|
|
283
304
|
var _ChatFlatList = _interopRequireDefault(require("./components/ChatFlatList"));
|
|
284
305
|
|
|
306
|
+
var _FileViewer = _interopRequireDefault(require("./components/FileViewer"));
|
|
307
|
+
|
|
285
308
|
var _NewMessagesButton = _interopRequireDefault(require("./components/NewMessagesButton"));
|
|
286
309
|
|
|
287
310
|
var _ProviderLayout = _interopRequireDefault(require("./components/ProviderLayout"));
|
|
@@ -330,12 +353,16 @@ var _createClipboardService = _interopRequireDefault(require("./platform/createC
|
|
|
330
353
|
|
|
331
354
|
var _createNotificationService = _interopRequireDefault(require("./platform/createNotificationService.native"));
|
|
332
355
|
|
|
356
|
+
var _createMediaService = _interopRequireDefault(require("./platform/createMediaService.native"));
|
|
357
|
+
|
|
333
358
|
var _createFileService2 = _interopRequireDefault(require("./platform/createFileService.expo"));
|
|
334
359
|
|
|
335
360
|
var _createClipboardService2 = _interopRequireDefault(require("./platform/createClipboardService.expo"));
|
|
336
361
|
|
|
337
362
|
var _createNotificationService2 = _interopRequireDefault(require("./platform/createNotificationService.expo"));
|
|
338
363
|
|
|
364
|
+
var _createMediaService2 = _interopRequireDefault(require("./platform/createMediaService.expo"));
|
|
365
|
+
|
|
339
366
|
var _groupChannel = require("./domain/groupChannel");
|
|
340
367
|
|
|
341
368
|
Object.keys(_groupChannel).forEach(function (key) {
|
|
@@ -443,7 +470,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
443
470
|
/** Domain **/
|
|
444
471
|
|
|
445
472
|
/** UIKit **/
|
|
446
|
-
_uikitUtils.Logger.
|
|
473
|
+
_uikitUtils.Logger.setLogLevel(__DEV__ ? 'warn' : 'none');
|
|
447
474
|
|
|
448
|
-
|
|
475
|
+
_uikitUtils.Logger.setTitle(`[UIKIT_${_reactNative.Platform.OS}]`);
|
|
449
476
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Logger","
|
|
1
|
+
{"version":3,"names":["Logger","setLogLevel","__DEV__","setTitle","Platform","OS"],"sources":["index.ts"],"sourcesContent":["/** Components **/\nimport { Platform } from 'react-native';\n\nimport { Logger } from '@sendbird/uikit-utils';\n\nexport { default as MessageRenderer } from './components/MessageRenderer';\nexport { default as ChannelCover } from './components/ChannelCover';\nexport { default as ChatFlatList } from './components/ChatFlatList';\nexport { default as FileViewer } from './components/FileViewer';\nexport { default as NewMessagesButton } from './components/NewMessagesButton';\nexport { default as ProviderLayout } from './components/ProviderLayout';\nexport { default as ScrollToBottomButton } from './components/ScrollToBottomButton';\nexport { default as StatusComposition } from './components/StatusComposition';\nexport { default as TypedPlaceholder } from './components/TypedPlaceholder';\nexport { default as UserActionBar } from './components/UserActionBar';\nexport { default as UserSelectableBar } from './components/UserSelectableBar';\n\n/** Fragments **/\nexport { default as createGroupChannelCreateFragment } from './fragments/createGroupChannelCreateFragment';\nexport { default as createGroupChannelFragment } from './fragments/createGroupChannelFragment';\nexport { default as createGroupChannelSettingsFragment } from './fragments/createGroupChannelSettingsFragment';\nexport { default as createGroupChannelInviteFragment } from './fragments/createGroupChannelInviteFragment';\nexport { default as createGroupChannelListFragment } from './fragments/createGroupChannelListFragment';\nexport { default as createGroupChannelMembersFragment } from './fragments/createGroupChannelMembersFragment';\n\n/** Context **/\nexport { SendbirdChatContext, SendbirdChatProvider } from './contexts/SendbirdChat';\nexport { PlatformServiceContext, PlatformServiceProvider } from './contexts/PlatformService';\nexport { LocalizationContext, LocalizationProvider } from './contexts/Localization';\n\n/** Hooks **/\nexport { default as useConnection } from './hooks/useConnection';\nexport { default as usePushTokenRegistration } from './hooks/usePushTokenRegistration';\nexport { useLocalization, usePlatformService, useSendbirdChat } from './hooks/useContext';\n\n/** Localization **/\nexport { default as StringSetEn } from './localization/StringSet.en';\nexport { createBaseStringSet } from './localization/StringSet.type';\nexport type { StringSet } from './localization/StringSet.type';\n\n/** Platform API **/\nexport { default as createNativeFileService } from './platform/createFileService.native';\nexport { default as createNativeClipboardService } from './platform/createClipboardService.native';\nexport { default as createNativeNotificationService } from './platform/createNotificationService.native';\nexport { default as createNativeMediaService } from './platform/createMediaService.native';\nexport { default as createExpoFileService } from './platform/createFileService.expo';\nexport { default as createExpoClipboardService } from './platform/createClipboardService.expo';\nexport { default as createExpoNotificationService } from './platform/createNotificationService.expo';\nexport { default as createExpoMediaService } from './platform/createMediaService.expo';\n\nexport type {\n FileServiceInterface,\n ClipboardServiceInterface,\n FilePickerServiceInterface,\n FileSystemServiceInterface,\n SaveOptions,\n OpenDocumentOptions,\n OpenCameraOptions,\n OpenMediaLibraryOptions,\n OpenResultListener,\n DownloadedPath,\n Unsubscribe,\n FilePickerResponse,\n FileType,\n NotificationServiceInterface,\n} from './platform/types';\n\n/** Domain **/\nexport * from './domain/groupChannel';\nexport type {\n GroupChannelProps,\n GroupChannelModule,\n GroupChannelFragment,\n GroupChannelContextsType,\n} from './domain/groupChannel/types';\n\nexport * from './domain/groupChannelSettings';\nexport type {\n GroupChannelSettingsProps,\n GroupChannelSettingsModule,\n GroupChannelSettingsFragment,\n GroupChannelSettingsContextsType,\n} from './domain/groupChannelSettings/types';\n\nexport * from './domain/groupChannelList';\nexport type {\n GroupChannelType,\n GroupChannelListProps,\n GroupChannelListModule,\n GroupChannelListFragment,\n GroupChannelListContextsType,\n} from './domain/groupChannelList/types';\n\nexport * from './domain/userList';\nexport type { UserListProps, UserListModule, UserListContextsType } from './domain/userList/types';\nexport * from './domain/groupChannelUserList/types';\n\n/** UIKit **/\nexport {\n default as SendbirdUIKitContainer,\n SendbirdUIKit,\n SendbirdUIKitContainerProps,\n} from './SendbirdUIKitContainer';\n\nexport * from './types';\n\nLogger.setLogLevel(__DEV__ ? 'warn' : 'none');\nLogger.setTitle(`[UIKIT_${Platform.OS}]`);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAGA;;AACA;;AACA;;AAGA;;AACA;;AAIA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AAoBA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAQA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AASA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAGA;;AAMA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;;;;;;;AAxGA;;AAiBA;;AAQA;;AAKA;;AAKA;;AAKA;;AA2BA;;AA8BA;AASAA,kBAAA,CAAOC,WAAP,CAAmBC,OAAO,GAAG,MAAH,GAAY,MAAtC;;AACAF,kBAAA,CAAOG,QAAP,CAAiB,UAASC,qBAAA,CAASC,EAAG,GAAtC"}
|
|
@@ -133,6 +133,14 @@ const createBaseStringSet = _ref => {
|
|
|
133
133
|
},
|
|
134
134
|
...(overrides === null || overrides === void 0 ? void 0 : overrides.LABELS)
|
|
135
135
|
},
|
|
136
|
+
FILE_VIEWER: {
|
|
137
|
+
TITLE: message => {
|
|
138
|
+
var _message$sender;
|
|
139
|
+
|
|
140
|
+
return ((_message$sender = message.sender) === null || _message$sender === void 0 ? void 0 : _message$sender.nickname) || USER_NO_NAME;
|
|
141
|
+
},
|
|
142
|
+
SUBTITLE: message => (0, _uikitUtils.messageTime)(new Date(message.createdAt), dateLocale)
|
|
143
|
+
},
|
|
136
144
|
PLACEHOLDER: {
|
|
137
145
|
NO_BANNED_MEMBERS: 'No banned members',
|
|
138
146
|
NO_USERS: 'No users',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createBaseStringSet","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","GROUP_CHANNEL","HEADER_TITLE","currentUserId","channel","getGroupChannelTitle","LIST_BANNER_FROZEN","LIST_DATE_SEPARATOR","date","locale","dateSeparator","LIST_BUTTON_NEW_MSG","newMessages","length","MESSAGE_BUBBLE_TIME","message","messageTime","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","INPUT_PLACEHOLDER_ACTIVE","INPUT_PLACEHOLDER_DISABLED","INPUT_EDIT_OK","INPUT_EDIT_CANCEL","DIALOG_MESSAGE_COPY","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_SAVE","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","DIALOG_MESSAGE_DELETE_CONFIRM_OK","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_FAILED_RETRY","DIALOG_MESSAGE_FAILED_REMOVE","DIALOG_ATTACHMENT_CAMERA","DIALOG_ATTACHMENT_PHOTO_LIBRARY","DIALOG_ATTACHMENT_FILES","GROUP_CHANNEL_SETTINGS","HEADER_RIGHT","MENU_NOTIFICATION","MENU_MEMBERS","MENU_LEAVE_CHANNEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","getGroupChannelLastMessage","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","DIALOG_USER_DISMISS_OPERATOR","DIALOG_USER_MUTE","DIALOG_USER_BAN","GROUP_CHANNEL_CREATE","selectedUsers","len","GROUP_CHANNEL_INVITE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","userNames","map","u","nickname","join","PLACEHOLDER","NO_BANNED_MEMBERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR"],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n PartialDeep,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport {\n dateSeparator,\n getGroupChannelLastMessage,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n messageTime,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_BANNER_FROZEN: string;\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Input */\n INPUT_PLACEHOLDER_ACTIVE: string;\n INPUT_PLACEHOLDER_DISABLED: string;\n INPUT_EDIT_OK: string;\n INPUT_EDIT_CANCEL: string;\n\n /** GroupChannel > Dialog > Message */\n DIALOG_MESSAGE_COPY: string;\n DIALOG_MESSAGE_EDIT: string;\n DIALOG_MESSAGE_SAVE: string;\n DIALOG_MESSAGE_DELETE: string;\n /** GroupChannel > Dialog > Message > Delete confirm */\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** GroupChannel > Dialog > Message > Failed */\n DIALOG_MESSAGE_FAILED_RETRY: string;\n DIALOG_MESSAGE_FAILED_REMOVE: string;\n\n /** GroupChannel > Dialog > Attachments */\n DIALOG_ATTACHMENT_CAMERA: string;\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: string;\n DIALOG_ATTACHMENT_FILES: string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_NOTIFICATION: string;\n MENU_MEMBERS: string;\n MENU_LEAVE_CHANNEL: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelMembers > UserBar */\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n /** GroupChannelMembers > Dialog */\n DIALOG_USER_DISMISS_OPERATOR: string;\n DIALOG_USER_MUTE: string;\n DIALOG_USER_BAN: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n // UI\n LABELS: {\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n };\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n };\n}\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n return {\n GROUP_CHANNEL: {\n HEADER_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_BANNER_FROZEN: 'Channel is frozen',\n LIST_DATE_SEPARATOR: (date, locale) => dateSeparator(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => messageTime(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n INPUT_PLACEHOLDER_DISABLED: 'Chat is unavailable in this channel',\n INPUT_EDIT_OK: 'Save',\n INPUT_EDIT_CANCEL: 'Cancel',\n\n DIALOG_MESSAGE_COPY: 'Copy',\n DIALOG_MESSAGE_EDIT: 'Edit',\n DIALOG_MESSAGE_SAVE: 'Save',\n DIALOG_MESSAGE_DELETE: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_MESSAGE_FAILED_RETRY: 'Retry',\n DIALOG_MESSAGE_FAILED_REMOVE: 'Remove',\n\n DIALOG_ATTACHMENT_CAMERA: 'Camera',\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n DIALOG_ATTACHMENT_FILES: 'Files',\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_NOTIFICATION: 'Notifications',\n MENU_MEMBERS: 'Members',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => getGroupChannelLastMessage(channel),\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n DIALOG_USER_DISMISS_OPERATOR: 'Dismiss operator',\n DIALOG_USER_MUTE: 'Mute',\n DIALOG_USER_BAN: 'Ban',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n LABELS: {\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n ...overrides?.LABELS,\n },\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: 'No banned members',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n ...overrides?.TOAST,\n },\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createBaseStringSet","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","GROUP_CHANNEL","HEADER_TITLE","currentUserId","channel","getGroupChannelTitle","LIST_BANNER_FROZEN","LIST_DATE_SEPARATOR","date","locale","dateSeparator","LIST_BUTTON_NEW_MSG","newMessages","length","MESSAGE_BUBBLE_TIME","message","messageTime","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","INPUT_PLACEHOLDER_ACTIVE","INPUT_PLACEHOLDER_DISABLED","INPUT_EDIT_OK","INPUT_EDIT_CANCEL","DIALOG_MESSAGE_COPY","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_SAVE","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","DIALOG_MESSAGE_DELETE_CONFIRM_OK","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_FAILED_RETRY","DIALOG_MESSAGE_FAILED_REMOVE","DIALOG_ATTACHMENT_CAMERA","DIALOG_ATTACHMENT_PHOTO_LIBRARY","DIALOG_ATTACHMENT_FILES","GROUP_CHANNEL_SETTINGS","HEADER_RIGHT","MENU_NOTIFICATION","MENU_MEMBERS","MENU_LEAVE_CHANNEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","getGroupChannelLastMessage","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","DIALOG_USER_DISMISS_OPERATOR","DIALOG_USER_MUTE","DIALOG_USER_BAN","GROUP_CHANNEL_CREATE","selectedUsers","len","GROUP_CHANNEL_INVITE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","userNames","map","u","nickname","join","FILE_VIEWER","TITLE","sender","SUBTITLE","PLACEHOLDER","NO_BANNED_MEMBERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR"],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n PartialDeep,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport {\n dateSeparator,\n getGroupChannelLastMessage,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n messageTime,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_BANNER_FROZEN: string;\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Input */\n INPUT_PLACEHOLDER_ACTIVE: string;\n INPUT_PLACEHOLDER_DISABLED: string;\n INPUT_EDIT_OK: string;\n INPUT_EDIT_CANCEL: string;\n\n /** GroupChannel > Dialog > Message */\n DIALOG_MESSAGE_COPY: string;\n DIALOG_MESSAGE_EDIT: string;\n DIALOG_MESSAGE_SAVE: string;\n DIALOG_MESSAGE_DELETE: string;\n /** GroupChannel > Dialog > Message > Delete confirm */\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** GroupChannel > Dialog > Message > Failed */\n DIALOG_MESSAGE_FAILED_RETRY: string;\n DIALOG_MESSAGE_FAILED_REMOVE: string;\n\n /** GroupChannel > Dialog > Attachments */\n DIALOG_ATTACHMENT_CAMERA: string;\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: string;\n DIALOG_ATTACHMENT_FILES: string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_NOTIFICATION: string;\n MENU_MEMBERS: string;\n MENU_LEAVE_CHANNEL: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelMembers > UserBar */\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n /** GroupChannelMembers > Dialog */\n DIALOG_USER_DISMISS_OPERATOR: string;\n DIALOG_USER_MUTE: string;\n DIALOG_USER_BAN: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n // UI\n LABELS: {\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n };\n}\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n return {\n GROUP_CHANNEL: {\n HEADER_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_BANNER_FROZEN: 'Channel is frozen',\n LIST_DATE_SEPARATOR: (date, locale) => dateSeparator(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => messageTime(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n INPUT_PLACEHOLDER_DISABLED: 'Chat is unavailable in this channel',\n INPUT_EDIT_OK: 'Save',\n INPUT_EDIT_CANCEL: 'Cancel',\n\n DIALOG_MESSAGE_COPY: 'Copy',\n DIALOG_MESSAGE_EDIT: 'Edit',\n DIALOG_MESSAGE_SAVE: 'Save',\n DIALOG_MESSAGE_DELETE: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_MESSAGE_FAILED_RETRY: 'Retry',\n DIALOG_MESSAGE_FAILED_REMOVE: 'Remove',\n\n DIALOG_ATTACHMENT_CAMERA: 'Camera',\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n DIALOG_ATTACHMENT_FILES: 'Files',\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_NOTIFICATION: 'Notifications',\n MENU_MEMBERS: 'Members',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => getGroupChannelLastMessage(channel),\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n DIALOG_USER_DISMISS_OPERATOR: 'Dismiss operator',\n DIALOG_USER_MUTE: 'Mute',\n DIALOG_USER_BAN: 'Ban',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n LABELS: {\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n ...overrides?.LABELS,\n },\n FILE_VIEWER: {\n TITLE: (message) => message.sender?.nickname || USER_NO_NAME,\n SUBTITLE: (message) => messageTime(new Date(message.createdAt), dateLocale),\n },\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: 'No banned members',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n ...overrides?.TOAST,\n },\n };\n};\n"],"mappings":";;;;;;;AASA;;AAyKA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,mBAAmB,GAAG,QAAkE;EAAA;;EAAA,IAAjE;IAAEC,UAAF;IAAcC;EAAd,CAAiE;EACnG,MAAMC,YAAY,GAAG,CAAAD,SAAS,SAAT,IAAAA,SAAS,WAAT,iCAAAA,SAAS,CAAEE,MAAX,wEAAmBD,YAAnB,KAAmC,WAAxD;EACA,MAAME,kBAAkB,GAAG,CAAAH,SAAS,SAAT,IAAAA,SAAS,WAAT,kCAAAA,SAAS,CAAEE,MAAX,0EAAmBC,kBAAnB,KAAyC,cAApE;EACA,OAAO;IACLC,aAAa,EAAE;MACbC,YAAY,EAAE,CAACC,aAAD,EAAgBC,OAAhB,KACZ,IAAAC,gCAAA,EAAqBF,aAArB,EAAoCC,OAApC,EAA6CN,YAA7C,EAA2DE,kBAA3D,CAFW;MAGbM,kBAAkB,EAAE,mBAHP;MAIbC,mBAAmB,EAAE,CAACC,IAAD,EAAOC,MAAP,KAAkB,IAAAC,yBAAA,EAAcF,IAAd,EAAoBC,MAAM,IAAIb,UAA9B,CAJ1B;MAKbe,mBAAmB,EAAGC,WAAD,IAAkB,GAAEA,WAAW,CAACC,MAAO,eAL/C;MAObC,mBAAmB,EAAE,CAACC,OAAD,EAAUN,MAAV,KAAqB,IAAAO,uBAAA,EAAY,IAAIC,IAAJ,CAASF,OAAO,CAACG,SAAjB,CAAZ,EAAyCT,MAAM,IAAIb,UAAnD,CAP7B;MAQbuB,yBAAyB,EAAGJ,OAAD,IAAaA,OAAO,CAACK,IARnC;MASbC,6BAA6B,EAAE,WATlB;MAUbC,4BAA4B,EAAE,MAAM,wBAVvB;MAWbC,2BAA2B,EAAE,MAAM,2BAXtB;MAabC,wBAAwB,EAAE,eAbb;MAcbC,0BAA0B,EAAE,qCAdf;MAebC,aAAa,EAAE,MAfF;MAgBbC,iBAAiB,EAAE,QAhBN;MAkBbC,mBAAmB,EAAE,MAlBR;MAmBbC,mBAAmB,EAAE,MAnBR;MAoBbC,mBAAmB,EAAE,MApBR;MAqBbC,qBAAqB,EAAE,QArBV;MAsBbC,mCAAmC,EAAE,iBAtBxB;MAuBbC,gCAAgC,EAAE,QAvBrB;MAwBbC,oCAAoC,EAAE,QAxBzB;MAyBbC,2BAA2B,EAAE,OAzBhB;MA0BbC,4BAA4B,EAAE,QA1BjB;MA4BbC,wBAAwB,EAAE,QA5Bb;MA6BbC,+BAA+B,EAAE,eA7BpB;MA8BbC,uBAAuB,EAAE,OA9BZ;MA+Bb,IAAG1C,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEI,aAAd;IA/Ba,CADV;IAkCLuC,sBAAsB,EAAE;MACtBtC,YAAY,EAAE,qBADQ;MAEtBuC,YAAY,EAAE,MAFQ;MAGtBC,iBAAiB,EAAE,eAHG;MAItBC,YAAY,EAAE,SAJQ;MAKtBC,kBAAkB,EAAE,eALE;MAMtBC,kBAAkB,EAAE,qBANE;MAOtBC,+BAA+B,EAAE,qBAPX;MAQtBC,qCAAqC,EAAE,YARjB;MAStBC,4BAA4B,EAAE,MATR;MAUtBC,gCAAgC,EAAE,QAVZ;MAWtBC,mBAAmB,EAAE,sBAXC;MAYtBC,8BAA8B,EAAE,sBAZV;MAatBC,+BAA+B,EAAE,YAbX;MActBC,sCAAsC,EAAE,cAdlB;MAetB,IAAGxD,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAE2C,sBAAd;IAfsB,CAlCnB;IAmDLc,kBAAkB,EAAE;MAClBpD,YAAY,EAAE,UADI;MAElBqD,qBAAqB,EAAE,CAACpD,aAAD,EAAgBC,OAAhB,KACrB,IAAAC,gCAAA,EAAqBF,aAArB,EAAoCC,OAApC,EAA6CN,YAA7C,EAA2DE,kBAA3D,CAHgB;MAIlBwD,6BAA6B,EAAE,CAACpD,OAAD,EAAUK,MAAV,KAAqB,IAAAgD,sCAAA,EAA2BrD,OAA3B,EAAoCK,MAAM,IAAIb,UAA9C,CAJlC;MAKlB8D,oBAAoB,EAAGtD,OAAD,IAAa,IAAAuD,sCAAA,EAA2BvD,OAA3B,CALjB;MAMlBwD,0BAA0B,EAAE,cANV;MAOlBC,mBAAmB,EAAE,OAPH;MAQlBC,yBAAyB,EAAE,aART;MASlBC,uBAAuB,EAAE,WATP;MAUlBC,oBAAoB,EAAE,CAAC7D,aAAD,EAAgBC,OAAhB,KACpB,IAAAC,gCAAA,EAAqBF,aAArB,EAAoCC,OAApC,EAA6CN,YAA7C,EAA2DE,kBAA3D,CAXgB;MAYlBiE,2BAA2B,EAAG7D,OAAD,IAAa;QACxC,IAAI,CAACA,OAAL,EAAc,OAAO,EAAP;QACd,IAAIA,OAAO,CAAC8D,mBAAR,KAAgC,KAApC,EAA2C,OAAO,uBAAP;QAC3C,OAAO,wBAAP;MACD,CAhBiB;MAiBlBC,oBAAoB,EAAE,eAjBJ;MAkBlB,IAAGtE,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEyD,kBAAd;IAlBkB,CAnDf;IAuELc,qBAAqB,EAAE;MACrBlE,YAAY,EAAE,SADO;MAErBmE,mBAAmB,EAAE,QAFA;MAGrBC,iBAAiB,EAAE,UAHE;MAIrBC,4BAA4B,EAAE,kBAJT;MAKrBC,gBAAgB,EAAE,MALG;MAMrBC,eAAe,EAAE,KANI;MAOrB,IAAG5E,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEuE,qBAAd;IAPqB,CAvElB;IAgFLM,oBAAoB,EAAE;MACpBxE,YAAY,EAAE,aADM;MAEpBuC,YAAY,EAAE,SAAuB;QAAA,IAAtB;UAAEkC;QAAF,CAAsB;QACnC,MAAMC,GAAG,GAAGD,aAAa,CAAC9D,MAA1B;QACA,IAAI+D,GAAG,KAAK,CAAZ,EAAe,OAAO,QAAP;QACf,OAAQ,WAAUA,GAAI,GAAtB;MACD,CANmB;MAOpB,IAAG/E,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAE6E,oBAAd;IAPoB,CAhFjB;IAyFLG,oBAAoB,EAAE;MACpB3E,YAAY,EAAE,cADM;MAEpBuC,YAAY,EAAE,SAAuB;QAAA,IAAtB;UAAEkC;QAAF,CAAsB;QACnC,MAAMC,GAAG,GAAGD,aAAa,CAAC9D,MAA1B;QACA,IAAI+D,GAAG,KAAK,CAAZ,EAAe,OAAO,QAAP;QACf,OAAQ,WAAUA,GAAI,GAAtB;MACD,CANmB;MAOpB,IAAG/E,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEgF,oBAAd;IAPoB,CAzFjB;IAkGL9E,MAAM,EAAE;MACND,YADM;MAENE,kBAFM;MAGN8E,wBAAwB,EAAE,UAACC,KAAD,EAAmC;QAAA,IAA3BC,OAA2B,uEAAjBlF,YAAiB;QAC3D,MAAMmF,SAAS,GAAGF,KAAK,CAACG,GAAN,CAAWC,CAAD,IAAOA,CAAC,CAACC,QAAF,IAAcJ,OAA/B,CAAlB;QACA,IAAIC,SAAS,CAACpE,MAAV,KAAqB,CAAzB,EAA4B;QAC5B,IAAIoE,SAAS,CAACpE,MAAV,KAAqB,CAAzB,EAA4B,OAAQ,GAAEoE,SAAS,CAAC,CAAD,CAAI,eAAvB;QAC5B,IAAIF,KAAK,CAAClE,MAAN,KAAiB,CAArB,EAAwB,OAAQ,GAAEoE,SAAS,CAACI,IAAV,CAAe,OAAf,CAAwB,gBAAlC;QACxB,OAAO,8BAAP;MACD,CATK;MAUN,IAAGxF,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEE,MAAd;IAVM,CAlGH;IA8GLuF,WAAW,EAAE;MACXC,KAAK,EAAGxE,OAAD;QAAA;;QAAA,OAAa,oBAAAA,OAAO,CAACyE,MAAR,oEAAgBJ,QAAhB,KAA4BtF,YAAzC;MAAA,CADI;MAEX2F,QAAQ,EAAG1E,OAAD,IAAa,IAAAC,uBAAA,EAAY,IAAIC,IAAJ,CAASF,OAAO,CAACG,SAAjB,CAAZ,EAAyCtB,UAAzC;IAFZ,CA9GR;IAkHL8F,WAAW,EAAE;MACXC,iBAAiB,EAAE,mBADR;MAEXC,QAAQ,EAAE,UAFC;MAGXC,WAAW,EAAE,aAHF;MAIXC,WAAW,EAAE,aAJF;MAKXC,gBAAgB,EAAE,kBALP;MAMXC,gBAAgB,EAAE,kBANP;MAOX,IAAGnG,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAE6F,WAAd,CAPW;MAQXO,KAAK,EAAE;QACLC,OAAO,EAAE,sBADJ;QAELC,WAAW,EAAE,OAFR;QAGL,IAAGtG,SAAH,aAAGA,SAAH,gDAAGA,SAAS,CAAE6F,WAAd,0DAAG,sBAAwBO,KAA3B;MAHK;IARI,CAlHR;IAgILG,MAAM,EAAE;MACNC,gBAAgB,EAAE,IADZ;MAENC,iBAAiB,EAAE,QAFb;MAGNC,qBAAqB,EAAE,QAHjB;MAINC,0BAA0B,EAAE,OAJtB;MAKN,IAAG3G,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAEuG,MAAd;IALM,CAhIH;IAuILK,KAAK,EAAE;MACLC,OAAO,EAAE,QADJ;MAELC,cAAc,EAAE,gBAFX;MAGLC,WAAW,EAAE,YAHR;MAILC,cAAc,EAAE,yBAJX;MAKLC,iBAAiB,EAAE,uBALd;MAMLC,gBAAgB,EAAE,sBANb;MAOLC,wBAAwB,EAAE,8BAPrB;MAQLC,gBAAgB,EAAE,0BARb;MASLC,gBAAgB,EAAE,wBATb;MAULC,cAAc,EAAE,wBAVX;MAWLC,gBAAgB,EAAE,wBAXb;MAYLC,2BAA2B,EAAE,iCAZxB;MAaLC,4BAA4B,EAAE,kCAbzB;MAcLC,mBAAmB,EAAE,yBAdhB;MAeL,IAAG1H,SAAH,aAAGA,SAAH,uBAAGA,SAAS,CAAE4G,KAAd;IAfK;EAvIF,CAAP;AAyJD,CA5JM"}
|
|
@@ -65,8 +65,11 @@ const createExpoFileService = _ref => {
|
|
|
65
65
|
case 'video':
|
|
66
66
|
return imagePickerModule.MediaTypeOptions.Videos;
|
|
67
67
|
|
|
68
|
-
|
|
68
|
+
case 'all':
|
|
69
69
|
return imagePickerModule.MediaTypeOptions.All;
|
|
70
|
+
|
|
71
|
+
default:
|
|
72
|
+
return imagePickerModule.MediaTypeOptions.Images;
|
|
70
73
|
}
|
|
71
74
|
})()
|
|
72
75
|
});
|
|
@@ -101,7 +104,23 @@ const createExpoFileService = _ref => {
|
|
|
101
104
|
}
|
|
102
105
|
}
|
|
103
106
|
|
|
104
|
-
const response = await imagePickerModule.launchImageLibraryAsync(
|
|
107
|
+
const response = await imagePickerModule.launchImageLibraryAsync({
|
|
108
|
+
mediaTypes: (() => {
|
|
109
|
+
switch (options === null || options === void 0 ? void 0 : options.mediaType) {
|
|
110
|
+
case 'photo':
|
|
111
|
+
return imagePickerModule.MediaTypeOptions.Images;
|
|
112
|
+
|
|
113
|
+
case 'video':
|
|
114
|
+
return imagePickerModule.MediaTypeOptions.Videos;
|
|
115
|
+
|
|
116
|
+
case 'all':
|
|
117
|
+
return imagePickerModule.MediaTypeOptions.All;
|
|
118
|
+
|
|
119
|
+
default:
|
|
120
|
+
return imagePickerModule.MediaTypeOptions.Images;
|
|
121
|
+
}
|
|
122
|
+
})()
|
|
123
|
+
});
|
|
105
124
|
if (response.cancelled) return null;
|
|
106
125
|
const {
|
|
107
126
|
uri
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailureWithToastMessage","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","launchImageLibraryAsync","openDocument","getDocumentAsync","mimeType","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","fileType","match","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n default:\n return imagePickerModule.MediaTypeOptions.All;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync();\n if (response.cancelled) return null;\n const { uri } = response;\n\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return [fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext })];\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailureWithToastMessage","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","launchImageLibraryAsync","openDocument","getDocumentAsync","mimeType","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","fileType","match","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n if (response.cancelled) return null;\n const { uri } = response;\n\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return [fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext })];\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
|