stream-chat-react-native-core 5.12.0 → 5.12.1-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/useMessageActionHandlers.js +28 -42
- package/lib/commonjs/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/commonjs/i18n/en.json +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js +28 -42
- package/lib/module/components/Message/hooks/useMessageActionHandlers.js.map +1 -1
- package/lib/module/i18n/en.json +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
- package/lib/typescript/i18n/en.json +1 -1
- package/package.json +1 -1
- package/src/components/Message/hooks/useMessageActionHandlers.ts +16 -35
- package/src/i18n/en.json +1 -1
- package/src/version.json +1 -1
|
@@ -14,8 +14,7 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
|
|
|
14
14
|
retrySendMessage = _ref.retrySendMessage,
|
|
15
15
|
sendReaction = _ref.sendReaction,
|
|
16
16
|
setEditingState = _ref.setEditingState,
|
|
17
|
-
setQuotedMessageState = _ref.setQuotedMessageState
|
|
18
|
-
supportedReactions = _ref.supportedReactions;
|
|
17
|
+
setQuotedMessageState = _ref.setQuotedMessageState;
|
|
19
18
|
var handleResendMessage = function handleResendMessage() {
|
|
20
19
|
return retrySendMessage(message);
|
|
21
20
|
};
|
|
@@ -144,65 +143,52 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
|
|
|
144
143
|
var handleEditMessage = function handleEditMessage() {
|
|
145
144
|
setEditingState(message);
|
|
146
145
|
};
|
|
147
|
-
var clientId = client.userID;
|
|
148
|
-
var isMessageTypeDeleted = message.type === 'deleted';
|
|
149
|
-
var hasReactions = !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;
|
|
150
|
-
var reactions = hasReactions ? supportedReactions.reduce(function (acc, cur) {
|
|
151
|
-
var _message$latest_react;
|
|
152
|
-
var reactionType = cur.type;
|
|
153
|
-
var reactionsOfReactionType = (_message$latest_react = message.latest_reactions) == null ? void 0 : _message$latest_react.filter(function (reaction) {
|
|
154
|
-
return reaction.type === reactionType;
|
|
155
|
-
});
|
|
156
|
-
if (reactionsOfReactionType != null && reactionsOfReactionType.length) {
|
|
157
|
-
var hasOwnReaction = reactionsOfReactionType.some(function (reaction) {
|
|
158
|
-
return reaction.user_id === clientId;
|
|
159
|
-
});
|
|
160
|
-
acc.push({
|
|
161
|
-
own: hasOwnReaction,
|
|
162
|
-
type: reactionType
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
return acc;
|
|
166
|
-
}, []) : [];
|
|
167
146
|
var handleToggleReaction = function () {
|
|
168
147
|
var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(reactionType) {
|
|
169
|
-
var
|
|
148
|
+
var _message$own_reaction;
|
|
149
|
+
var messageId, own_reactions, userExistingReaction;
|
|
170
150
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
171
151
|
while (1) switch (_context5.prev = _context5.next) {
|
|
172
152
|
case 0:
|
|
173
153
|
messageId = message.id;
|
|
174
|
-
|
|
175
|
-
|
|
154
|
+
own_reactions = (_message$own_reaction = message.own_reactions) != null ? _message$own_reaction : [];
|
|
155
|
+
userExistingReaction = own_reactions.find(function (reaction) {
|
|
156
|
+
if (reaction.user && client.userID === reaction.user.id && reaction.type === reactionType) {
|
|
157
|
+
return true;
|
|
158
|
+
} else if (reaction.user && client.userID !== reaction.user.id) {
|
|
159
|
+
console.warn("message.own_reactions contained reactions from a different user, this indicates a bug");
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
176
162
|
});
|
|
177
|
-
_context5.prev =
|
|
163
|
+
_context5.prev = 3;
|
|
178
164
|
if (!(channel && messageId)) {
|
|
179
|
-
_context5.next =
|
|
165
|
+
_context5.next = 12;
|
|
180
166
|
break;
|
|
181
167
|
}
|
|
182
|
-
if (!
|
|
183
|
-
_context5.next =
|
|
168
|
+
if (!userExistingReaction) {
|
|
169
|
+
_context5.next = 10;
|
|
184
170
|
break;
|
|
185
171
|
}
|
|
186
|
-
_context5.next =
|
|
187
|
-
return deleteReaction(
|
|
188
|
-
case
|
|
189
|
-
_context5.next =
|
|
172
|
+
_context5.next = 8;
|
|
173
|
+
return deleteReaction(userExistingReaction.type, messageId);
|
|
174
|
+
case 8:
|
|
175
|
+
_context5.next = 12;
|
|
190
176
|
break;
|
|
191
|
-
case
|
|
192
|
-
_context5.next =
|
|
177
|
+
case 10:
|
|
178
|
+
_context5.next = 12;
|
|
193
179
|
return sendReaction(reactionType, messageId);
|
|
194
|
-
case
|
|
195
|
-
_context5.next =
|
|
180
|
+
case 12:
|
|
181
|
+
_context5.next = 17;
|
|
196
182
|
break;
|
|
197
|
-
case
|
|
198
|
-
_context5.prev =
|
|
199
|
-
_context5.t0 = _context5["catch"](
|
|
183
|
+
case 14:
|
|
184
|
+
_context5.prev = 14;
|
|
185
|
+
_context5.t0 = _context5["catch"](3);
|
|
200
186
|
console.log(_context5.t0);
|
|
201
|
-
case
|
|
187
|
+
case 17:
|
|
202
188
|
case "end":
|
|
203
189
|
return _context5.stop();
|
|
204
190
|
}
|
|
205
|
-
}, _callee5, null, [[
|
|
191
|
+
}, _callee5, null, [[3, 14]]);
|
|
206
192
|
}));
|
|
207
193
|
return function handleToggleReaction(_x) {
|
|
208
194
|
return _ref6.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMessageActionHandlers","_ref","channel","client","deleteMessage","deleteReaction","message","retrySendMessage","sendReaction","setEditingState","setQuotedMessageState","supportedReactions","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","_message$user","user","id","userID","target","handleDeleteMessage","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","stop","apply","arguments","handleToggleMuteUser","_ref3","_callee2","_message$user2","_callee2$","_context2","abrupt","unmuteUser","muteUser","handleToggleBanUser","_ref4","_callee3","messageUser","_callee3$","_context3","banned","unbanUser","banUser","handleTogglePinMessage","_ref5","_callee4","MessagePinnedHeaderStatus","_callee4$","_context4","pinned","pinMessage","unpinMessage","handleEditMessage","clientId","isMessageTypeDeleted","type","hasReactions","latest_reactions","length","reactions","reduce","acc","cur","_message$latest_react","reactionType","reactionsOfReactionType","filter","reaction","hasOwnReaction","user_id","push","own","handleToggleReaction","_ref6","_callee5","messageId","ownReaction","_callee5$","_context5","find","t0","console","log","_x","exports"],"sources":["useMessageActionHandlers.ts"],"sourcesContent":["import type { MessageResponse } from 'stream-chat';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type {\n MessageContextValue,\n Reactions,\n} from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n deleteMessage,\n deleteReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\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 handleDeleteMessage = async () => {\n await deleteMessage(message as MessageResponse<StreamChatGenerics>);\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const clientId = client.userID;\n const isMessageTypeDeleted = message.type === 'deleted';\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await deleteReaction(reactionType, messageId);\n } else {\n await sendReaction(reactionType, messageId);\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useMessageActionHandlers","_ref","channel","client","deleteMessage","deleteReaction","message","retrySendMessage","sendReaction","setEditingState","setQuotedMessageState","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","_message$user","user","id","userID","target","handleDeleteMessage","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","stop","apply","arguments","handleToggleMuteUser","_ref3","_callee2","_message$user2","_callee2$","_context2","abrupt","unmuteUser","muteUser","handleToggleBanUser","_ref4","_callee3","messageUser","_callee3$","_context3","banned","unbanUser","banUser","handleTogglePinMessage","_ref5","_callee4","MessagePinnedHeaderStatus","_callee4$","_context4","pinned","pinMessage","unpinMessage","handleEditMessage","handleToggleReaction","_ref6","_callee5","reactionType","_message$own_reaction","messageId","own_reactions","userExistingReaction","_callee5$","_context5","find","reaction","type","console","warn","t0","log","_x","exports"],"sources":["useMessageActionHandlers.ts"],"sourcesContent":["import type { MessageResponse } from 'stream-chat';\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';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n deleteMessage,\n deleteReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\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 handleDeleteMessage = async () => {\n await deleteMessage(message as MessageResponse<StreamChatGenerics>);\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const own_reactions = message.own_reactions ?? [];\n const userExistingReaction = own_reactions.find((reaction) => {\n // own user should only ever contain the current user id\n // just in case we check to prevent bugs with message updates from breaking reactions\n if (reaction.user && client.userID === reaction.user.id && reaction.type === reactionType) {\n return true;\n } else if (reaction.user && client.userID !== reaction.user.id) {\n console.warn(\n `message.own_reactions contained reactions from a different user, this indicates a bug`,\n );\n }\n return false;\n });\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (userExistingReaction) {\n await deleteReaction(userExistingReaction.type, messageId);\n } else {\n await sendReaction(reactionType, messageId);\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?",
|
|
7
7
|
"Block User": "Block User",
|
|
8
8
|
"Cancel": "Cancel",
|
|
9
|
-
"Cannot Flag Message": "Cannot
|
|
9
|
+
"Cannot Flag Message": "Cannot Flag Message",
|
|
10
10
|
"Copy Message": "Copy Message",
|
|
11
11
|
"Delete": "Delete",
|
|
12
12
|
"Delete Message": "Delete Message",
|
|
@@ -14,8 +14,7 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
|
|
|
14
14
|
retrySendMessage = _ref.retrySendMessage,
|
|
15
15
|
sendReaction = _ref.sendReaction,
|
|
16
16
|
setEditingState = _ref.setEditingState,
|
|
17
|
-
setQuotedMessageState = _ref.setQuotedMessageState
|
|
18
|
-
supportedReactions = _ref.supportedReactions;
|
|
17
|
+
setQuotedMessageState = _ref.setQuotedMessageState;
|
|
19
18
|
var handleResendMessage = function handleResendMessage() {
|
|
20
19
|
return retrySendMessage(message);
|
|
21
20
|
};
|
|
@@ -144,65 +143,52 @@ var useMessageActionHandlers = function useMessageActionHandlers(_ref) {
|
|
|
144
143
|
var handleEditMessage = function handleEditMessage() {
|
|
145
144
|
setEditingState(message);
|
|
146
145
|
};
|
|
147
|
-
var clientId = client.userID;
|
|
148
|
-
var isMessageTypeDeleted = message.type === 'deleted';
|
|
149
|
-
var hasReactions = !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;
|
|
150
|
-
var reactions = hasReactions ? supportedReactions.reduce(function (acc, cur) {
|
|
151
|
-
var _message$latest_react;
|
|
152
|
-
var reactionType = cur.type;
|
|
153
|
-
var reactionsOfReactionType = (_message$latest_react = message.latest_reactions) == null ? void 0 : _message$latest_react.filter(function (reaction) {
|
|
154
|
-
return reaction.type === reactionType;
|
|
155
|
-
});
|
|
156
|
-
if (reactionsOfReactionType != null && reactionsOfReactionType.length) {
|
|
157
|
-
var hasOwnReaction = reactionsOfReactionType.some(function (reaction) {
|
|
158
|
-
return reaction.user_id === clientId;
|
|
159
|
-
});
|
|
160
|
-
acc.push({
|
|
161
|
-
own: hasOwnReaction,
|
|
162
|
-
type: reactionType
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
return acc;
|
|
166
|
-
}, []) : [];
|
|
167
146
|
var handleToggleReaction = function () {
|
|
168
147
|
var _ref6 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee5(reactionType) {
|
|
169
|
-
var
|
|
148
|
+
var _message$own_reaction;
|
|
149
|
+
var messageId, own_reactions, userExistingReaction;
|
|
170
150
|
return _regenerator["default"].wrap(function _callee5$(_context5) {
|
|
171
151
|
while (1) switch (_context5.prev = _context5.next) {
|
|
172
152
|
case 0:
|
|
173
153
|
messageId = message.id;
|
|
174
|
-
|
|
175
|
-
|
|
154
|
+
own_reactions = (_message$own_reaction = message.own_reactions) != null ? _message$own_reaction : [];
|
|
155
|
+
userExistingReaction = own_reactions.find(function (reaction) {
|
|
156
|
+
if (reaction.user && client.userID === reaction.user.id && reaction.type === reactionType) {
|
|
157
|
+
return true;
|
|
158
|
+
} else if (reaction.user && client.userID !== reaction.user.id) {
|
|
159
|
+
console.warn("message.own_reactions contained reactions from a different user, this indicates a bug");
|
|
160
|
+
}
|
|
161
|
+
return false;
|
|
176
162
|
});
|
|
177
|
-
_context5.prev =
|
|
163
|
+
_context5.prev = 3;
|
|
178
164
|
if (!(channel && messageId)) {
|
|
179
|
-
_context5.next =
|
|
165
|
+
_context5.next = 12;
|
|
180
166
|
break;
|
|
181
167
|
}
|
|
182
|
-
if (!
|
|
183
|
-
_context5.next =
|
|
168
|
+
if (!userExistingReaction) {
|
|
169
|
+
_context5.next = 10;
|
|
184
170
|
break;
|
|
185
171
|
}
|
|
186
|
-
_context5.next =
|
|
187
|
-
return deleteReaction(
|
|
188
|
-
case
|
|
189
|
-
_context5.next =
|
|
172
|
+
_context5.next = 8;
|
|
173
|
+
return deleteReaction(userExistingReaction.type, messageId);
|
|
174
|
+
case 8:
|
|
175
|
+
_context5.next = 12;
|
|
190
176
|
break;
|
|
191
|
-
case
|
|
192
|
-
_context5.next =
|
|
177
|
+
case 10:
|
|
178
|
+
_context5.next = 12;
|
|
193
179
|
return sendReaction(reactionType, messageId);
|
|
194
|
-
case
|
|
195
|
-
_context5.next =
|
|
180
|
+
case 12:
|
|
181
|
+
_context5.next = 17;
|
|
196
182
|
break;
|
|
197
|
-
case
|
|
198
|
-
_context5.prev =
|
|
199
|
-
_context5.t0 = _context5["catch"](
|
|
183
|
+
case 14:
|
|
184
|
+
_context5.prev = 14;
|
|
185
|
+
_context5.t0 = _context5["catch"](3);
|
|
200
186
|
console.log(_context5.t0);
|
|
201
|
-
case
|
|
187
|
+
case 17:
|
|
202
188
|
case "end":
|
|
203
189
|
return _context5.stop();
|
|
204
190
|
}
|
|
205
|
-
}, _callee5, null, [[
|
|
191
|
+
}, _callee5, null, [[3, 14]]);
|
|
206
192
|
}));
|
|
207
193
|
return function handleToggleReaction(_x) {
|
|
208
194
|
return _ref6.apply(this, arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMessageActionHandlers","_ref","channel","client","deleteMessage","deleteReaction","message","retrySendMessage","sendReaction","setEditingState","setQuotedMessageState","supportedReactions","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","_message$user","user","id","userID","target","handleDeleteMessage","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","stop","apply","arguments","handleToggleMuteUser","_ref3","_callee2","_message$user2","_callee2$","_context2","abrupt","unmuteUser","muteUser","handleToggleBanUser","_ref4","_callee3","messageUser","_callee3$","_context3","banned","unbanUser","banUser","handleTogglePinMessage","_ref5","_callee4","MessagePinnedHeaderStatus","_callee4$","_context4","pinned","pinMessage","unpinMessage","handleEditMessage","clientId","isMessageTypeDeleted","type","hasReactions","latest_reactions","length","reactions","reduce","acc","cur","_message$latest_react","reactionType","reactionsOfReactionType","filter","reaction","hasOwnReaction","user_id","push","own","handleToggleReaction","_ref6","_callee5","messageId","ownReaction","_callee5$","_context5","find","t0","console","log","_x","exports"],"sources":["useMessageActionHandlers.ts"],"sourcesContent":["import type { MessageResponse } from 'stream-chat';\n\nimport type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';\nimport type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';\nimport type {\n MessageContextValue,\n Reactions,\n} from '../../../contexts/messageContext/MessageContext';\nimport type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n deleteMessage,\n deleteReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n supportedReactions,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\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 handleDeleteMessage = async () => {\n await deleteMessage(message as MessageResponse<StreamChatGenerics>);\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const clientId = client.userID;\n const isMessageTypeDeleted = message.type === 'deleted';\n\n const hasReactions =\n !isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;\n\n const reactions = hasReactions\n ? supportedReactions.reduce((acc, cur) => {\n const reactionType = cur.type;\n const reactionsOfReactionType = message.latest_reactions?.filter(\n (reaction) => reaction.type === reactionType,\n );\n\n if (reactionsOfReactionType?.length) {\n const hasOwnReaction = reactionsOfReactionType.some(\n (reaction) => reaction.user_id === clientId,\n );\n acc.push({ own: hasOwnReaction, type: reactionType });\n }\n\n return acc;\n }, [] as Reactions)\n : [];\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const ownReaction = !!reactions.find(\n (reaction) => reaction.own && reaction.type === reactionType,\n );\n\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (ownReaction) {\n await deleteReaction(reactionType, messageId);\n } else {\n await sendReaction(reactionType, messageId);\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["useMessageActionHandlers","_ref","channel","client","deleteMessage","deleteReaction","message","retrySendMessage","sendReaction","setEditingState","setQuotedMessageState","handleResendMessage","handleQuotedReplyMessage","isMuted","mutedUsers","some","mute","_message$user","user","id","userID","target","handleDeleteMessage","_ref2","_asyncToGenerator2","_regenerator","mark","_callee","wrap","_callee$","_context","prev","next","stop","apply","arguments","handleToggleMuteUser","_ref3","_callee2","_message$user2","_callee2$","_context2","abrupt","unmuteUser","muteUser","handleToggleBanUser","_ref4","_callee3","messageUser","_callee3$","_context3","banned","unbanUser","banUser","handleTogglePinMessage","_ref5","_callee4","MessagePinnedHeaderStatus","_callee4$","_context4","pinned","pinMessage","unpinMessage","handleEditMessage","handleToggleReaction","_ref6","_callee5","reactionType","_message$own_reaction","messageId","own_reactions","userExistingReaction","_callee5$","_context5","find","reaction","type","console","warn","t0","log","_x","exports"],"sources":["useMessageActionHandlers.ts"],"sourcesContent":["import type { MessageResponse } from 'stream-chat';\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';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\nexport const useMessageActionHandlers = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n channel,\n client,\n deleteMessage,\n deleteReaction,\n message,\n retrySendMessage,\n sendReaction,\n setEditingState,\n setQuotedMessageState,\n}: Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'sendReaction'\n | 'deleteMessage'\n | 'deleteReaction'\n | 'retrySendMessage'\n | 'setEditingState'\n | 'setQuotedMessageState'\n | 'supportedReactions'\n> &\n Pick<ChannelContextValue<StreamChatGenerics>, 'channel' | 'enforceUniqueReaction'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Pick<MessageContextValue<StreamChatGenerics>, 'message'>) => {\n const handleResendMessage = () =>\n retrySendMessage(message as MessageResponse<StreamChatGenerics>);\n\n const handleQuotedReplyMessage = () => {\n setQuotedMessageState(message);\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 handleDeleteMessage = async () => {\n await deleteMessage(message as MessageResponse<StreamChatGenerics>);\n };\n\n const handleToggleMuteUser = async () => {\n if (!message.user?.id) {\n return;\n }\n\n if (isMuted) {\n await client.unmuteUser(message.user.id);\n } else {\n await client.muteUser(message.user.id);\n }\n };\n\n const handleToggleBanUser = async () => {\n const messageUser = message.user;\n if (!messageUser) {\n return;\n }\n\n if (messageUser.banned) {\n await client.unbanUser(messageUser.id);\n } else {\n await client.banUser(messageUser.id);\n }\n };\n\n const handleTogglePinMessage = async () => {\n const MessagePinnedHeaderStatus = message.pinned;\n if (!MessagePinnedHeaderStatus) {\n await client.pinMessage(message, null);\n } else {\n await client.unpinMessage(message);\n }\n };\n\n const handleEditMessage = () => {\n setEditingState(message);\n };\n\n const handleToggleReaction = async (reactionType: string) => {\n const messageId = message.id;\n const own_reactions = message.own_reactions ?? [];\n const userExistingReaction = own_reactions.find((reaction) => {\n // own user should only ever contain the current user id\n // just in case we check to prevent bugs with message updates from breaking reactions\n if (reaction.user && client.userID === reaction.user.id && reaction.type === reactionType) {\n return true;\n } else if (reaction.user && client.userID !== reaction.user.id) {\n console.warn(\n `message.own_reactions contained reactions from a different user, this indicates a bug`,\n );\n }\n return false;\n });\n // Change reaction in local state, make API call in background, revert to old message if fails\n try {\n if (channel && messageId) {\n if (userExistingReaction) {\n await deleteReaction(userExistingReaction.type, messageId);\n } else {\n await sendReaction(reactionType, messageId);\n }\n }\n } catch (err) {\n console.log(err);\n }\n };\n\n return {\n handleDeleteMessage,\n handleEditMessage,\n handleQuotedReplyMessage,\n handleResendMessage,\n handleToggleBanUser,\n handleToggleMuteUser,\n handleTogglePinMessage,\n handleToggleReaction,\n };\n};\n"],"mappings":"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"}
|
package/lib/module/i18n/en.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?",
|
|
7
7
|
"Block User": "Block User",
|
|
8
8
|
"Cancel": "Cancel",
|
|
9
|
-
"Cannot Flag Message": "Cannot
|
|
9
|
+
"Cannot Flag Message": "Cannot Flag Message",
|
|
10
10
|
"Copy Message": "Copy Message",
|
|
11
11
|
"Delete": "Delete",
|
|
12
12
|
"Delete Message": "Delete Message",
|
package/lib/module/version.json
CHANGED
|
@@ -3,7 +3,7 @@ import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext
|
|
|
3
3
|
import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
|
|
4
4
|
import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
5
5
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
6
|
-
export declare const useMessageActionHandlers: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage, deleteReaction, message, retrySendMessage, sendReaction, setEditingState, setQuotedMessageState,
|
|
6
|
+
export declare const useMessageActionHandlers: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>({ channel, client, deleteMessage, deleteReaction, message, retrySendMessage, sendReaction, setEditingState, setQuotedMessageState, }: Pick<MessagesContextValue<StreamChatGenerics>, "setQuotedMessageState" | "supportedReactions" | "deleteMessage" | "deleteReaction" | "retrySendMessage" | "sendReaction" | "setEditingState"> & Pick<ChannelContextValue<StreamChatGenerics>, "channel" | "enforceUniqueReaction"> & Pick<ChatContextValue<StreamChatGenerics>, "client"> & Pick<MessageContextValue<StreamChatGenerics>, "message">) => {
|
|
7
7
|
handleDeleteMessage: () => Promise<void>;
|
|
8
8
|
handleEditMessage: () => void;
|
|
9
9
|
handleQuotedReplyMessage: () => void;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?",
|
|
7
7
|
"Block User": "Block User",
|
|
8
8
|
"Cancel": "Cancel",
|
|
9
|
-
"Cannot Flag Message": "Cannot
|
|
9
|
+
"Cannot Flag Message": "Cannot Flag Message",
|
|
10
10
|
"Copy Message": "Copy Message",
|
|
11
11
|
"Delete": "Delete",
|
|
12
12
|
"Delete Message": "Delete Message",
|
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.12.
|
|
4
|
+
"version": "5.12.1-beta.2",
|
|
5
5
|
"author": {
|
|
6
6
|
"company": "Stream.io Inc",
|
|
7
7
|
"name": "Stream.io Inc"
|
|
@@ -2,10 +2,7 @@ import type { MessageResponse } from 'stream-chat';
|
|
|
2
2
|
|
|
3
3
|
import type { ChannelContextValue } from '../../../contexts/channelContext/ChannelContext';
|
|
4
4
|
import type { ChatContextValue } from '../../../contexts/chatContext/ChatContext';
|
|
5
|
-
import type {
|
|
6
|
-
MessageContextValue,
|
|
7
|
-
Reactions,
|
|
8
|
-
} from '../../../contexts/messageContext/MessageContext';
|
|
5
|
+
import type { MessageContextValue } from '../../../contexts/messageContext/MessageContext';
|
|
9
6
|
import type { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext';
|
|
10
7
|
|
|
11
8
|
import type { DefaultStreamChatGenerics } from '../../../types/types';
|
|
@@ -22,7 +19,6 @@ export const useMessageActionHandlers = <
|
|
|
22
19
|
sendReaction,
|
|
23
20
|
setEditingState,
|
|
24
21
|
setQuotedMessageState,
|
|
25
|
-
supportedReactions,
|
|
26
22
|
}: Pick<
|
|
27
23
|
MessagesContextValue<StreamChatGenerics>,
|
|
28
24
|
| 'sendReaction'
|
|
@@ -89,41 +85,26 @@ export const useMessageActionHandlers = <
|
|
|
89
85
|
setEditingState(message);
|
|
90
86
|
};
|
|
91
87
|
|
|
92
|
-
const clientId = client.userID;
|
|
93
|
-
const isMessageTypeDeleted = message.type === 'deleted';
|
|
94
|
-
|
|
95
|
-
const hasReactions =
|
|
96
|
-
!isMessageTypeDeleted && !!message.latest_reactions && message.latest_reactions.length > 0;
|
|
97
|
-
|
|
98
|
-
const reactions = hasReactions
|
|
99
|
-
? supportedReactions.reduce((acc, cur) => {
|
|
100
|
-
const reactionType = cur.type;
|
|
101
|
-
const reactionsOfReactionType = message.latest_reactions?.filter(
|
|
102
|
-
(reaction) => reaction.type === reactionType,
|
|
103
|
-
);
|
|
104
|
-
|
|
105
|
-
if (reactionsOfReactionType?.length) {
|
|
106
|
-
const hasOwnReaction = reactionsOfReactionType.some(
|
|
107
|
-
(reaction) => reaction.user_id === clientId,
|
|
108
|
-
);
|
|
109
|
-
acc.push({ own: hasOwnReaction, type: reactionType });
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return acc;
|
|
113
|
-
}, [] as Reactions)
|
|
114
|
-
: [];
|
|
115
|
-
|
|
116
88
|
const handleToggleReaction = async (reactionType: string) => {
|
|
117
89
|
const messageId = message.id;
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
90
|
+
const own_reactions = message.own_reactions ?? [];
|
|
91
|
+
const userExistingReaction = own_reactions.find((reaction) => {
|
|
92
|
+
// own user should only ever contain the current user id
|
|
93
|
+
// just in case we check to prevent bugs with message updates from breaking reactions
|
|
94
|
+
if (reaction.user && client.userID === reaction.user.id && reaction.type === reactionType) {
|
|
95
|
+
return true;
|
|
96
|
+
} else if (reaction.user && client.userID !== reaction.user.id) {
|
|
97
|
+
console.warn(
|
|
98
|
+
`message.own_reactions contained reactions from a different user, this indicates a bug`,
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
return false;
|
|
102
|
+
});
|
|
122
103
|
// Change reaction in local state, make API call in background, revert to old message if fails
|
|
123
104
|
try {
|
|
124
105
|
if (channel && messageId) {
|
|
125
|
-
if (
|
|
126
|
-
await deleteReaction(
|
|
106
|
+
if (userExistingReaction) {
|
|
107
|
+
await deleteReaction(userExistingReaction.type, messageId);
|
|
127
108
|
} else {
|
|
128
109
|
await sendReaction(reactionType, messageId);
|
|
129
110
|
}
|
package/src/i18n/en.json
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
"Are you sure you want to permanently delete this message?": "Are you sure you want to permanently delete this message?",
|
|
7
7
|
"Block User": "Block User",
|
|
8
8
|
"Cancel": "Cancel",
|
|
9
|
-
"Cannot Flag Message": "Cannot
|
|
9
|
+
"Cannot Flag Message": "Cannot Flag Message",
|
|
10
10
|
"Copy Message": "Copy Message",
|
|
11
11
|
"Delete": "Delete",
|
|
12
12
|
"Delete Message": "Delete Message",
|
package/src/version.json
CHANGED