Page MenuHomePhabricator

D5780.id19906.diff
No OneTemporary

D5780.id19906.diff

diff --git a/native/chat/reaction-message-utils.js b/native/chat/reaction-message-utils.js
new file mode 100644
--- /dev/null
+++ b/native/chat/reaction-message-utils.js
@@ -0,0 +1,81 @@
+// @flow
+
+import invariant from 'invariant';
+import Alert from 'react-native/Libraries/Alert/Alert';
+
+import {
+ sendReactionMessage,
+ sendReactionMessageActionTypes,
+} from 'lib/actions/message-actions';
+import type { BindServerCall, DispatchFunctions } from 'lib/utils/action-utils';
+
+import type { TooltipRoute } from '../navigation/tooltip.react';
+
+function onPressReact(
+ route:
+ | TooltipRoute<'TextMessageTooltipModal'>
+ | TooltipRoute<'MultimediaMessageTooltipModal'>
+ | TooltipRoute<'RobotextMessageTooltipModal'>,
+ dispatchFunctions: DispatchFunctions,
+ bindServerCall: BindServerCall,
+) {
+ const messageID = route.params.item.messageInfo.id;
+ invariant(messageID, 'messageID should be set');
+
+ const threadID = route.params.item.threadInfo.id;
+ invariant(threadID, 'threadID should be set');
+
+ sendReaction(
+ messageID,
+ threadID,
+ '👍',
+ 'add_reaction',
+ dispatchFunctions,
+ bindServerCall,
+ );
+}
+
+function sendReaction(
+ messageID: string,
+ threadID: string,
+ reaction: string,
+ action: 'add_reaction' | 'remove_reaction',
+ dispatchFunctions: DispatchFunctions,
+ bindServerCall: BindServerCall,
+) {
+ const callSendReactionMessage = bindServerCall(sendReactionMessage);
+
+ const reactionMessagePromise = (async () => {
+ try {
+ const result = await callSendReactionMessage({
+ threadID,
+ targetMessageID: messageID,
+ reaction,
+ action,
+ });
+ return {
+ serverID: result.id,
+ threadID,
+ time: result.newMessageInfo.time,
+ newMessageInfos: [result.newMessageInfo],
+ };
+ } catch (e) {
+ Alert.alert(
+ 'Couldn’t send the reaction',
+ 'Please try again later',
+ [{ text: 'OK' }],
+ {
+ cancelable: true,
+ },
+ );
+ throw e;
+ }
+ })();
+
+ dispatchFunctions.dispatchActionPromise(
+ sendReactionMessageActionTypes,
+ reactionMessagePromise,
+ );
+}
+
+export { onPressReact };

File Metadata

Mime Type
text/plain
Expires
Thu, Nov 28, 11:49 PM (21 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2595191
Default Alt Text
D5780.id19906.diff (2 KB)

Event Timeline