stream-chat-react-native-core 5.4.4-beta.1 → 5.5.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Message/hooks/useMessageActions.js +17 -15
- package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js +1 -1
- package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js +1 -1
- package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/commonjs/native.js +7 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/hooks/useMessageActions.js +17 -15
- package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
- package/lib/module/components/Message/utils/messageActions.js +1 -1
- package/lib/module/components/Message/utils/messageActions.js.map +1 -1
- package/lib/module/components/MessageList/utils/getReadStates.js +1 -1
- package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
- package/lib/module/native.js +7 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
- package/lib/typescript/components/Message/utils/messageActions.d.ts +1 -1
- package/lib/typescript/native.d.ts +3 -0
- package/package.json +1 -1
- package/src/components/Message/hooks/useMessageActions.tsx +17 -14
- package/src/components/Message/utils/messageActions.ts +2 -2
- package/src/components/MessageList/utils/getReadStates.ts +1 -1
- package/src/native.ts +8 -0
- package/src/version.json +1 -1
|
@@ -19,6 +19,8 @@ var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
|
|
|
19
19
|
|
|
20
20
|
var _icons = require("../../../icons");
|
|
21
21
|
|
|
22
|
+
var _native = require("../../../native");
|
|
23
|
+
|
|
22
24
|
var _utils = require("../../../utils/utils");
|
|
23
25
|
|
|
24
26
|
var _removeReservedFields = require("../utils/removeReservedFields");
|
|
@@ -143,13 +145,13 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
143
145
|
__self: _this,
|
|
144
146
|
__source: {
|
|
145
147
|
fileName: _jsxFileName,
|
|
146
|
-
lineNumber:
|
|
148
|
+
lineNumber: 147,
|
|
147
149
|
columnNumber: 11
|
|
148
150
|
}
|
|
149
151
|
}),
|
|
150
152
|
title: (_message$user3 = message.user) != null && _message$user3.banned ? t('Unblock User') : t('Block User')
|
|
151
153
|
};
|
|
152
|
-
var copyMessage = {
|
|
154
|
+
var copyMessage = _native.setClipboardString !== null ? {
|
|
153
155
|
action: function action() {
|
|
154
156
|
setOverlay('none');
|
|
155
157
|
|
|
@@ -157,7 +159,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
157
159
|
handleCopy(message);
|
|
158
160
|
}
|
|
159
161
|
|
|
160
|
-
|
|
162
|
+
(0, _native.setClipboardString)(message.text || '');
|
|
161
163
|
},
|
|
162
164
|
actionType: 'copyMessage',
|
|
163
165
|
icon: _react["default"].createElement(_icons.Copy, {
|
|
@@ -165,12 +167,12 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
165
167
|
__self: _this,
|
|
166
168
|
__source: {
|
|
167
169
|
fileName: _jsxFileName,
|
|
168
|
-
lineNumber:
|
|
169
|
-
columnNumber:
|
|
170
|
+
lineNumber: 162,
|
|
171
|
+
columnNumber: 17
|
|
170
172
|
}
|
|
171
173
|
}),
|
|
172
174
|
title: t('Copy Message')
|
|
173
|
-
};
|
|
175
|
+
} : undefined;
|
|
174
176
|
var deleteMessage = {
|
|
175
177
|
action: function action() {
|
|
176
178
|
setOverlay('alert');
|
|
@@ -224,7 +226,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
224
226
|
__self: _this,
|
|
225
227
|
__source: {
|
|
226
228
|
fileName: _jsxFileName,
|
|
227
|
-
lineNumber:
|
|
229
|
+
lineNumber: 194,
|
|
228
230
|
columnNumber: 11
|
|
229
231
|
}
|
|
230
232
|
}),
|
|
@@ -249,7 +251,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
249
251
|
__self: _this,
|
|
250
252
|
__source: {
|
|
251
253
|
fileName: _jsxFileName,
|
|
252
|
-
lineNumber:
|
|
254
|
+
lineNumber: 208,
|
|
253
255
|
columnNumber: 11
|
|
254
256
|
}
|
|
255
257
|
}),
|
|
@@ -273,7 +275,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
273
275
|
__self: _this,
|
|
274
276
|
__source: {
|
|
275
277
|
fileName: _jsxFileName,
|
|
276
|
-
lineNumber:
|
|
278
|
+
lineNumber: 221,
|
|
277
279
|
columnNumber: 11
|
|
278
280
|
}
|
|
279
281
|
}),
|
|
@@ -295,7 +297,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
295
297
|
__self: _this,
|
|
296
298
|
__source: {
|
|
297
299
|
fileName: _jsxFileName,
|
|
298
|
-
lineNumber:
|
|
300
|
+
lineNumber: 234,
|
|
299
301
|
columnNumber: 11
|
|
300
302
|
}
|
|
301
303
|
}),
|
|
@@ -375,7 +377,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
375
377
|
__self: _this,
|
|
376
378
|
__source: {
|
|
377
379
|
fileName: _jsxFileName,
|
|
378
|
-
lineNumber:
|
|
380
|
+
lineNumber: 287,
|
|
379
381
|
columnNumber: 11
|
|
380
382
|
}
|
|
381
383
|
}),
|
|
@@ -449,7 +451,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
449
451
|
__self: _this,
|
|
450
452
|
__source: {
|
|
451
453
|
fileName: _jsxFileName,
|
|
452
|
-
lineNumber:
|
|
454
|
+
lineNumber: 315,
|
|
453
455
|
columnNumber: 11
|
|
454
456
|
}
|
|
455
457
|
}),
|
|
@@ -471,7 +473,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
471
473
|
__self: _this,
|
|
472
474
|
__source: {
|
|
473
475
|
fileName: _jsxFileName,
|
|
474
|
-
lineNumber:
|
|
476
|
+
lineNumber: 328,
|
|
475
477
|
columnNumber: 11
|
|
476
478
|
}
|
|
477
479
|
}),
|
|
@@ -515,7 +517,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
515
517
|
__self: _this,
|
|
516
518
|
__source: {
|
|
517
519
|
fileName: _jsxFileName,
|
|
518
|
-
lineNumber:
|
|
520
|
+
lineNumber: 343,
|
|
519
521
|
columnNumber: 11
|
|
520
522
|
}
|
|
521
523
|
}),
|
|
@@ -537,7 +539,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
537
539
|
__self: _this,
|
|
538
540
|
__source: {
|
|
539
541
|
fileName: _jsxFileName,
|
|
540
|
-
lineNumber:
|
|
542
|
+
lineNumber: 356,
|
|
541
543
|
columnNumber: 11
|
|
542
544
|
}
|
|
543
545
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useMessageActions.tsx"],"names":["useMessageActions","channel","client","enforceUniqueReaction","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","message","onThreadSelect","openThread","removeMessage","retrySendMessage","selectReaction","setEditingState","setOverlay","setQuotedMessageState","supportedReactions","t","updateMessage","theme","colors","accent_blue","accent_red","grey","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","error","type","status","MessageStatusTypes","FAILED","onOpenThread","isMuted","mutedUsers","some","mute","user","id","userID","target","blockUser","action","actionType","icon","title","banned","copyMessage","Clipboard","setString","text","deleteMessage","Alert","alert","onPress","style","cancelable","titleStyle","color","editMessage","pinMessage","unpinMessage","flagMessage","reactionType","undefined","muteUser","quotedReply","retry","messageWithoutReservedFields","threadReply"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Alert, Clipboard } from 'react-native';\n\nimport { useMessageActionHandlers } from './useMessageActionHandlers';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { OverlayContextValue } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n Pin,\n SendUp,\n ThreadReply,\n Unpin,\n UserDelete,\n} from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\nimport { removeReservedFields } from '../utils/removeReservedFields';\n\nexport const useMessageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleQuotedReply'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleRetry'\n | 'handleReaction'\n | 'handleThreadReply'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'selectReaction'\n | 'supportedReactions'\n | 'updateMessage'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'> &\n Pick<TranslationContextValue, 't'> & {\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n }) => {\n const {\n theme: {\n colors: { accent_blue, accent_red, grey },\n },\n } = useTheme();\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const blockUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n actionType: 'blockUser',\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage: MessageActionType = {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n actionType: 'copyMessage',\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'deleteMessage',\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n actionType: 'editMessage',\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const pinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'pinMessage',\n icon: <Pin height={23} pathFill={grey} width={24} />,\n title: t('Pin to Conversation'),\n };\n\n const unpinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'unpinMessage',\n icon: <Unpin pathFill={grey} />,\n title: t('Unpin from Conversation'),\n };\n\n const flagMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t('Do you want to send a copy of this message to a moderator for further investigation?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n } catch (_) {\n Alert.alert(\n t('Cannot Flag Message'),\n t(\n 'Flag action failed either due to a network issue or the message is already flagged',\n ),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'flagMessage',\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n actionType: 'muteUser',\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n actionType: 'quotedReply',\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry: MessageActionType = {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n actionType: 'retry',\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n actionType: 'threadReply',\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n return {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["useMessageActions.tsx"],"names":["useMessageActions","channel","client","enforceUniqueReaction","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","message","onThreadSelect","openThread","removeMessage","retrySendMessage","selectReaction","setEditingState","setOverlay","setQuotedMessageState","supportedReactions","t","updateMessage","theme","colors","accent_blue","accent_red","grey","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","error","type","status","MessageStatusTypes","FAILED","onOpenThread","isMuted","mutedUsers","some","mute","user","id","userID","target","blockUser","action","actionType","icon","title","banned","copyMessage","setClipboardString","text","undefined","deleteMessage","Alert","alert","onPress","style","cancelable","titleStyle","color","editMessage","pinMessage","unpinMessage","flagMessage","reactionType","muteUser","quotedReply","retry","messageWithoutReservedFields","threadReply"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Alert } from 'react-native';\n\nimport { useMessageActionHandlers } from './useMessageActionHandlers';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { OverlayContextValue } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n Pin,\n SendUp,\n ThreadReply,\n Unpin,\n UserDelete,\n} from '../../../icons';\nimport { setClipboardString } from '../../../native';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\nimport { removeReservedFields } from '../utils/removeReservedFields';\n\nexport const useMessageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleQuotedReply'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleRetry'\n | 'handleReaction'\n | 'handleThreadReply'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'selectReaction'\n | 'supportedReactions'\n | 'updateMessage'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'> &\n Pick<TranslationContextValue, 't'> & {\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n }) => {\n const {\n theme: {\n colors: { accent_blue, accent_red, grey },\n },\n } = useTheme();\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const blockUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n actionType: 'blockUser',\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage: MessageActionType | undefined =\n setClipboardString !== null\n ? {\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n setClipboardString(message.text || '');\n },\n actionType: 'copyMessage',\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n }\n : undefined;\n\n const deleteMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'deleteMessage',\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n actionType: 'editMessage',\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const pinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'pinMessage',\n icon: <Pin height={23} pathFill={grey} width={24} />,\n title: t('Pin to Conversation'),\n };\n\n const unpinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'unpinMessage',\n icon: <Unpin pathFill={grey} />,\n title: t('Unpin from Conversation'),\n };\n\n const flagMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t('Do you want to send a copy of this message to a moderator for further investigation?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n } catch (_) {\n Alert.alert(\n t('Cannot Flag Message'),\n t(\n 'Flag action failed either due to a network issue or the message is already flagged',\n ),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'flagMessage',\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n actionType: 'muteUser',\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n actionType: 'quotedReply',\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry: MessageActionType = {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n actionType: 'retry',\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n actionType: 'threadReply',\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n return {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["messageActions.ts"],"names":["messageActions","blockUser","copyMessage","deleteMessage","editMessage","error","flagMessage","isMyMessage","isThreadMessage","message","messageReactions","ownCapabilities","pinMessage","quotedReply","retry","threadReply","unpinMessage","undefined","actions","push","quoteMessage","sendReply","updateOwnMessage","updateAnyMessage","text","pinned","banChannelMembers","deleteOwnMessage","deleteAnyMessage"],"mappings":";;;;;AA8BO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAmBkB;AAAA,MAhB9CC,SAgB8C,QAhB9CA,SAgB8C;AAAA,MAf9CC,WAe8C,QAf9CA,WAe8C;AAAA,MAd9CC,aAc8C,QAd9CA,aAc8C;AAAA,MAb9CC,WAa8C,QAb9CA,WAa8C;AAAA,MAZ9CC,KAY8C,QAZ9CA,KAY8C;AAAA,MAX9CC,WAW8C,QAX9CA,WAW8C;AAAA,MAV9CC,WAU8C,QAV9CA,WAU8C;AAAA,MAT9CC,eAS8C,QAT9CA,eAS8C;AAAA,MAR9CC,OAQ8C,QAR9CA,OAQ8C;AAAA,MAP9CC,gBAO8C,QAP9CA,gBAO8C;AAAA,MAN9CC,eAM8C,QAN9CA,eAM8C;AAAA,MAL9CC,UAK8C,QAL9CA,UAK8C;AAAA,MAJ9CC,WAI8C,QAJ9CA,WAI8C;AAAA,MAH9CC,KAG8C,QAH9CA,KAG8C;AAAA,MAF9CC,WAE8C,QAF9CA,WAE8C;AAAA,MAD9CC,YAC8C,QAD9CA,YAC8C;;AAC9C,MAAIN,gBAAJ,EAAsB;AACpB,WAAOO,SAAP;AACD;;AAED,MAAMC,OAAwC,GAAG,EAAjD;;AAEA,MAAIb,KAAK,IAAIE,WAAb,EAA0B;AACxBW,IAAAA,OAAO,CAACC,IAAR,CAAaL,KAAb;AACD;;AAED,MAAIH,eAAe,CAACS,YAAhB,IAAgC,CAACZ,eAAjC,IAAoD,CAACH,KAAzD,EAAgE;AAC9Da,IAAAA,OAAO,CAACC,IAAR,CAAaN,WAAb;AACD;;AAED,MAAIF,eAAe,CAACU,SAAhB,IAA6B,CAACb,eAA9B,IAAiD,CAACH,KAAtD,EAA6D;AAC3Da,IAAAA,OAAO,CAACC,IAAR,CAAaJ,WAAb;AACD;;AAED,MACGR,WAAW,IAAII,eAAe,CAACW,gBAAhC,IACC,CAACf,WAAD,IAAgBI,eAAe,CAACY,gBAFnC,EAGE;AACAL,IAAAA,OAAO,CAACC,IAAR,CAAaf,WAAb;AACD;;AAED,
|
|
1
|
+
{"version":3,"sources":["messageActions.ts"],"names":["messageActions","blockUser","copyMessage","deleteMessage","editMessage","error","flagMessage","isMyMessage","isThreadMessage","message","messageReactions","ownCapabilities","pinMessage","quotedReply","retry","threadReply","unpinMessage","undefined","actions","push","quoteMessage","sendReply","updateOwnMessage","updateAnyMessage","text","pinned","banChannelMembers","deleteOwnMessage","deleteAnyMessage"],"mappings":";;;;;AA8BO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAmBkB;AAAA,MAhB9CC,SAgB8C,QAhB9CA,SAgB8C;AAAA,MAf9CC,WAe8C,QAf9CA,WAe8C;AAAA,MAd9CC,aAc8C,QAd9CA,aAc8C;AAAA,MAb9CC,WAa8C,QAb9CA,WAa8C;AAAA,MAZ9CC,KAY8C,QAZ9CA,KAY8C;AAAA,MAX9CC,WAW8C,QAX9CA,WAW8C;AAAA,MAV9CC,WAU8C,QAV9CA,WAU8C;AAAA,MAT9CC,eAS8C,QAT9CA,eAS8C;AAAA,MAR9CC,OAQ8C,QAR9CA,OAQ8C;AAAA,MAP9CC,gBAO8C,QAP9CA,gBAO8C;AAAA,MAN9CC,eAM8C,QAN9CA,eAM8C;AAAA,MAL9CC,UAK8C,QAL9CA,UAK8C;AAAA,MAJ9CC,WAI8C,QAJ9CA,WAI8C;AAAA,MAH9CC,KAG8C,QAH9CA,KAG8C;AAAA,MAF9CC,WAE8C,QAF9CA,WAE8C;AAAA,MAD9CC,YAC8C,QAD9CA,YAC8C;;AAC9C,MAAIN,gBAAJ,EAAsB;AACpB,WAAOO,SAAP;AACD;;AAED,MAAMC,OAAwC,GAAG,EAAjD;;AAEA,MAAIb,KAAK,IAAIE,WAAb,EAA0B;AACxBW,IAAAA,OAAO,CAACC,IAAR,CAAaL,KAAb;AACD;;AAED,MAAIH,eAAe,CAACS,YAAhB,IAAgC,CAACZ,eAAjC,IAAoD,CAACH,KAAzD,EAAgE;AAC9Da,IAAAA,OAAO,CAACC,IAAR,CAAaN,WAAb;AACD;;AAED,MAAIF,eAAe,CAACU,SAAhB,IAA6B,CAACb,eAA9B,IAAiD,CAACH,KAAtD,EAA6D;AAC3Da,IAAAA,OAAO,CAACC,IAAR,CAAaJ,WAAb;AACD;;AAED,MACGR,WAAW,IAAII,eAAe,CAACW,gBAAhC,IACC,CAACf,WAAD,IAAgBI,eAAe,CAACY,gBAFnC,EAGE;AACAL,IAAAA,OAAO,CAACC,IAAR,CAAaf,WAAb;AACD;;AAED,MAAIF,WAAW,KAAKe,SAAhB,IAA6BR,OAAO,CAACe,IAArC,IAA6C,CAACnB,KAAlD,EAAyD;AACvDa,IAAAA,OAAO,CAACC,IAAR,CAAajB,WAAb;AACD;;AAED,MAAI,CAACK,WAAD,IAAgBI,eAAe,CAACL,WAApC,EAAiD;AAC/CY,IAAAA,OAAO,CAACC,IAAR,CAAab,WAAb;AACD;;AAED,MAAIK,eAAe,CAACC,UAAhB,IAA8B,CAACH,OAAO,CAACgB,MAA3C,EAAmD;AACjDP,IAAAA,OAAO,CAACC,IAAR,CAAaP,UAAb;AACD;;AAED,MAAID,eAAe,CAACC,UAAhB,IAA8BH,OAAO,CAACgB,MAA1C,EAAkD;AAChDP,IAAAA,OAAO,CAACC,IAAR,CAAaH,YAAb;AACD;;AAED,MAAI,CAACT,WAAD,IAAgBI,eAAe,CAACe,iBAApC,EAAuD;AACrDR,IAAAA,OAAO,CAACC,IAAR,CAAalB,SAAb;AACD;;AAED,MACGM,WAAW,IAAII,eAAe,CAACgB,gBAAhC,IACC,CAACpB,WAAD,IAAgBI,eAAe,CAACiB,gBAFnC,EAGE;AACAV,IAAAA,OAAO,CAACC,IAAR,CAAahB,aAAb;AACD;;AAED,SAAOe,OAAP;AACD,CAzEM","sourcesContent":["import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { OwnCapabilitiesContextValue } from '../../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\n\nexport type MessageActionsParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n blockUser: MessageActionType;\n deleteMessage: MessageActionType;\n dismissOverlay: () => void;\n editMessage: MessageActionType;\n error: boolean | Error;\n flagMessage: MessageActionType;\n isThreadMessage: boolean;\n messageReactions: boolean;\n muteUser: MessageActionType;\n ownCapabilities: OwnCapabilitiesContextValue;\n pinMessage: MessageActionType;\n quotedReply: MessageActionType;\n retry: MessageActionType;\n threadReply: MessageActionType;\n unpinMessage: MessageActionType;\n copyMessage?: MessageActionType;\n} & Pick<MessageContextValue<StreamChatGenerics>, 'message' | 'isMyMessage'>;\n\nexport type MessageActionsProp<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (param: MessageActionsParams<StreamChatGenerics>) => MessageActionType[];\n\nexport const messageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n}: MessageActionsParams<StreamChatGenerics>) => {\n if (messageReactions) {\n return undefined;\n }\n\n const actions: Array<MessageActionType | null> = [];\n\n if (error && isMyMessage) {\n actions.push(retry);\n }\n\n if (ownCapabilities.quoteMessage && !isThreadMessage && !error) {\n actions.push(quotedReply);\n }\n\n if (ownCapabilities.sendReply && !isThreadMessage && !error) {\n actions.push(threadReply);\n }\n\n if (\n (isMyMessage && ownCapabilities.updateOwnMessage) ||\n (!isMyMessage && ownCapabilities.updateAnyMessage)\n ) {\n actions.push(editMessage);\n }\n\n if (copyMessage !== undefined && message.text && !error) {\n actions.push(copyMessage);\n }\n\n if (!isMyMessage && ownCapabilities.flagMessage) {\n actions.push(flagMessage);\n }\n\n if (ownCapabilities.pinMessage && !message.pinned) {\n actions.push(pinMessage);\n }\n\n if (ownCapabilities.pinMessage && message.pinned) {\n actions.push(unpinMessage);\n }\n\n if (!isMyMessage && ownCapabilities.banChannelMembers) {\n actions.push(blockUser);\n }\n\n if (\n (isMyMessage && ownCapabilities.deleteOwnMessage) ||\n (!isMyMessage && ownCapabilities.deleteAnyMessage)\n ) {\n actions.push(deleteMessage);\n }\n\n return actions;\n};\n"]}
|
|
@@ -40,7 +40,7 @@ var getReadStates = function getReadStates(clientUserId, messages, read) {
|
|
|
40
40
|
return "continue";
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
if (message.
|
|
43
|
+
if (message.created_at < member.last_read) {
|
|
44
44
|
var numberOfReads = Object.keys(read).length;
|
|
45
45
|
|
|
46
46
|
if (numberOfReads === 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,OAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,OAAO,
|
|
1
|
+
{"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","created_at","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,OAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,OAAO,CAACI,UAAR,GAAqBF,MAAM,CAACC,SAAhC,EAA2C;AAKzC,gBAAME,aAAa,GAAGR,MAAM,CAACS,IAAP,CAAYrB,IAAZ,EAAkBgB,MAAxC;;AACA,gBAAII,aAAa,KAAK,CAAtB,EAAyB;AACvBnB,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuB,IAAvB;AACD,aAFD,MAEO;AACL,kBAAMiB,sBAAsB,GAAGrB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAvC;AACAJ,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GACE,OAAOiB,sBAAP,KAAkC,SAAlC,GACIR,eAAe,GAAG,CADtB,GAEIQ,sBAAsB,GAAG,CAH/B;AAID;;AACD,gBAAMC,SAAS,GAAGZ,OAAO,CAACa,SAAR,CAAkB;AAAA;;AAAA,kBAAGC,IAAH,QAAGA,IAAH;AAAA,qBAAcA,IAAI,CAACpB,EAAL,sBAAYY,MAAM,CAACQ,IAAnB,qBAAY,aAAapB,EAAzB,CAAd;AAAA,aAAlB,CAAlB;;AACA,gBAAIkB,SAAS,KAAK,CAAC,CAAnB,EAAsB;AACpBZ,cAAAA,OAAO,CAACe,MAAR,CAAeH,SAAf,EAA0B,CAA1B;;AACA,kBAAIH,aAAa,GAAG,CAApB,EAAuB;AACrBN,gBAAAA,eAAe,IAAI,CAAnB;AACD;AACF;AACF;AAtCE;;AACL,8DAAqBH,OAArB,2CAA8B;AAAA,cAAnBM,MAAmB;;AAAA,2BAAnBA,MAAmB;;AAAA,mCAO1B;AA+BH;;AAOD,YAAIhB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,KAAyB,KAA7B,EAAoC;AAClCJ,UAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,KAA1C;AACD;AACF;AACF;AACF;;AAED,SAAOb,QAAP;AACD,CArGM","sourcesContent":["import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const getReadStates = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n clientUserId: string | undefined,\n messages:\n | PaginatedMessageListContextValue<StreamChatGenerics>['messages']\n | ThreadContextValue<StreamChatGenerics>['threadMessages'],\n read?: ChannelContextValue<StreamChatGenerics>['read'],\n) => {\n const readData = messages.reduce((acc, cur) => {\n if (cur.id) {\n acc[cur.id] = false;\n }\n return acc;\n }, {} as { [key: string]: boolean | number });\n\n const filteredMessagesReversed = messages.filter((msg) => msg.updated_at).reverse();\n\n if (read) {\n /**\n * Channel read state is stored by user and we only care about users who aren't the client\n */\n if (clientUserId) {\n delete read[clientUserId];\n }\n const members = Object.values(read);\n\n /**\n * Track number of members who have read previous messages\n */\n let memberReadCount = 0;\n\n /**\n * Array is in reverse order so newest message is at 0,\n * we find the index of the first message that is older\n * than the last read and then set last read to that, or\n * if there are no newer messages, the first message is\n * last read message.\n */\n for (const message of filteredMessagesReversed) {\n /**\n * If all members are removed then they have read these\n * messages. We do not increment memberReadCount for 1:1\n * chats, so this should be true, not a number in that case.\n */\n if (!members.length) {\n readData[message.id] = memberReadCount || true;\n } else {\n for (const member of members) {\n /**\n * If no last read continue, we can't remove the user\n * because this would mark all messages in a new channel\n * true until at least one other user reads a message.\n */\n if (!member.last_read) {\n continue;\n }\n\n /**\n * If there there is a last read message add the user\n * to the array of last reads for that message and remove\n * the user from the list of users being checked\n */\n if (message.created_at < member.last_read) {\n /**\n * if this is a direct message the length will be 1\n * as we already deleted the current user from the object\n */\n const numberOfReads = Object.keys(read).length;\n if (numberOfReads === 1) {\n readData[message.id] = true;\n } else {\n const currentMessageReadData = readData[message.id];\n readData[message.id] =\n typeof currentMessageReadData === 'boolean'\n ? memberReadCount + 1\n : currentMessageReadData + 1;\n }\n const userIndex = members.findIndex(({ user }) => user.id === member.user?.id);\n if (userIndex !== -1) {\n members.splice(userIndex, 1);\n if (numberOfReads > 1) {\n memberReadCount += 1;\n }\n }\n }\n }\n\n /**\n * If this is not the last message for a user this will still be\n * set to false. But if other users have read further the number\n * should be how many have read beyond this message.\n */\n if (readData[message.id] === false) {\n readData[message.id] = memberReadCount || false;\n }\n }\n }\n }\n\n return readData;\n};\n"]}
|
package/lib/commonjs/native.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", {
|
|
2
2
|
value: true
|
|
3
3
|
});
|
|
4
|
-
exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.isVideoPackageAvailable = exports.isAudioPackageAvailable = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.Sound = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
|
|
4
|
+
exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.setClipboardString = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.isVideoPackageAvailable = exports.isAudioPackageAvailable = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.Sound = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
|
|
5
5
|
|
|
6
6
|
var _reactNative = require("react-native");
|
|
7
7
|
|
|
@@ -28,6 +28,8 @@ var pickDocument = fail;
|
|
|
28
28
|
exports.pickDocument = pickDocument;
|
|
29
29
|
var saveFile = fail;
|
|
30
30
|
exports.saveFile = saveFile;
|
|
31
|
+
var setClipboardString = fail;
|
|
32
|
+
exports.setClipboardString = setClipboardString;
|
|
31
33
|
var shareImage = fail;
|
|
32
34
|
exports.shareImage = shareImage;
|
|
33
35
|
var takePhoto = fail;
|
|
@@ -97,6 +99,10 @@ var registerNativeHandlers = function registerNativeHandlers(handlers) {
|
|
|
97
99
|
if (handlers.Video) {
|
|
98
100
|
exports.Video = Video = handlers.Video;
|
|
99
101
|
}
|
|
102
|
+
|
|
103
|
+
if (handlers.setClipboardString !== undefined) {
|
|
104
|
+
exports.setClipboardString = setClipboardString = handlers.setClipboardString;
|
|
105
|
+
}
|
|
100
106
|
};
|
|
101
107
|
|
|
102
108
|
exports.registerNativeHandlers = registerNativeHandlers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"mappings":";;;;;AACA;;AAMA,IAAMA,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAMC,KAAK,CACT,mGADS,CAAX;AAGD,CAJD;;AAiBO,IAAIC,aAA4B,GAAGF,IAAnC;;AAGA,IAAIG,UAAsB,GAAGH,IAA7B;;AAGA,IAAII,gBAAkC,GAAGJ,IAAzC;;AASA,IAAIK,SAAoB,GAAGL,IAA3B;;AAOA,IAAIM,QAAQ,GAAGC,qBAAf;;AAEA,IAAIC,OAAgB,GAAG;AAC5BC,EAAAA,gBAAgB,EAAET,IADU;AAE5BU,EAAAA,KAAK,EAAEV;AAFqB,CAAvB;;AAWA,IAAIW,YAA0B,GAAGX,IAAjC;;AAOA,IAAIY,QAAkB,GAAGZ,IAAzB;;AAOA,IAAIa,UAAsB,GAAGb,IAA7B;;AASA,IAAIc,SAAoB,GAAGd,IAA3B;;AAWA,IAAIe,aAA4B,GAAGf,IAAnC;;AAwBA,IAAIgB,GAAJ;;AA8CA,IAAIC,KAAJ;;AA2CA,IAAIC,KAAJ;;;AAmBA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,QAAD,EAAwB;AAC5D,MAAIA,QAAQ,CAAClB,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGkB,QAAQ,CAAClB,aAAzB;AACD;;AAED,MAAIkB,QAAQ,CAACjB,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGiB,QAAQ,CAACjB,UAAtB;AACD;;AAED,MAAIiB,QAAQ,CAACd,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGc,QAAQ,CAACd,QAApB;AACD;;AACD,MAAIc,QAAQ,CAACZ,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGY,QAAQ,CAACZ,OAAnB;AACD;;AAED,MAAIY,QAAQ,CAAChB,gBAAb,EAA+B;AAC7B,+BAAAA,gBAAgB,GAAGgB,QAAQ,CAAChB,gBAA5B;AACD;;AAED,MAAIgB,QAAQ,CAACf,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGe,QAAQ,CAACf,SAArB;AACD;;AAED,MAAIe,QAAQ,CAACT,YAAb,EAA2B;AACzB,2BAAAA,YAAY,GAAGS,QAAQ,CAACT,YAAxB;AACD;;AAED,MAAIS,QAAQ,CAACR,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGQ,QAAQ,CAACR,QAApB;AACD;;AAED,MAAIQ,QAAQ,CAACJ,GAAb,EAAkB;AAChB,kBAAAA,GAAG,GAAGI,QAAQ,CAACJ,GAAf;AACD;;AAED,MAAII,QAAQ,CAACP,UAAT,KAAwBQ,SAA5B,EAAuC;AACrC,yBAAAR,UAAU,GAAGO,QAAQ,CAACP,UAAtB;AACD;;AAED,MAAIO,QAAQ,CAACH,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGG,QAAQ,CAACH,KAAjB;AACD;;AAED,MAAIG,QAAQ,CAACN,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGM,QAAQ,CAACN,SAArB;AACD;;AAED,MAAIM,QAAQ,CAACL,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGK,QAAQ,CAACL,aAAzB;AACD;;AAED,MAAIK,QAAQ,CAACF,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGE,QAAQ,CAACF,KAAjB;AACD;AACF,CAvDM;;;;AAyDA,IAAMI,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,SAAM,CAAC,CAACJ,KAAR;AAAA,CAAhC;;;;AACA,IAAMK,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,SAAM,CAAC,CAACN,KAAK,CAACO,MAAR,IAAkB,CAAC,CAACP,KAAK,CAACQ,eAAhC;AAAA,CAAhC","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"]}
|
|
1
|
+
{"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","setClipboardString","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype SetClipboardString = (text: string) => Promise<void> | never;\nexport let setClipboardString: SetClipboardString = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n setClipboardString?: SetClipboardString;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n\n if (handlers.setClipboardString !== undefined) {\n setClipboardString = handlers.setClipboardString;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"]}
|
|
@@ -19,6 +19,8 @@ var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
|
|
|
19
19
|
|
|
20
20
|
var _icons = require("../../../icons");
|
|
21
21
|
|
|
22
|
+
var _native = require("../../../native");
|
|
23
|
+
|
|
22
24
|
var _utils = require("../../../utils/utils");
|
|
23
25
|
|
|
24
26
|
var _removeReservedFields = require("../utils/removeReservedFields");
|
|
@@ -143,13 +145,13 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
143
145
|
__self: _this,
|
|
144
146
|
__source: {
|
|
145
147
|
fileName: _jsxFileName,
|
|
146
|
-
lineNumber:
|
|
148
|
+
lineNumber: 147,
|
|
147
149
|
columnNumber: 11
|
|
148
150
|
}
|
|
149
151
|
}),
|
|
150
152
|
title: (_message$user3 = message.user) != null && _message$user3.banned ? t('Unblock User') : t('Block User')
|
|
151
153
|
};
|
|
152
|
-
var copyMessage = {
|
|
154
|
+
var copyMessage = _native.setClipboardString !== null ? {
|
|
153
155
|
action: function action() {
|
|
154
156
|
setOverlay('none');
|
|
155
157
|
|
|
@@ -157,7 +159,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
157
159
|
handleCopy(message);
|
|
158
160
|
}
|
|
159
161
|
|
|
160
|
-
|
|
162
|
+
(0, _native.setClipboardString)(message.text || '');
|
|
161
163
|
},
|
|
162
164
|
actionType: 'copyMessage',
|
|
163
165
|
icon: _react["default"].createElement(_icons.Copy, {
|
|
@@ -165,12 +167,12 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
165
167
|
__self: _this,
|
|
166
168
|
__source: {
|
|
167
169
|
fileName: _jsxFileName,
|
|
168
|
-
lineNumber:
|
|
169
|
-
columnNumber:
|
|
170
|
+
lineNumber: 162,
|
|
171
|
+
columnNumber: 17
|
|
170
172
|
}
|
|
171
173
|
}),
|
|
172
174
|
title: t('Copy Message')
|
|
173
|
-
};
|
|
175
|
+
} : undefined;
|
|
174
176
|
var deleteMessage = {
|
|
175
177
|
action: function action() {
|
|
176
178
|
setOverlay('alert');
|
|
@@ -224,7 +226,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
224
226
|
__self: _this,
|
|
225
227
|
__source: {
|
|
226
228
|
fileName: _jsxFileName,
|
|
227
|
-
lineNumber:
|
|
229
|
+
lineNumber: 194,
|
|
228
230
|
columnNumber: 11
|
|
229
231
|
}
|
|
230
232
|
}),
|
|
@@ -249,7 +251,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
249
251
|
__self: _this,
|
|
250
252
|
__source: {
|
|
251
253
|
fileName: _jsxFileName,
|
|
252
|
-
lineNumber:
|
|
254
|
+
lineNumber: 208,
|
|
253
255
|
columnNumber: 11
|
|
254
256
|
}
|
|
255
257
|
}),
|
|
@@ -273,7 +275,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
273
275
|
__self: _this,
|
|
274
276
|
__source: {
|
|
275
277
|
fileName: _jsxFileName,
|
|
276
|
-
lineNumber:
|
|
278
|
+
lineNumber: 221,
|
|
277
279
|
columnNumber: 11
|
|
278
280
|
}
|
|
279
281
|
}),
|
|
@@ -295,7 +297,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
295
297
|
__self: _this,
|
|
296
298
|
__source: {
|
|
297
299
|
fileName: _jsxFileName,
|
|
298
|
-
lineNumber:
|
|
300
|
+
lineNumber: 234,
|
|
299
301
|
columnNumber: 11
|
|
300
302
|
}
|
|
301
303
|
}),
|
|
@@ -375,7 +377,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
375
377
|
__self: _this,
|
|
376
378
|
__source: {
|
|
377
379
|
fileName: _jsxFileName,
|
|
378
|
-
lineNumber:
|
|
380
|
+
lineNumber: 287,
|
|
379
381
|
columnNumber: 11
|
|
380
382
|
}
|
|
381
383
|
}),
|
|
@@ -449,7 +451,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
449
451
|
__self: _this,
|
|
450
452
|
__source: {
|
|
451
453
|
fileName: _jsxFileName,
|
|
452
|
-
lineNumber:
|
|
454
|
+
lineNumber: 315,
|
|
453
455
|
columnNumber: 11
|
|
454
456
|
}
|
|
455
457
|
}),
|
|
@@ -471,7 +473,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
471
473
|
__self: _this,
|
|
472
474
|
__source: {
|
|
473
475
|
fileName: _jsxFileName,
|
|
474
|
-
lineNumber:
|
|
476
|
+
lineNumber: 328,
|
|
475
477
|
columnNumber: 11
|
|
476
478
|
}
|
|
477
479
|
}),
|
|
@@ -515,7 +517,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
515
517
|
__self: _this,
|
|
516
518
|
__source: {
|
|
517
519
|
fileName: _jsxFileName,
|
|
518
|
-
lineNumber:
|
|
520
|
+
lineNumber: 343,
|
|
519
521
|
columnNumber: 11
|
|
520
522
|
}
|
|
521
523
|
}),
|
|
@@ -537,7 +539,7 @@ var useMessageActions = function useMessageActions(_ref) {
|
|
|
537
539
|
__self: _this,
|
|
538
540
|
__source: {
|
|
539
541
|
fileName: _jsxFileName,
|
|
540
|
-
lineNumber:
|
|
542
|
+
lineNumber: 356,
|
|
541
543
|
columnNumber: 11
|
|
542
544
|
}
|
|
543
545
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useMessageActions.tsx"],"names":["useMessageActions","channel","client","enforceUniqueReaction","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","message","onThreadSelect","openThread","removeMessage","retrySendMessage","selectReaction","setEditingState","setOverlay","setQuotedMessageState","supportedReactions","t","updateMessage","theme","colors","accent_blue","accent_red","grey","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","error","type","status","MessageStatusTypes","FAILED","onOpenThread","isMuted","mutedUsers","some","mute","user","id","userID","target","blockUser","action","actionType","icon","title","banned","copyMessage","Clipboard","setString","text","deleteMessage","Alert","alert","onPress","style","cancelable","titleStyle","color","editMessage","pinMessage","unpinMessage","flagMessage","reactionType","undefined","muteUser","quotedReply","retry","messageWithoutReservedFields","threadReply"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Alert, Clipboard } from 'react-native';\n\nimport { useMessageActionHandlers } from './useMessageActionHandlers';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { OverlayContextValue } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n Pin,\n SendUp,\n ThreadReply,\n Unpin,\n UserDelete,\n} from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\nimport { removeReservedFields } from '../utils/removeReservedFields';\n\nexport const useMessageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleQuotedReply'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleRetry'\n | 'handleReaction'\n | 'handleThreadReply'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'selectReaction'\n | 'supportedReactions'\n | 'updateMessage'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'> &\n Pick<TranslationContextValue, 't'> & {\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n }) => {\n const {\n theme: {\n colors: { accent_blue, accent_red, grey },\n },\n } = useTheme();\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const blockUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n actionType: 'blockUser',\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage: MessageActionType = {\n // using depreciated Clipboard from react-native until expo supports the community version or their own\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n Clipboard.setString(message.text || '');\n },\n actionType: 'copyMessage',\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n };\n\n const deleteMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'deleteMessage',\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n actionType: 'editMessage',\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const pinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'pinMessage',\n icon: <Pin height={23} pathFill={grey} width={24} />,\n title: t('Pin to Conversation'),\n };\n\n const unpinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'unpinMessage',\n icon: <Unpin pathFill={grey} />,\n title: t('Unpin from Conversation'),\n };\n\n const flagMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t('Do you want to send a copy of this message to a moderator for further investigation?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n } catch (_) {\n Alert.alert(\n t('Cannot Flag Message'),\n t(\n 'Flag action failed either due to a network issue or the message is already flagged',\n ),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'flagMessage',\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n actionType: 'muteUser',\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n actionType: 'quotedReply',\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry: MessageActionType = {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n actionType: 'retry',\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n actionType: 'threadReply',\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n return {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n };\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["useMessageActions.tsx"],"names":["useMessageActions","channel","client","enforceUniqueReaction","handleBlock","handleCopy","handleDelete","handleEdit","handleFlag","handleMute","handlePinMessage","handleQuotedReply","handleReactionProp","handleReaction","handleRetry","handleThreadReply","message","onThreadSelect","openThread","removeMessage","retrySendMessage","selectReaction","setEditingState","setOverlay","setQuotedMessageState","supportedReactions","t","updateMessage","theme","colors","accent_blue","accent_red","grey","handleDeleteMessage","handleEditMessage","handleQuotedReplyMessage","handleResendMessage","handleToggleBanUser","handleToggleMuteUser","handleTogglePinMessage","handleToggleReaction","error","type","status","MessageStatusTypes","FAILED","onOpenThread","isMuted","mutedUsers","some","mute","user","id","userID","target","blockUser","action","actionType","icon","title","banned","copyMessage","setClipboardString","text","undefined","deleteMessage","Alert","alert","onPress","style","cancelable","titleStyle","color","editMessage","pinMessage","unpinMessage","flagMessage","reactionType","muteUser","quotedReply","retry","messageWithoutReservedFields","threadReply"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAOA;;AAGA;;AAaA;;AAEA;;AAIA;;;;;AAEO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAoB,OAyDzB;AAAA;;AAAA,MAtDNC,OAsDM,QAtDNA,OAsDM;AAAA,MArDNC,MAqDM,QArDNA,MAqDM;AAAA,MApDNC,qBAoDM,QApDNA,qBAoDM;AAAA,MAnDNC,WAmDM,QAnDNA,WAmDM;AAAA,MAlDNC,UAkDM,QAlDNA,UAkDM;AAAA,MAjDNC,YAiDM,QAjDNA,YAiDM;AAAA,MAhDNC,UAgDM,QAhDNA,UAgDM;AAAA,MA/CNC,UA+CM,QA/CNA,UA+CM;AAAA,MA9CNC,UA8CM,QA9CNA,UA8CM;AAAA,MA7CNC,gBA6CM,QA7CNA,gBA6CM;AAAA,MA5CNC,iBA4CM,QA5CNA,iBA4CM;AAAA,MA3CUC,kBA2CV,QA3CNC,cA2CM;AAAA,MA1CNC,WA0CM,QA1CNA,WA0CM;AAAA,MAzCNC,iBAyCM,QAzCNA,iBAyCM;AAAA,MAxCNC,OAwCM,QAxCNA,OAwCM;AAAA,MAvCNC,cAuCM,QAvCNA,cAuCM;AAAA,MAtCNC,UAsCM,QAtCNA,UAsCM;AAAA,MArCNC,aAqCM,QArCNA,aAqCM;AAAA,MApCNC,gBAoCM,QApCNA,gBAoCM;AAAA,MAnCNC,cAmCM,QAnCNA,cAmCM;AAAA,MAlCNC,eAkCM,QAlCNA,eAkCM;AAAA,MAjCNC,UAiCM,QAjCNA,UAiCM;AAAA,MAhCNC,qBAgCM,QAhCNA,qBAgCM;AAAA,MA/BNC,kBA+BM,QA/BNA,kBA+BM;AAAA,MA9BNC,CA8BM,QA9BNA,CA8BM;AAAA,MA7BNC,aA6BM,QA7BNA,aA6BM;;AACN,kBAII,6BAJJ;AAAA,wCACEC,KADF,CAEIC,MAFJ;AAAA,MAEcC,WAFd,yBAEcA,WAFd;AAAA,MAE2BC,UAF3B,yBAE2BA,UAF3B;AAAA,MAEuCC,IAFvC,yBAEuCA,IAFvC;;AAKA,8BASI,wDAAyB;AAC3B/B,IAAAA,OAAO,EAAPA,OAD2B;AAE3BC,IAAAA,MAAM,EAANA,MAF2B;AAG3BC,IAAAA,qBAAqB,EAArBA,qBAH2B;AAI3Ba,IAAAA,OAAO,EAAPA,OAJ2B;AAK3BG,IAAAA,aAAa,EAAbA,aAL2B;AAM3BC,IAAAA,gBAAgB,EAAhBA,gBAN2B;AAO3BE,IAAAA,eAAe,EAAfA,eAP2B;AAQ3BE,IAAAA,qBAAqB,EAArBA,qBAR2B;AAS3BC,IAAAA,kBAAkB,EAAlBA,kBAT2B;AAU3BE,IAAAA,aAAa,EAAbA;AAV2B,GAAzB,CATJ;AAAA,MACEM,mBADF,yBACEA,mBADF;AAAA,MAEEC,iBAFF,yBAEEA,iBAFF;AAAA,MAGEC,wBAHF,yBAGEA,wBAHF;AAAA,MAIEC,mBAJF,yBAIEA,mBAJF;AAAA,MAKEC,mBALF,yBAKEA,mBALF;AAAA,MAMEC,oBANF,yBAMEA,oBANF;AAAA,MAOEC,sBAPF,yBAOEA,sBAPF;AAAA,MAQEC,oBARF,yBAQEA,oBARF;;AAsBA,MAAMC,KAAK,GAAGzB,OAAO,CAAC0B,IAAR,KAAiB,OAAjB,IAA4B1B,OAAO,CAAC2B,MAAR,KAAmBC,0BAAmBC,MAAhF;;AAEA,MAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QAAI7B,cAAJ,EAAoB;AAClBA,MAAAA,cAAc,CAACD,OAAD,CAAd;AACD;;AACD,QAAIE,UAAJ,EAAgB;AACdA,MAAAA,UAAU,CAACF,OAAD,CAAV;AACD;AACF,GAPD;;AASA,MAAM+B,OAAO,GAAG,CAAC7C,MAAM,CAAC8C,UAAP,IAAqB,EAAtB,EAA0BC,IAA1B,CACd,UAACC,IAAD;AAAA;;AAAA,WAAUA,IAAI,CAACC,IAAL,CAAUC,EAAV,KAAiBlD,MAAM,CAACmD,MAAxB,IAAkCH,IAAI,CAACI,MAAL,CAAYF,EAAZ,uBAAmBpC,OAAO,CAACmC,IAA3B,qBAAmB,cAAcC,EAAjC,CAA5C;AAAA,GADc,CAAhB;AAIA,MAAMG,SAA4B,GAAG;AACnCC,IAAAA,MAAM;AAAA,oFAAE;AAAA;;AAAA;AAAA;AAAA;AAAA;AACNjC,gBAAAA,UAAU,CAAC,MAAD,CAAV;;AADM,wCAEFP,OAAO,CAACmC,IAFN,aAEF,eAAcC,EAFZ;AAAA;AAAA;AAAA;;AAGJ,oBAAIhD,WAAJ,EAAiB;AACfA,kBAAAA,WAAW,CAACY,OAAD,CAAX;AACD;;AALG;AAAA,uBAOEqB,mBAAmB,EAPrB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,OAD6B;AAWnCoB,IAAAA,UAAU,EAAE,WAXuB;AAYnCC,IAAAA,IAAI,EAAE,gCAAC,iBAAD;AAAY,MAAA,QAAQ,EAAE1B,IAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAZ6B;AAanC2B,IAAAA,KAAK,EAAE,kBAAA3C,OAAO,CAACmC,IAAR,4BAAcS,MAAd,GAAuBlC,CAAC,CAAC,cAAD,CAAxB,GAA2CA,CAAC,CAAC,YAAD;AAbhB,GAArC;AAgBA,MAAMmC,WAA0C,GAC9CC,+BAAuB,IAAvB,GACI;AACEN,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIlB,UAAJ,EAAgB;AACdA,QAAAA,UAAU,CAACW,OAAD,CAAV;AACD;;AACD,sCAAmBA,OAAO,CAAC+C,IAAR,IAAgB,EAAnC;AACD,KAPH;AAQEN,IAAAA,UAAU,EAAE,aARd;AASEC,IAAAA,IAAI,EAAE,gCAAC,WAAD;AAAM,MAAA,QAAQ,EAAE1B,IAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MATR;AAUE2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,cAAD;AAVV,GADJ,GAaIsC,SAdN;AAgBA,MAAMC,aAAgC,GAAG;AACvCT,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,OAAD,CAAV;;AACA,UAAIP,OAAO,CAACoC,EAAZ,EAAgB;AACdc,2BAAMC,KAAN,CACEzC,CAAC,CAAC,gBAAD,CADH,EAEEA,CAAC,CAAC,2DAAD,CAFH,EAGE,CACE;AAAE0C,UAAAA,OAAO,EAAE;AAAA,mBAAM7C,UAAU,CAAC,MAAD,CAAhB;AAAA,WAAX;AAAqCwC,UAAAA,IAAI,EAAErC,CAAC,CAAC,QAAD;AAA5C,SADF,EAEE;AACE0C,UAAAA,OAAO;AAAA,2FAAE;AAAA;AAAA;AAAA;AAAA;AACP7C,sBAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,0BAAIjB,YAAJ,EAAkB;AAChBA,wBAAAA,YAAY,CAACU,OAAD,CAAZ;AACD;;AAJM;AAAA,6BAMDiB,mBAAmB,EANlB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,aADT;AASEoC,UAAAA,KAAK,EAAE,aATT;AAUEN,UAAAA,IAAI,EAAErC,CAAC,CAAC,QAAD;AAVT,SAFF,CAHF,EAkBE;AAAE4C,UAAAA,UAAU,EAAE;AAAd,SAlBF;AAoBD;AACF,KAzBsC;AA0BvCb,IAAAA,UAAU,EAAE,eA1B2B;AA2BvCC,IAAAA,IAAI,EAAE,gCAAC,aAAD;AAAQ,MAAA,QAAQ,EAAE3B,UAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MA3BiC;AA4BvC4B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,gBAAD,CA5B+B;AA6BvC6C,IAAAA,UAAU,EAAE;AAAEC,MAAAA,KAAK,EAAEzC;AAAT;AA7B2B,GAAzC;AAgCA,MAAM0C,WAA8B,GAAG;AACrCjB,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIhB,UAAJ,EAAgB;AACdA,QAAAA,UAAU,CAACS,OAAD,CAAV;AACD;;AACDkB,MAAAA,iBAAiB;AAClB,KAPoC;AAQrCuB,IAAAA,UAAU,EAAE,aARyB;AASrCC,IAAAA,IAAI,EAAE,gCAAC,WAAD;AAAM,MAAA,QAAQ,EAAE1B,IAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAT+B;AAUrC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,cAAD;AAV6B,GAAvC;AAaA,MAAMgD,UAA6B,GAAG;AACpClB,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIb,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB,CAACM,OAAD,CAAhB;AACD;;AACDuB,MAAAA,sBAAsB;AACvB,KAPmC;AAQpCkB,IAAAA,UAAU,EAAE,YARwB;AASpCC,IAAAA,IAAI,EAAE,gCAAC,UAAD;AAAK,MAAA,MAAM,EAAE,EAAb;AAAiB,MAAA,QAAQ,EAAE1B,IAA3B;AAAiC,MAAA,KAAK,EAAE,EAAxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAT8B;AAUpC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,qBAAD;AAV4B,GAAtC;AAaA,MAAMiD,YAA+B,GAAG;AACtCnB,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIb,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB,CAACM,OAAD,CAAhB;AACD;;AACDuB,MAAAA,sBAAsB;AACvB,KAPqC;AAQtCkB,IAAAA,UAAU,EAAE,cAR0B;AAStCC,IAAAA,IAAI,EAAE,gCAAC,YAAD;AAAO,MAAA,QAAQ,EAAE1B,IAAjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MATgC;AAUtC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,yBAAD;AAV8B,GAAxC;AAaA,MAAMkD,WAA8B,GAAG;AACrCpB,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,OAAD,CAAV;;AACA,UAAIP,OAAO,CAACoC,EAAZ,EAAgB;AACdc,2BAAMC,KAAN,CACEzC,CAAC,CAAC,cAAD,CADH,EAEEA,CAAC,CAAC,sFAAD,CAFH,EAGE,CACE;AAAE0C,UAAAA,OAAO,EAAE;AAAA,mBAAM7C,UAAU,CAAC,MAAD,CAAhB;AAAA,WAAX;AAAqCwC,UAAAA,IAAI,EAAErC,CAAC,CAAC,QAAD;AAA5C,SADF,EAEE;AACE0C,UAAAA,OAAO;AAAA,4FAAE;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEL,0BAAI5D,UAAJ,EAAgB;AACdA,wBAAAA,UAAU,CAACQ,OAAD,CAAV;AACD;;AAJI;AAAA,6BAKCd,MAAM,CAAC0E,WAAP,CAAmB5D,OAAO,CAACoC,EAA3B,CALD;;AAAA;AAMLc,yCAAMC,KAAN,CACEzC,CAAC,CAAC,iBAAD,CADH,EAEEA,CAAC,CAAC,+CAAD,CAFH,EAGE,CACE;AACE0C,wBAAAA,OAAO,EAAE;AAAA,iCAAM7C,UAAU,CAAC,MAAD,CAAhB;AAAA,yBADX;AAEEwC,wBAAAA,IAAI,EAAErC,CAAC,CAAC,IAAD;AAFT,uBADF,CAHF;;AANK;AAAA;;AAAA;AAAA;AAAA;;AAiBLwC,yCAAMC,KAAN,CACEzC,CAAC,CAAC,qBAAD,CADH,EAEEA,CAAC,CACC,oFADD,CAFH,EAKE,CACE;AACE0C,wBAAAA,OAAO,EAAE;AAAA,iCAAM7C,UAAU,CAAC,MAAD,CAAhB;AAAA,yBADX;AAEEwC,wBAAAA,IAAI,EAAErC,CAAC,CAAC,IAAD;AAFT,uBADF,CALF;;AAjBK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,aADT;AAgCEqC,UAAAA,IAAI,EAAErC,CAAC,CAAC,MAAD;AAhCT,SAFF,CAHF,EAwCE;AAAE4C,UAAAA,UAAU,EAAE;AAAd,SAxCF;AA0CD;AACF,KA/CoC;AAgDrCb,IAAAA,UAAU,EAAE,aAhDyB;AAiDrCC,IAAAA,IAAI,EAAE,gCAAC,kBAAD;AAAa,MAAA,QAAQ,EAAE1B,IAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAjD+B;AAkDrC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,cAAD;AAlD6B,GAAvC;AAqDA,MAAMb,cAAc,GAAG,CAAC4B,KAAD,GACnBpB,cAAc,GACZA,cAAc,CAACL,OAAD,CADF;AAAA,gFAEZ,kBAAO6D,YAAP;AAAA;AAAA;AAAA;AAAA;AACE,kBAAIjE,kBAAJ,EAAwB;AACtBA,gBAAAA,kBAAkB,CAACI,OAAD,EAAU6D,YAAV,CAAlB;AACD;;AAHH;AAAA,qBAKQrC,oBAAoB,CAACqC,YAAD,CAL5B;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAFY;;AAAA;AAAA;AAAA;AAAA,KADK,GAUnBb,SAVJ;AAYA,MAAMc,QAA2B,GAAG;AAClCtB,IAAAA,MAAM;AAAA,qFAAE;AAAA;;AAAA;AAAA;AAAA;AAAA;AACNjC,gBAAAA,UAAU,CAAC,MAAD,CAAV;;AADM,wCAEFP,OAAO,CAACmC,IAFN,aAEF,eAAcC,EAFZ;AAAA;AAAA;AAAA;;AAGJ,oBAAI3C,UAAJ,EAAgB;AACdA,kBAAAA,UAAU,CAACO,OAAD,CAAV;AACD;;AALG;AAAA,uBAOEsB,oBAAoB,EAPtB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,OAD4B;AAWlCmB,IAAAA,UAAU,EAAE,UAXsB;AAYlCC,IAAAA,IAAI,EAAE,gCAAC,WAAD;AAAM,MAAA,QAAQ,EAAE1B,IAAhB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAZ4B;AAalC2B,IAAAA,KAAK,EAAEZ,OAAO,GAAGrB,CAAC,CAAC,aAAD,CAAJ,GAAsBA,CAAC,CAAC,WAAD;AAbH,GAApC;AAgBA,MAAMqD,WAA8B,GAAG;AACrCvB,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIZ,iBAAJ,EAAuB;AACrBA,QAAAA,iBAAiB,CAACK,OAAD,CAAjB;AACD;;AACDmB,MAAAA,wBAAwB;AACzB,KAPoC;AAQrCsB,IAAAA,UAAU,EAAE,aARyB;AASrCC,IAAAA,IAAI,EAAE,gCAAC,sBAAD;AAAiB,MAAA,QAAQ,EAAE1B,IAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAT+B;AAUrC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,OAAD;AAV6B,GAAvC;AAaA,MAAMsD,KAAwB,GAAG;AAC/BxB,IAAAA,MAAM;AAAA,qFAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AACNjC,gBAAAA,UAAU,CAAC,MAAD,CAAV;AACM0D,gBAAAA,4BAFA,GAE+B,gDAAqBjE,OAArB,CAF/B;;AAGN,oBAAIF,WAAJ,EAAiB;AACfA,kBAAAA,WAAW,CAACmE,4BAAD,CAAX;AACD;;AALK;AAAA,uBAOA7C,mBAAmB,EAPnB;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAF;;AAAA;AAAA;AAAA;;AAAA;AAAA,OADyB;AAU/BqB,IAAAA,UAAU,EAAE,OAVmB;AAW/BC,IAAAA,IAAI,EAAE,gCAAC,aAAD;AAAQ,MAAA,QAAQ,EAAE5B,WAAlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAXyB;AAY/B6B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,QAAD;AAZuB,GAAjC;AAeA,MAAMwD,WAA8B,GAAG;AACrC1B,IAAAA,MAAM,EAAE,kBAAM;AACZjC,MAAAA,UAAU,CAAC,MAAD,CAAV;;AACA,UAAIR,iBAAJ,EAAuB;AACrBA,QAAAA,iBAAiB,CAACC,OAAD,CAAjB;AACD;;AACD8B,MAAAA,YAAY;AACb,KAPoC;AAQrCW,IAAAA,UAAU,EAAE,aARyB;AASrCC,IAAAA,IAAI,EAAE,gCAAC,kBAAD;AAAa,MAAA,QAAQ,EAAE1B,IAAvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAT+B;AAUrC2B,IAAAA,KAAK,EAAEjC,CAAC,CAAC,cAAD;AAV6B,GAAvC;AAaA,SAAO;AACL6B,IAAAA,SAAS,EAATA,SADK;AAELM,IAAAA,WAAW,EAAXA,WAFK;AAGLI,IAAAA,aAAa,EAAbA,aAHK;AAILQ,IAAAA,WAAW,EAAXA,WAJK;AAKLG,IAAAA,WAAW,EAAXA,WALK;AAML/D,IAAAA,cAAc,EAAdA,cANK;AAOLiE,IAAAA,QAAQ,EAARA,QAPK;AAQLJ,IAAAA,UAAU,EAAVA,UARK;AASLK,IAAAA,WAAW,EAAXA,WATK;AAULC,IAAAA,KAAK,EAALA,KAVK;AAWLE,IAAAA,WAAW,EAAXA,WAXK;AAYLP,IAAAA,YAAY,EAAZA;AAZK,GAAP;AAcD,CAnVM","sourcesContent":["import React from 'react';\nimport { Alert } from 'react-native';\n\nimport { useMessageActionHandlers } from './useMessageActionHandlers';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\nimport type { OverlayContextValue } from '../../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { TranslationContextValue } from '../../../contexts/translationContext/TranslationContext';\nimport {\n Copy,\n CurveLineLeftUp,\n Delete,\n Edit,\n MessageFlag,\n Mute,\n Pin,\n SendUp,\n ThreadReply,\n Unpin,\n UserDelete,\n} from '../../../icons';\nimport { setClipboardString } from '../../../native';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes } from '../../../utils/utils';\n\nimport type { MessageType } from '../../MessageList/hooks/useMessageList';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\nimport { removeReservedFields } from '../utils/removeReservedFields';\n\nexport const useMessageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n enforceUniqueReaction,\n handleBlock,\n handleCopy,\n handleDelete,\n handleEdit,\n handleFlag,\n handleMute,\n handlePinMessage,\n handleQuotedReply,\n handleReaction: handleReactionProp,\n handleRetry,\n handleThreadReply,\n message,\n onThreadSelect,\n openThread,\n removeMessage,\n retrySendMessage,\n selectReaction,\n setEditingState,\n setOverlay,\n setQuotedMessageState,\n supportedReactions,\n t,\n updateMessage,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'handleBlock'\n | 'handleCopy'\n | 'handleDelete'\n | 'handleEdit'\n | 'handleFlag'\n | 'handleQuotedReply'\n | 'handleMute'\n | 'handlePinMessage'\n | 'handleRetry'\n | 'handleReaction'\n | 'handleThreadReply'\n | 'removeMessage'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'selectReaction'\n | 'supportedReactions'\n | 'updateMessage'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<OverlayContextValue, 'setOverlay'> &\n Pick<ThreadContextValue<StreamChatGenerics>, 'openThread'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'> &\n Pick<TranslationContextValue, 't'> & {\n onThreadSelect?: (message: MessageType<StreamChatGenerics>) => void;\n }) => {\n const {\n theme: {\n colors: { accent_blue, accent_red, grey },\n },\n } = useTheme();\n const {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n } = useMessageActionHandlers({\n channel,\n client,\n enforceUniqueReaction,\n message,\n removeMessage,\n retrySendMessage,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n updateMessage,\n });\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const onOpenThread = () => {\n if (onThreadSelect) {\n onThreadSelect(message);\n }\n if (openThread) {\n openThread(message);\n }\n };\n\n const isMuted = (client.mutedUsers || []).some(\n (mute) => mute.user.id === client.userID && mute.target.id === message.user?.id,\n );\n\n const blockUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleBlock) {\n handleBlock(message);\n }\n\n await handleToggleBanUser();\n }\n },\n actionType: 'blockUser',\n icon: <UserDelete pathFill={grey} />,\n title: message.user?.banned ? t('Unblock User') : t('Block User'),\n };\n\n const copyMessage: MessageActionType | undefined =\n setClipboardString !== null\n ? {\n action: () => {\n setOverlay('none');\n if (handleCopy) {\n handleCopy(message);\n }\n setClipboardString(message.text || '');\n },\n actionType: 'copyMessage',\n icon: <Copy pathFill={grey} />,\n title: t('Copy Message'),\n }\n : undefined;\n\n const deleteMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Delete Message'),\n t('Are you sure you want to permanently delete this message?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n setOverlay('none');\n if (handleDelete) {\n handleDelete(message);\n }\n\n await handleDeleteMessage();\n },\n style: 'destructive',\n text: t('Delete'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'deleteMessage',\n icon: <Delete pathFill={accent_red} />,\n title: t('Delete Message'),\n titleStyle: { color: accent_red },\n };\n\n const editMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleEdit) {\n handleEdit(message);\n }\n handleEditMessage();\n },\n actionType: 'editMessage',\n icon: <Edit pathFill={grey} />,\n title: t('Edit Message'),\n };\n\n const pinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'pinMessage',\n icon: <Pin height={23} pathFill={grey} width={24} />,\n title: t('Pin to Conversation'),\n };\n\n const unpinMessage: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handlePinMessage) {\n handlePinMessage(message);\n }\n handleTogglePinMessage();\n },\n actionType: 'unpinMessage',\n icon: <Unpin pathFill={grey} />,\n title: t('Unpin from Conversation'),\n };\n\n const flagMessage: MessageActionType = {\n action: () => {\n setOverlay('alert');\n if (message.id) {\n Alert.alert(\n t('Flag Message'),\n t('Do you want to send a copy of this message to a moderator for further investigation?'),\n [\n { onPress: () => setOverlay('none'), text: t('Cancel') },\n {\n onPress: async () => {\n try {\n if (handleFlag) {\n handleFlag(message);\n }\n await client.flagMessage(message.id);\n Alert.alert(\n t('Message flagged'),\n t('The message has been reported to a moderator.'),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n } catch (_) {\n Alert.alert(\n t('Cannot Flag Message'),\n t(\n 'Flag action failed either due to a network issue or the message is already flagged',\n ),\n [\n {\n onPress: () => setOverlay('none'),\n text: t('Ok'),\n },\n ],\n );\n }\n },\n text: t('Flag'),\n },\n ],\n { cancelable: false },\n );\n }\n },\n actionType: 'flagMessage',\n icon: <MessageFlag pathFill={grey} />,\n title: t('Flag Message'),\n };\n\n const handleReaction = !error\n ? selectReaction\n ? selectReaction(message)\n : async (reactionType: string) => {\n if (handleReactionProp) {\n handleReactionProp(message, reactionType);\n }\n\n await handleToggleReaction(reactionType);\n }\n : undefined;\n\n const muteUser: MessageActionType = {\n action: async () => {\n setOverlay('none');\n if (message.user?.id) {\n if (handleMute) {\n handleMute(message);\n }\n\n await handleToggleMuteUser();\n }\n },\n actionType: 'muteUser',\n icon: <Mute pathFill={grey} />,\n title: isMuted ? t('Unmute User') : t('Mute User'),\n };\n\n const quotedReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleQuotedReply) {\n handleQuotedReply(message);\n }\n handleQuotedReplyMessage();\n },\n actionType: 'quotedReply',\n icon: <CurveLineLeftUp pathFill={grey} />,\n title: t('Reply'),\n };\n\n const retry: MessageActionType = {\n action: async () => {\n setOverlay('none');\n const messageWithoutReservedFields = removeReservedFields(message);\n if (handleRetry) {\n handleRetry(messageWithoutReservedFields);\n }\n\n await handleResendMessage();\n },\n actionType: 'retry',\n icon: <SendUp pathFill={accent_blue} />,\n title: t('Resend'),\n };\n\n const threadReply: MessageActionType = {\n action: () => {\n setOverlay('none');\n if (handleThreadReply) {\n handleThreadReply(message);\n }\n onOpenThread();\n },\n actionType: 'threadReply',\n icon: <ThreadReply pathFill={grey} />,\n title: t('Thread Reply'),\n };\n\n return {\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n flagMessage,\n handleReaction,\n muteUser,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["messageActions.ts"],"names":["messageActions","blockUser","copyMessage","deleteMessage","editMessage","error","flagMessage","isMyMessage","isThreadMessage","message","messageReactions","ownCapabilities","pinMessage","quotedReply","retry","threadReply","unpinMessage","undefined","actions","push","quoteMessage","sendReply","updateOwnMessage","updateAnyMessage","text","pinned","banChannelMembers","deleteOwnMessage","deleteAnyMessage"],"mappings":";;;;;AA8BO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAmBkB;AAAA,MAhB9CC,SAgB8C,QAhB9CA,SAgB8C;AAAA,MAf9CC,WAe8C,QAf9CA,WAe8C;AAAA,MAd9CC,aAc8C,QAd9CA,aAc8C;AAAA,MAb9CC,WAa8C,QAb9CA,WAa8C;AAAA,MAZ9CC,KAY8C,QAZ9CA,KAY8C;AAAA,MAX9CC,WAW8C,QAX9CA,WAW8C;AAAA,MAV9CC,WAU8C,QAV9CA,WAU8C;AAAA,MAT9CC,eAS8C,QAT9CA,eAS8C;AAAA,MAR9CC,OAQ8C,QAR9CA,OAQ8C;AAAA,MAP9CC,gBAO8C,QAP9CA,gBAO8C;AAAA,MAN9CC,eAM8C,QAN9CA,eAM8C;AAAA,MAL9CC,UAK8C,QAL9CA,UAK8C;AAAA,MAJ9CC,WAI8C,QAJ9CA,WAI8C;AAAA,MAH9CC,KAG8C,QAH9CA,KAG8C;AAAA,MAF9CC,WAE8C,QAF9CA,WAE8C;AAAA,MAD9CC,YAC8C,QAD9CA,YAC8C;;AAC9C,MAAIN,gBAAJ,EAAsB;AACpB,WAAOO,SAAP;AACD;;AAED,MAAMC,OAAwC,GAAG,EAAjD;;AAEA,MAAIb,KAAK,IAAIE,WAAb,EAA0B;AACxBW,IAAAA,OAAO,CAACC,IAAR,CAAaL,KAAb;AACD;;AAED,MAAIH,eAAe,CAACS,YAAhB,IAAgC,CAACZ,eAAjC,IAAoD,CAACH,KAAzD,EAAgE;AAC9Da,IAAAA,OAAO,CAACC,IAAR,CAAaN,WAAb;AACD;;AAED,MAAIF,eAAe,CAACU,SAAhB,IAA6B,CAACb,eAA9B,IAAiD,CAACH,KAAtD,EAA6D;AAC3Da,IAAAA,OAAO,CAACC,IAAR,CAAaJ,WAAb;AACD;;AAED,MACGR,WAAW,IAAII,eAAe,CAACW,gBAAhC,IACC,CAACf,WAAD,IAAgBI,eAAe,CAACY,gBAFnC,EAGE;AACAL,IAAAA,OAAO,CAACC,IAAR,CAAaf,WAAb;AACD;;AAED,
|
|
1
|
+
{"version":3,"sources":["messageActions.ts"],"names":["messageActions","blockUser","copyMessage","deleteMessage","editMessage","error","flagMessage","isMyMessage","isThreadMessage","message","messageReactions","ownCapabilities","pinMessage","quotedReply","retry","threadReply","unpinMessage","undefined","actions","push","quoteMessage","sendReply","updateOwnMessage","updateAnyMessage","text","pinned","banChannelMembers","deleteOwnMessage","deleteAnyMessage"],"mappings":";;;;;AA8BO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,OAmBkB;AAAA,MAhB9CC,SAgB8C,QAhB9CA,SAgB8C;AAAA,MAf9CC,WAe8C,QAf9CA,WAe8C;AAAA,MAd9CC,aAc8C,QAd9CA,aAc8C;AAAA,MAb9CC,WAa8C,QAb9CA,WAa8C;AAAA,MAZ9CC,KAY8C,QAZ9CA,KAY8C;AAAA,MAX9CC,WAW8C,QAX9CA,WAW8C;AAAA,MAV9CC,WAU8C,QAV9CA,WAU8C;AAAA,MAT9CC,eAS8C,QAT9CA,eAS8C;AAAA,MAR9CC,OAQ8C,QAR9CA,OAQ8C;AAAA,MAP9CC,gBAO8C,QAP9CA,gBAO8C;AAAA,MAN9CC,eAM8C,QAN9CA,eAM8C;AAAA,MAL9CC,UAK8C,QAL9CA,UAK8C;AAAA,MAJ9CC,WAI8C,QAJ9CA,WAI8C;AAAA,MAH9CC,KAG8C,QAH9CA,KAG8C;AAAA,MAF9CC,WAE8C,QAF9CA,WAE8C;AAAA,MAD9CC,YAC8C,QAD9CA,YAC8C;;AAC9C,MAAIN,gBAAJ,EAAsB;AACpB,WAAOO,SAAP;AACD;;AAED,MAAMC,OAAwC,GAAG,EAAjD;;AAEA,MAAIb,KAAK,IAAIE,WAAb,EAA0B;AACxBW,IAAAA,OAAO,CAACC,IAAR,CAAaL,KAAb;AACD;;AAED,MAAIH,eAAe,CAACS,YAAhB,IAAgC,CAACZ,eAAjC,IAAoD,CAACH,KAAzD,EAAgE;AAC9Da,IAAAA,OAAO,CAACC,IAAR,CAAaN,WAAb;AACD;;AAED,MAAIF,eAAe,CAACU,SAAhB,IAA6B,CAACb,eAA9B,IAAiD,CAACH,KAAtD,EAA6D;AAC3Da,IAAAA,OAAO,CAACC,IAAR,CAAaJ,WAAb;AACD;;AAED,MACGR,WAAW,IAAII,eAAe,CAACW,gBAAhC,IACC,CAACf,WAAD,IAAgBI,eAAe,CAACY,gBAFnC,EAGE;AACAL,IAAAA,OAAO,CAACC,IAAR,CAAaf,WAAb;AACD;;AAED,MAAIF,WAAW,KAAKe,SAAhB,IAA6BR,OAAO,CAACe,IAArC,IAA6C,CAACnB,KAAlD,EAAyD;AACvDa,IAAAA,OAAO,CAACC,IAAR,CAAajB,WAAb;AACD;;AAED,MAAI,CAACK,WAAD,IAAgBI,eAAe,CAACL,WAApC,EAAiD;AAC/CY,IAAAA,OAAO,CAACC,IAAR,CAAab,WAAb;AACD;;AAED,MAAIK,eAAe,CAACC,UAAhB,IAA8B,CAACH,OAAO,CAACgB,MAA3C,EAAmD;AACjDP,IAAAA,OAAO,CAACC,IAAR,CAAaP,UAAb;AACD;;AAED,MAAID,eAAe,CAACC,UAAhB,IAA8BH,OAAO,CAACgB,MAA1C,EAAkD;AAChDP,IAAAA,OAAO,CAACC,IAAR,CAAaH,YAAb;AACD;;AAED,MAAI,CAACT,WAAD,IAAgBI,eAAe,CAACe,iBAApC,EAAuD;AACrDR,IAAAA,OAAO,CAACC,IAAR,CAAalB,SAAb;AACD;;AAED,MACGM,WAAW,IAAII,eAAe,CAACgB,gBAAhC,IACC,CAACpB,WAAD,IAAgBI,eAAe,CAACiB,gBAFnC,EAGE;AACAV,IAAAA,OAAO,CAACC,IAAR,CAAahB,aAAb;AACD;;AAED,SAAOe,OAAP;AACD,CAzEM","sourcesContent":["import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';\nimport type { OwnCapabilitiesContextValue } from '../../../contexts/ownCapabilitiesContext/OwnCapabilitiesContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';\n\nexport type MessageActionsParams<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n blockUser: MessageActionType;\n deleteMessage: MessageActionType;\n dismissOverlay: () => void;\n editMessage: MessageActionType;\n error: boolean | Error;\n flagMessage: MessageActionType;\n isThreadMessage: boolean;\n messageReactions: boolean;\n muteUser: MessageActionType;\n ownCapabilities: OwnCapabilitiesContextValue;\n pinMessage: MessageActionType;\n quotedReply: MessageActionType;\n retry: MessageActionType;\n threadReply: MessageActionType;\n unpinMessage: MessageActionType;\n copyMessage?: MessageActionType;\n} & Pick<MessageContextValue<StreamChatGenerics>, 'message' | 'isMyMessage'>;\n\nexport type MessageActionsProp<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = (param: MessageActionsParams<StreamChatGenerics>) => MessageActionType[];\n\nexport const messageActions = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n blockUser,\n copyMessage,\n deleteMessage,\n editMessage,\n error,\n flagMessage,\n isMyMessage,\n isThreadMessage,\n message,\n messageReactions,\n ownCapabilities,\n pinMessage,\n quotedReply,\n retry,\n threadReply,\n unpinMessage,\n}: MessageActionsParams<StreamChatGenerics>) => {\n if (messageReactions) {\n return undefined;\n }\n\n const actions: Array<MessageActionType | null> = [];\n\n if (error && isMyMessage) {\n actions.push(retry);\n }\n\n if (ownCapabilities.quoteMessage && !isThreadMessage && !error) {\n actions.push(quotedReply);\n }\n\n if (ownCapabilities.sendReply && !isThreadMessage && !error) {\n actions.push(threadReply);\n }\n\n if (\n (isMyMessage && ownCapabilities.updateOwnMessage) ||\n (!isMyMessage && ownCapabilities.updateAnyMessage)\n ) {\n actions.push(editMessage);\n }\n\n if (copyMessage !== undefined && message.text && !error) {\n actions.push(copyMessage);\n }\n\n if (!isMyMessage && ownCapabilities.flagMessage) {\n actions.push(flagMessage);\n }\n\n if (ownCapabilities.pinMessage && !message.pinned) {\n actions.push(pinMessage);\n }\n\n if (ownCapabilities.pinMessage && message.pinned) {\n actions.push(unpinMessage);\n }\n\n if (!isMyMessage && ownCapabilities.banChannelMembers) {\n actions.push(blockUser);\n }\n\n if (\n (isMyMessage && ownCapabilities.deleteOwnMessage) ||\n (!isMyMessage && ownCapabilities.deleteAnyMessage)\n ) {\n actions.push(deleteMessage);\n }\n\n return actions;\n};\n"]}
|
|
@@ -40,7 +40,7 @@ var getReadStates = function getReadStates(clientUserId, messages, read) {
|
|
|
40
40
|
return "continue";
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
if (message.
|
|
43
|
+
if (message.created_at < member.last_read) {
|
|
44
44
|
var numberOfReads = Object.keys(read).length;
|
|
45
45
|
|
|
46
46
|
if (numberOfReads === 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,OAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,OAAO,
|
|
1
|
+
{"version":3,"sources":["getReadStates.ts"],"names":["getReadStates","clientUserId","messages","read","readData","reduce","acc","cur","id","filteredMessagesReversed","filter","msg","updated_at","reverse","members","Object","values","memberReadCount","message","length","member","last_read","created_at","numberOfReads","keys","currentMessageReadData","userIndex","findIndex","user","splice"],"mappings":";;;;;;;;;;;AAKO,IAAMA,aAAa,GAAG,SAAhBA,aAAgB,CAG3BC,YAH2B,EAI3BC,QAJ2B,EAO3BC,IAP2B,EAQxB;AACH,MAAMC,QAAQ,GAAGF,QAAQ,CAACG,MAAT,CAAgB,UAACC,GAAD,EAAMC,GAAN,EAAc;AAC7C,QAAIA,GAAG,CAACC,EAAR,EAAY;AACVF,MAAAA,GAAG,CAACC,GAAG,CAACC,EAAL,CAAH,GAAc,KAAd;AACD;;AACD,WAAOF,GAAP;AACD,GALgB,EAKd,EALc,CAAjB;AAOA,MAAMG,wBAAwB,GAAGP,QAAQ,CAACQ,MAAT,CAAgB,UAACC,GAAD;AAAA,WAASA,GAAG,CAACC,UAAb;AAAA,GAAhB,EAAyCC,OAAzC,EAAjC;;AAEA,MAAIV,IAAJ,EAAU;AAIR,QAAIF,YAAJ,EAAkB;AAChB,aAAOE,IAAI,CAACF,YAAD,CAAX;AACD;;AACD,QAAMa,OAAO,GAAGC,MAAM,CAACC,MAAP,CAAcb,IAAd,CAAhB;AAKA,QAAIc,eAAe,GAAG,CAAtB;;AASA,yDAAsBR,wBAAtB,wCAAgD;AAAA,UAArCS,OAAqC;;AAM9C,UAAI,CAACJ,OAAO,CAACK,MAAb,EAAqB;AACnBf,QAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,IAA1C;AACD,OAFD,MAEO;AAAA,mCACMG,MADN;AAOH,cAAI,CAACA,MAAM,CAACC,SAAZ,EAAuB;AACrB;AACD;;AAOD,cAAIH,OAAO,CAACI,UAAR,GAAqBF,MAAM,CAACC,SAAhC,EAA2C;AAKzC,gBAAME,aAAa,GAAGR,MAAM,CAACS,IAAP,CAAYrB,IAAZ,EAAkBgB,MAAxC;;AACA,gBAAII,aAAa,KAAK,CAAtB,EAAyB;AACvBnB,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuB,IAAvB;AACD,aAFD,MAEO;AACL,kBAAMiB,sBAAsB,GAAGrB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAvC;AACAJ,cAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GACE,OAAOiB,sBAAP,KAAkC,SAAlC,GACIR,eAAe,GAAG,CADtB,GAEIQ,sBAAsB,GAAG,CAH/B;AAID;;AACD,gBAAMC,SAAS,GAAGZ,OAAO,CAACa,SAAR,CAAkB;AAAA;;AAAA,kBAAGC,IAAH,QAAGA,IAAH;AAAA,qBAAcA,IAAI,CAACpB,EAAL,sBAAYY,MAAM,CAACQ,IAAnB,qBAAY,aAAapB,EAAzB,CAAd;AAAA,aAAlB,CAAlB;;AACA,gBAAIkB,SAAS,KAAK,CAAC,CAAnB,EAAsB;AACpBZ,cAAAA,OAAO,CAACe,MAAR,CAAeH,SAAf,EAA0B,CAA1B;;AACA,kBAAIH,aAAa,GAAG,CAApB,EAAuB;AACrBN,gBAAAA,eAAe,IAAI,CAAnB;AACD;AACF;AACF;AAtCE;;AACL,8DAAqBH,OAArB,2CAA8B;AAAA,cAAnBM,MAAmB;;AAAA,2BAAnBA,MAAmB;;AAAA,mCAO1B;AA+BH;;AAOD,YAAIhB,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,KAAyB,KAA7B,EAAoC;AAClCJ,UAAAA,QAAQ,CAACc,OAAO,CAACV,EAAT,CAAR,GAAuBS,eAAe,IAAI,KAA1C;AACD;AACF;AACF;AACF;;AAED,SAAOb,QAAP;AACD,CArGM","sourcesContent":["import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { PaginatedMessageListContextValue } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext';\nimport type { ThreadContextValue } from '../../../contexts/threadContext/ThreadContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const getReadStates = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n clientUserId: string | undefined,\n messages:\n | PaginatedMessageListContextValue<StreamChatGenerics>['messages']\n | ThreadContextValue<StreamChatGenerics>['threadMessages'],\n read?: ChannelContextValue<StreamChatGenerics>['read'],\n) => {\n const readData = messages.reduce((acc, cur) => {\n if (cur.id) {\n acc[cur.id] = false;\n }\n return acc;\n }, {} as { [key: string]: boolean | number });\n\n const filteredMessagesReversed = messages.filter((msg) => msg.updated_at).reverse();\n\n if (read) {\n /**\n * Channel read state is stored by user and we only care about users who aren't the client\n */\n if (clientUserId) {\n delete read[clientUserId];\n }\n const members = Object.values(read);\n\n /**\n * Track number of members who have read previous messages\n */\n let memberReadCount = 0;\n\n /**\n * Array is in reverse order so newest message is at 0,\n * we find the index of the first message that is older\n * than the last read and then set last read to that, or\n * if there are no newer messages, the first message is\n * last read message.\n */\n for (const message of filteredMessagesReversed) {\n /**\n * If all members are removed then they have read these\n * messages. We do not increment memberReadCount for 1:1\n * chats, so this should be true, not a number in that case.\n */\n if (!members.length) {\n readData[message.id] = memberReadCount || true;\n } else {\n for (const member of members) {\n /**\n * If no last read continue, we can't remove the user\n * because this would mark all messages in a new channel\n * true until at least one other user reads a message.\n */\n if (!member.last_read) {\n continue;\n }\n\n /**\n * If there there is a last read message add the user\n * to the array of last reads for that message and remove\n * the user from the list of users being checked\n */\n if (message.created_at < member.last_read) {\n /**\n * if this is a direct message the length will be 1\n * as we already deleted the current user from the object\n */\n const numberOfReads = Object.keys(read).length;\n if (numberOfReads === 1) {\n readData[message.id] = true;\n } else {\n const currentMessageReadData = readData[message.id];\n readData[message.id] =\n typeof currentMessageReadData === 'boolean'\n ? memberReadCount + 1\n : currentMessageReadData + 1;\n }\n const userIndex = members.findIndex(({ user }) => user.id === member.user?.id);\n if (userIndex !== -1) {\n members.splice(userIndex, 1);\n if (numberOfReads > 1) {\n memberReadCount += 1;\n }\n }\n }\n }\n\n /**\n * If this is not the last message for a user this will still be\n * set to false. But if other users have read further the number\n * should be how many have read beyond this message.\n */\n if (readData[message.id] === false) {\n readData[message.id] = memberReadCount || false;\n }\n }\n }\n }\n\n return readData;\n};\n"]}
|
package/lib/module/native.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, "__esModule", {
|
|
2
2
|
value: true
|
|
3
3
|
});
|
|
4
|
-
exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.isVideoPackageAvailable = exports.isAudioPackageAvailable = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.Sound = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
|
|
4
|
+
exports.triggerHaptic = exports.takePhoto = exports.shareImage = exports.setClipboardString = exports.saveFile = exports.registerNativeHandlers = exports.pickDocument = exports.isVideoPackageAvailable = exports.isAudioPackageAvailable = exports.getPhotos = exports.getLocalAssetUri = exports.deleteFile = exports.compressImage = exports.Video = exports.Sound = exports.SDK = exports.NetInfo = exports.FlatList = void 0;
|
|
5
5
|
|
|
6
6
|
var _reactNative = require("react-native");
|
|
7
7
|
|
|
@@ -28,6 +28,8 @@ var pickDocument = fail;
|
|
|
28
28
|
exports.pickDocument = pickDocument;
|
|
29
29
|
var saveFile = fail;
|
|
30
30
|
exports.saveFile = saveFile;
|
|
31
|
+
var setClipboardString = fail;
|
|
32
|
+
exports.setClipboardString = setClipboardString;
|
|
31
33
|
var shareImage = fail;
|
|
32
34
|
exports.shareImage = shareImage;
|
|
33
35
|
var takePhoto = fail;
|
|
@@ -97,6 +99,10 @@ var registerNativeHandlers = function registerNativeHandlers(handlers) {
|
|
|
97
99
|
if (handlers.Video) {
|
|
98
100
|
exports.Video = Video = handlers.Video;
|
|
99
101
|
}
|
|
102
|
+
|
|
103
|
+
if (handlers.setClipboardString !== undefined) {
|
|
104
|
+
exports.setClipboardString = setClipboardString = handlers.setClipboardString;
|
|
105
|
+
}
|
|
100
106
|
};
|
|
101
107
|
|
|
102
108
|
exports.registerNativeHandlers = registerNativeHandlers;
|
package/lib/module/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"mappings":";;;;;AACA;;AAMA,IAAMA,IAAI,GAAG,SAAPA,IAAO,GAAM;AACjB,QAAMC,KAAK,CACT,mGADS,CAAX;AAGD,CAJD;;AAiBO,IAAIC,aAA4B,GAAGF,IAAnC;;AAGA,IAAIG,UAAsB,GAAGH,IAA7B;;AAGA,IAAII,gBAAkC,GAAGJ,IAAzC;;AASA,IAAIK,SAAoB,GAAGL,IAA3B;;AAOA,IAAIM,QAAQ,GAAGC,qBAAf;;AAEA,IAAIC,OAAgB,GAAG;AAC5BC,EAAAA,gBAAgB,EAAET,IADU;AAE5BU,EAAAA,KAAK,EAAEV;AAFqB,CAAvB;;AAWA,IAAIW,YAA0B,GAAGX,IAAjC;;AAOA,IAAIY,QAAkB,GAAGZ,IAAzB;;AAOA,IAAIa,UAAsB,GAAGb,IAA7B;;AASA,IAAIc,SAAoB,GAAGd,IAA3B;;AAWA,IAAIe,aAA4B,GAAGf,IAAnC;;AAwBA,IAAIgB,GAAJ;;AA8CA,IAAIC,KAAJ;;AA2CA,IAAIC,KAAJ;;;AAmBA,IAAMC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,QAAD,EAAwB;AAC5D,MAAIA,QAAQ,CAAClB,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGkB,QAAQ,CAAClB,aAAzB;AACD;;AAED,MAAIkB,QAAQ,CAACjB,UAAb,EAAyB;AACvB,yBAAAA,UAAU,GAAGiB,QAAQ,CAACjB,UAAtB;AACD;;AAED,MAAIiB,QAAQ,CAACd,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGc,QAAQ,CAACd,QAApB;AACD;;AACD,MAAIc,QAAQ,CAACZ,OAAb,EAAsB;AACpB,sBAAAA,OAAO,GAAGY,QAAQ,CAACZ,OAAnB;AACD;;AAED,MAAIY,QAAQ,CAAChB,gBAAb,EAA+B;AAC7B,+BAAAA,gBAAgB,GAAGgB,QAAQ,CAAChB,gBAA5B;AACD;;AAED,MAAIgB,QAAQ,CAACf,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGe,QAAQ,CAACf,SAArB;AACD;;AAED,MAAIe,QAAQ,CAACT,YAAb,EAA2B;AACzB,2BAAAA,YAAY,GAAGS,QAAQ,CAACT,YAAxB;AACD;;AAED,MAAIS,QAAQ,CAACR,QAAb,EAAuB;AACrB,uBAAAA,QAAQ,GAAGQ,QAAQ,CAACR,QAApB;AACD;;AAED,MAAIQ,QAAQ,CAACJ,GAAb,EAAkB;AAChB,kBAAAA,GAAG,GAAGI,QAAQ,CAACJ,GAAf;AACD;;AAED,MAAII,QAAQ,CAACP,UAAT,KAAwBQ,SAA5B,EAAuC;AACrC,yBAAAR,UAAU,GAAGO,QAAQ,CAACP,UAAtB;AACD;;AAED,MAAIO,QAAQ,CAACH,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGG,QAAQ,CAACH,KAAjB;AACD;;AAED,MAAIG,QAAQ,CAACN,SAAb,EAAwB;AACtB,wBAAAA,SAAS,GAAGM,QAAQ,CAACN,SAArB;AACD;;AAED,MAAIM,QAAQ,CAACL,aAAb,EAA4B;AAC1B,4BAAAA,aAAa,GAAGK,QAAQ,CAACL,aAAzB;AACD;;AAED,MAAIK,QAAQ,CAACF,KAAb,EAAoB;AAClB,oBAAAA,KAAK,GAAGE,QAAQ,CAACF,KAAjB;AACD;AACF,CAvDM;;;;AAyDA,IAAMI,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,SAAM,CAAC,CAACJ,KAAR;AAAA,CAAhC;;;;AACA,IAAMK,uBAAuB,GAAG,SAA1BA,uBAA0B;AAAA,SAAM,CAAC,CAACN,KAAK,CAACO,MAAR,IAAkB,CAAC,CAACP,KAAK,CAACQ,eAAhC;AAAA,CAAhC","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"]}
|
|
1
|
+
{"version":3,"sources":["native.ts"],"names":["fail","Error","compressImage","deleteFile","getLocalAssetUri","getPhotos","FlatList","DefaultFlatList","NetInfo","addEventListener","fetch","pickDocument","saveFile","setClipboardString","shareImage","takePhoto","triggerHaptic","SDK","Sound","Video","registerNativeHandlers","handlers","undefined","isVideoPackageAvailable","isAudioPackageAvailable","Player","initializeSound"],"mappings":"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","sourcesContent":["import type React from 'react';\nimport { FlatList as DefaultFlatList, StyleProp, ViewStyle } from 'react-native';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { Asset, File } from './types/types';\n\nconst fail = () => {\n throw Error(\n 'Native handler was not registered, you should import stream-chat-expo or stream-chat-react-native',\n );\n};\n\ntype CompressImage = ({\n compressImageQuality,\n height,\n uri,\n width,\n}: {\n compressImageQuality: number;\n height: number;\n uri: string;\n width: number;\n}) => Promise<string> | never;\nexport let compressImage: CompressImage = fail;\n\ntype DeleteFile = ({ uri }: { uri: string }) => Promise<boolean> | never;\nexport let deleteFile: DeleteFile = fail;\n\ntype GetLocalAssetUri = (uriOrAssetId: string) => Promise<string> | never;\nexport let getLocalAssetUri: GetLocalAssetUri = fail;\n\ntype GetPhotos = ({ after, first }: { first: number; after?: string }) =>\n | Promise<{\n assets: Array<Omit<Asset, 'source'> & { source: 'picker' }>;\n endCursor: string;\n hasNextPage: boolean;\n }>\n | never;\nexport let getPhotos: GetPhotos = fail;\n\ntype NetInfo = {\n addEventListener: (listener: (isConnected: boolean) => void) => NetInfoSubscription | never;\n fetch: (requestedInterface?: string | undefined) => Promise<boolean> | never;\n};\n\nexport let FlatList = DefaultFlatList;\n\nexport let NetInfo: NetInfo = {\n addEventListener: fail,\n fetch: fail,\n};\n\ntype PickDocument = ({ maxNumberOfFiles }: { maxNumberOfFiles?: number }) =>\n | Promise<{\n cancelled: boolean;\n docs?: File[];\n }>\n | never;\nexport let pickDocument: PickDocument = fail;\n\ntype SaveFileOptions = {\n fileName: string;\n fromUrl: string;\n};\ntype SaveFile = (options: SaveFileOptions) => Promise<string> | never;\nexport let saveFile: SaveFile = fail;\n\ntype SetClipboardString = (text: string) => Promise<void> | never;\nexport let setClipboardString: SetClipboardString = fail;\n\ntype ShareOptions = {\n type?: string;\n url?: string;\n};\ntype ShareImage = (options: ShareOptions) => Promise<boolean> | never;\nexport let shareImage: ShareImage = fail;\n\ntype Photo =\n | (Omit<Asset, 'source'> & {\n cancelled: false;\n source: 'camera';\n })\n | { cancelled: true };\ntype TakePhoto = (options: { compressImageQuality?: number }) => Promise<Photo> | never;\nexport let takePhoto: TakePhoto = fail;\n\ntype HapticFeedbackMethod =\n | 'impactHeavy'\n | 'impactLight'\n | 'impactMedium'\n | 'notificationError'\n | 'notificationSuccess'\n | 'notificationWarning'\n | 'selection';\ntype TriggerHaptic = (method: HapticFeedbackMethod) => void | never;\nexport let triggerHaptic: TriggerHaptic = fail;\n\nexport type PlaybackStatus = {\n didJustFinish: boolean;\n durationMillis: number;\n error: string;\n isBuffering: boolean;\n isLoaded: boolean;\n isLooping: boolean;\n isPlaying: boolean;\n positionMillis: number;\n};\n\nexport type AVPlaybackStatusToSet = {\n isLooping: boolean;\n isMuted: boolean;\n positionMillis: number;\n progressUpdateIntervalMillis: number;\n rate: number;\n shouldCorrectPitch: boolean;\n shouldPlay: boolean;\n volume: number;\n};\n\nexport let SDK: string;\n\nexport type SoundOptions = {\n basePathOrCallback?: string;\n callback?: () => void;\n filenameOrFile?: string;\n initialStatus?: Partial<AVPlaybackStatusToSet>;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n source?: { uri: string };\n};\n\nexport type SoundReturnType = {\n paused: boolean;\n testID: string;\n getDuration?: () => number;\n isPlaying?: () => boolean;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n pauseAsync?: () => void;\n play?: () => void;\n playAsync?: () => void;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (millis: number) => void;\n soundRef?: React.RefObject<SoundReturnType>;\n stopAsync?: () => void;\n style?: StyleProp<ViewStyle>;\n unloadAsync?: () => void;\n uri?: string;\n};\n\nexport type SoundType = {\n initializeSound: (\n source?: { uri: string },\n initialStatus?: Partial<AVPlaybackStatusToSet>,\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void,\n ) => Promise<SoundReturnType | null>;\n Player: React.ComponentType<SoundReturnType> | null;\n};\n\nexport let Sound: SoundType;\n\nexport type VideoProgressData = {\n currentTime: number;\n seekableDuration: number;\n playableDuration?: number;\n};\n\nexport type VideoPayloadData = {\n duration: number;\n audioTracks?: { index: number; language: string; title: string; type: string }[];\n currentPosition?: number;\n naturalSize?: { height: number; orientation: 'portrait' | 'landscape'; width: number };\n textTracks?: { index: number; language: string; title: string; type: string }[];\n videoTracks?: {\n bitrate: number;\n codecs: string;\n height: number;\n trackId: number;\n width: number;\n }[];\n};\n\nexport type VideoType = {\n paused: boolean;\n testID: string;\n uri: string;\n videoRef: React.RefObject<VideoType>;\n onBuffer?: (props: { isBuffering: boolean }) => void;\n onEnd?: () => void;\n onLoad?: (payload: VideoPayloadData) => void;\n onLoadStart?: () => void;\n onPlaybackStatusUpdate?: (playbackStatus: PlaybackStatus) => void;\n onProgress?: (data: VideoProgressData) => void;\n onReadyForDisplay?: () => void;\n repeat?: boolean;\n replayAsync?: () => void;\n resizeMode?: string;\n seek?: (progress: number) => void;\n setPositionAsync?: (position: number) => void;\n style?: StyleProp<ViewStyle>;\n};\n\nexport let Video: React.ComponentType<VideoType>;\n\ntype Handlers = {\n compressImage?: CompressImage;\n deleteFile?: DeleteFile;\n FlatList?: typeof DefaultFlatList;\n getLocalAssetUri?: GetLocalAssetUri;\n getPhotos?: GetPhotos;\n NetInfo?: NetInfo;\n pickDocument?: PickDocument;\n saveFile?: SaveFile;\n SDK?: string;\n setClipboardString?: SetClipboardString;\n shareImage?: ShareImage;\n Sound?: SoundType;\n takePhoto?: TakePhoto;\n triggerHaptic?: TriggerHaptic;\n Video?: React.ComponentType<VideoType>;\n};\n\nexport const registerNativeHandlers = (handlers: Handlers) => {\n if (handlers.compressImage) {\n compressImage = handlers.compressImage;\n }\n\n if (handlers.deleteFile) {\n deleteFile = handlers.deleteFile;\n }\n\n if (handlers.FlatList) {\n FlatList = handlers.FlatList;\n }\n if (handlers.NetInfo) {\n NetInfo = handlers.NetInfo;\n }\n\n if (handlers.getLocalAssetUri) {\n getLocalAssetUri = handlers.getLocalAssetUri;\n }\n\n if (handlers.getPhotos) {\n getPhotos = handlers.getPhotos;\n }\n\n if (handlers.pickDocument) {\n pickDocument = handlers.pickDocument;\n }\n\n if (handlers.saveFile) {\n saveFile = handlers.saveFile;\n }\n\n if (handlers.SDK) {\n SDK = handlers.SDK;\n }\n\n if (handlers.shareImage !== undefined) {\n shareImage = handlers.shareImage;\n }\n\n if (handlers.Sound) {\n Sound = handlers.Sound;\n }\n\n if (handlers.takePhoto) {\n takePhoto = handlers.takePhoto;\n }\n\n if (handlers.triggerHaptic) {\n triggerHaptic = handlers.triggerHaptic;\n }\n\n if (handlers.Video) {\n Video = handlers.Video;\n }\n\n if (handlers.setClipboardString !== undefined) {\n setClipboardString = handlers.setClipboardString;\n }\n};\n\nexport const isVideoPackageAvailable = () => !!Video;\nexport const isAudioPackageAvailable = () => !!Sound.Player || !!Sound.initializeSound;\n"]}
|
package/lib/module/version.json
CHANGED
|
@@ -12,7 +12,7 @@ export declare const useMessageActions: <StreamChatGenerics extends DefaultStrea
|
|
|
12
12
|
onThreadSelect?: ((message: MessageType<StreamChatGenerics>) => void) | undefined;
|
|
13
13
|
}) => {
|
|
14
14
|
blockUser: MessageActionType;
|
|
15
|
-
copyMessage: MessageActionType;
|
|
15
|
+
copyMessage: MessageActionType | undefined;
|
|
16
16
|
deleteMessage: MessageActionType;
|
|
17
17
|
editMessage: MessageActionType;
|
|
18
18
|
flagMessage: MessageActionType;
|
|
@@ -4,7 +4,6 @@ import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
|
4
4
|
import type { MessageActionType } from '../../MessageOverlay/MessageActionListItem';
|
|
5
5
|
export declare type MessageActionsParams<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = {
|
|
6
6
|
blockUser: MessageActionType;
|
|
7
|
-
copyMessage: MessageActionType;
|
|
8
7
|
deleteMessage: MessageActionType;
|
|
9
8
|
dismissOverlay: () => void;
|
|
10
9
|
editMessage: MessageActionType;
|
|
@@ -19,6 +18,7 @@ export declare type MessageActionsParams<StreamChatGenerics extends DefaultStrea
|
|
|
19
18
|
retry: MessageActionType;
|
|
20
19
|
threadReply: MessageActionType;
|
|
21
20
|
unpinMessage: MessageActionType;
|
|
21
|
+
copyMessage?: MessageActionType;
|
|
22
22
|
} & Pick<MessageContextValue<StreamChatGenerics>, 'message' | 'isMyMessage'>;
|
|
23
23
|
export declare type MessageActionsProp<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = (param: MessageActionsParams<StreamChatGenerics>) => MessageActionType[];
|
|
24
24
|
export declare const messageActions: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ blockUser, copyMessage, deleteMessage, editMessage, error, flagMessage, isMyMessage, isThreadMessage, message, messageReactions, ownCapabilities, pinMessage, quotedReply, retry, threadReply, unpinMessage, }: MessageActionsParams<StreamChatGenerics>) => (MessageActionType | null)[] | undefined;
|
|
@@ -45,6 +45,8 @@ declare type SaveFileOptions = {
|
|
|
45
45
|
};
|
|
46
46
|
declare type SaveFile = (options: SaveFileOptions) => Promise<string> | never;
|
|
47
47
|
export declare let saveFile: SaveFile;
|
|
48
|
+
declare type SetClipboardString = (text: string) => Promise<void> | never;
|
|
49
|
+
export declare let setClipboardString: SetClipboardString;
|
|
48
50
|
declare type ShareOptions = {
|
|
49
51
|
type?: string;
|
|
50
52
|
url?: string;
|
|
@@ -194,6 +196,7 @@ declare type Handlers = {
|
|
|
194
196
|
pickDocument?: PickDocument;
|
|
195
197
|
saveFile?: SaveFile;
|
|
196
198
|
SDK?: string;
|
|
199
|
+
setClipboardString?: SetClipboardString;
|
|
197
200
|
shareImage?: ShareImage;
|
|
198
201
|
Sound?: SoundType;
|
|
199
202
|
takePhoto?: TakePhoto;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "stream-chat-react-native-core",
|
|
3
3
|
"description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
|
|
4
|
-
"version": "5.
|
|
4
|
+
"version": "5.5.0-beta.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Alert
|
|
2
|
+
import { Alert } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { useMessageActionHandlers } from './useMessageActionHandlers';
|
|
5
5
|
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
Unpin,
|
|
25
25
|
UserDelete,
|
|
26
26
|
} from '../../../icons';
|
|
27
|
+
import { setClipboardString } from '../../../native';
|
|
27
28
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
28
29
|
import { MessageStatusTypes } from '../../../utils/utils';
|
|
29
30
|
|
|
@@ -147,19 +148,21 @@ export const useMessageActions = <
|
|
|
147
148
|
title: message.user?.banned ? t('Unblock User') : t('Block User'),
|
|
148
149
|
};
|
|
149
150
|
|
|
150
|
-
const copyMessage: MessageActionType =
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
151
|
+
const copyMessage: MessageActionType | undefined =
|
|
152
|
+
setClipboardString !== null
|
|
153
|
+
? {
|
|
154
|
+
action: () => {
|
|
155
|
+
setOverlay('none');
|
|
156
|
+
if (handleCopy) {
|
|
157
|
+
handleCopy(message);
|
|
158
|
+
}
|
|
159
|
+
setClipboardString(message.text || '');
|
|
160
|
+
},
|
|
161
|
+
actionType: 'copyMessage',
|
|
162
|
+
icon: <Copy pathFill={grey} />,
|
|
163
|
+
title: t('Copy Message'),
|
|
164
|
+
}
|
|
165
|
+
: undefined;
|
|
163
166
|
|
|
164
167
|
const deleteMessage: MessageActionType = {
|
|
165
168
|
action: () => {
|
|
@@ -7,7 +7,6 @@ export type MessageActionsParams<
|
|
|
7
7
|
StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,
|
|
8
8
|
> = {
|
|
9
9
|
blockUser: MessageActionType;
|
|
10
|
-
copyMessage: MessageActionType;
|
|
11
10
|
deleteMessage: MessageActionType;
|
|
12
11
|
dismissOverlay: () => void;
|
|
13
12
|
editMessage: MessageActionType;
|
|
@@ -22,6 +21,7 @@ export type MessageActionsParams<
|
|
|
22
21
|
retry: MessageActionType;
|
|
23
22
|
threadReply: MessageActionType;
|
|
24
23
|
unpinMessage: MessageActionType;
|
|
24
|
+
copyMessage?: MessageActionType;
|
|
25
25
|
} & Pick<MessageContextValue<StreamChatGenerics>, 'message' | 'isMyMessage'>;
|
|
26
26
|
|
|
27
27
|
export type MessageActionsProp<
|
|
@@ -73,7 +73,7 @@ export const messageActions = <
|
|
|
73
73
|
actions.push(editMessage);
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
-
if (message.text && !error) {
|
|
76
|
+
if (copyMessage !== undefined && message.text && !error) {
|
|
77
77
|
actions.push(copyMessage);
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -66,7 +66,7 @@ export const getReadStates = <
|
|
|
66
66
|
* to the array of last reads for that message and remove
|
|
67
67
|
* the user from the list of users being checked
|
|
68
68
|
*/
|
|
69
|
-
if (message.
|
|
69
|
+
if (message.created_at < member.last_read) {
|
|
70
70
|
/**
|
|
71
71
|
* if this is a direct message the length will be 1
|
|
72
72
|
* as we already deleted the current user from the object
|
package/src/native.ts
CHANGED
|
@@ -66,6 +66,9 @@ type SaveFileOptions = {
|
|
|
66
66
|
type SaveFile = (options: SaveFileOptions) => Promise<string> | never;
|
|
67
67
|
export let saveFile: SaveFile = fail;
|
|
68
68
|
|
|
69
|
+
type SetClipboardString = (text: string) => Promise<void> | never;
|
|
70
|
+
export let setClipboardString: SetClipboardString = fail;
|
|
71
|
+
|
|
69
72
|
type ShareOptions = {
|
|
70
73
|
type?: string;
|
|
71
74
|
url?: string;
|
|
@@ -216,6 +219,7 @@ type Handlers = {
|
|
|
216
219
|
pickDocument?: PickDocument;
|
|
217
220
|
saveFile?: SaveFile;
|
|
218
221
|
SDK?: string;
|
|
222
|
+
setClipboardString?: SetClipboardString;
|
|
219
223
|
shareImage?: ShareImage;
|
|
220
224
|
Sound?: SoundType;
|
|
221
225
|
takePhoto?: TakePhoto;
|
|
@@ -278,6 +282,10 @@ export const registerNativeHandlers = (handlers: Handlers) => {
|
|
|
278
282
|
if (handlers.Video) {
|
|
279
283
|
Video = handlers.Video;
|
|
280
284
|
}
|
|
285
|
+
|
|
286
|
+
if (handlers.setClipboardString !== undefined) {
|
|
287
|
+
setClipboardString = handlers.setClipboardString;
|
|
288
|
+
}
|
|
281
289
|
};
|
|
282
290
|
|
|
283
291
|
export const isVideoPackageAvailable = () => !!Video;
|
package/src/version.json
CHANGED