Page MenuHomePhorge

D8873.1765355037.diff
No OneTemporary

Size
3 KB
Referenced Files
None
Subscribers
None

D8873.1765355037.diff

diff --git a/native/chat/message-list-types.js b/native/chat/message-list-types.js
--- a/native/chat/message-list-types.js
+++ b/native/chat/message-list-types.js
@@ -1,16 +1,20 @@
// @flow
-import { useNavigation } from '@react-navigation/native';
+import { useNavigation, useNavigationState } from '@react-navigation/native';
import invariant from 'invariant';
import * as React from 'react';
import type { ThreadInfo } from 'lib/types/thread-types.js';
import { type UserInfo } from 'lib/types/user-types.js';
+import { ChatContext } from './chat-context.js';
import type { ChatRouterNavigationAction } from './chat-router.js';
import type { MarkdownRules } from '../markdown/rules.react.js';
import { useTextMessageRulesFunc } from '../markdown/rules.react.js';
-import { MessageListRouteName } from '../navigation/route-names.js';
+import {
+ MessageListRouteName,
+ TextMessageTooltipModalRouteName,
+} from '../navigation/route-names.js';
export type MessageListParams = {
+threadInfo: ThreadInfo,
@@ -84,9 +88,41 @@
return messageListContext.getTextMessageMarkdownRules(useDarkStyle);
}
+function useNavigateToThreadWithFadeAnimation(
+ threadInfo: ThreadInfo,
+ messageKey: ?string,
+): () => mixed {
+ const chatContext = React.useContext(ChatContext);
+ invariant(chatContext, 'ChatContext should be set');
+ const {
+ setCurrentTransitionSidebarSourceID: setSidebarSourceID,
+ setSidebarAnimationType,
+ } = chatContext;
+ const navigateToThread = useNavigateToThread();
+ const navigationStack = useNavigationState(state => state.routes);
+ return React.useCallback(() => {
+ if (
+ navigationStack[navigationStack.length - 1].name ===
+ TextMessageTooltipModalRouteName
+ ) {
+ setSidebarSourceID(messageKey);
+ setSidebarAnimationType('fade_source_message');
+ }
+ navigateToThread({ threadInfo });
+ }, [
+ messageKey,
+ navigateToThread,
+ navigationStack,
+ setSidebarAnimationType,
+ setSidebarSourceID,
+ threadInfo,
+ ]);
+}
+
export {
MessageListContextProvider,
createNavigateToThreadAction,
useNavigateToThread,
useTextMessageMarkdownRules,
+ useNavigateToThreadWithFadeAnimation,
};
diff --git a/native/markdown/markdown-chat-mention.react.js b/native/markdown/markdown-chat-mention.react.js
--- a/native/markdown/markdown-chat-mention.react.js
+++ b/native/markdown/markdown-chat-mention.react.js
@@ -3,20 +3,30 @@
import * as React from 'react';
import { Text, StyleSheet } from 'react-native';
+import type { ResolvedThreadInfo } from 'lib/types/thread-types.js';
+
import { useMarkdownOnPressUtils } from './markdown-utils.js';
+import { useNavigateToThreadWithFadeAnimation } from '../chat/message-list-types.js';
type TextProps = React.ElementConfig<typeof Text>;
type Props = {
+ +threadInfo: ResolvedThreadInfo,
+hasAccessToChat: boolean,
+children: React.Node,
...TextProps,
};
function MarkdownChatMention(props: Props): React.Node {
- const { hasAccessToChat, ...rest } = props;
- const { isRevealed, onLongPressHandler } = useMarkdownOnPressUtils();
+ const { threadInfo, hasAccessToChat, ...rest } = props;
+ const { messageKey, isRevealed, onLongPressHandler } =
+ useMarkdownOnPressUtils();
const shouldBePressable = hasAccessToChat ? isRevealed : false;
+ const onPressHandler = useNavigateToThreadWithFadeAnimation(
+ threadInfo,
+ messageKey,
+ );
return (
<Text
+ onPress={shouldBePressable ? onPressHandler : null}
onLongPress={shouldBePressable ? onLongPressHandler : null}
style={hasAccessToChat ? styles.mention : null}
{...rest}

File Metadata

Mime Type
text/plain
Expires
Wed, Dec 10, 8:23 AM (15 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5862467
Default Alt Text
D8873.1765355037.diff (3 KB)

Event Timeline