Skip to content

Commit 2206492

Browse files
committed
feat: apply rtl to thread
1 parent 9027aaf commit 2206492

File tree

5 files changed

+60
-50
lines changed

5 files changed

+60
-50
lines changed

packages/uikit-react-native/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.og.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ const ThreadParentMessageUserOg = (props: Props) => {
3333
});
3434

3535
return (
36-
<Box>
36+
<Box flex={1} alignItems={'flex-start'}>
3737
<PressBox activeOpacity={0.85} onPress={onPressMessage(userMessage)}>
3838
<Text
3939
body3

packages/uikit-react-native/src/components/ThreadParentMessageRenderer/ThreadParentMessage.user.tsx

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import React from 'react';
22

3-
import { type RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
3+
import { Box, type RegexTextPattern, Text, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
44
import { RegexText, createStyleSheet } from '@sendbird/uikit-react-native-foundation';
55
import { SendbirdUserMessage, urlRegexStrict } from '@sendbird/uikit-utils';
66

@@ -18,40 +18,43 @@ const ThreadParentMessageUser = (props: Props) => {
1818
const { colors } = useUIKitTheme();
1919

2020
return (
21-
<Text body3 color={colors.onBackground01} suppressHighlighting supportRTLAlign originalText={userMessage.message}>
22-
<RegexText
23-
body3
24-
suppressHighlighting
25-
supportRTLAlign
26-
originalText={userMessage.message}
27-
color={colors.onBackground01}
28-
patterns={[
29-
...(props.regexTextPatterns ?? []),
30-
{
31-
regex: urlRegexStrict,
32-
replacer({ match, parentProps, keyPrefix, index }) {
33-
return (
34-
<Text
35-
{...parentProps}
36-
key={`${keyPrefix}-${index}`}
37-
onPress={() => props.onPressURL?.(match)}
38-
style={[parentProps?.style, styles.urlText]}
39-
>
40-
{match}
41-
</Text>
42-
);
21+
<Box flex={1} alignItems={'flex-start'}>
22+
<Text body3 color={colors.onBackground01} suppressHighlighting supportRTLAlign originalText={userMessage.message}>
23+
<RegexText
24+
body3
25+
suppressHighlighting
26+
supportRTLAlign
27+
originalText={userMessage.message}
28+
color={colors.onBackground01}
29+
patterns={[
30+
...(props.regexTextPatterns ?? []),
31+
{
32+
regex: urlRegexStrict,
33+
replacer({ match, parentProps, keyPrefix, index }) {
34+
return (
35+
<Text
36+
{...parentProps}
37+
key={`${keyPrefix}-${index}`}
38+
onPress={() => props.onPressURL?.(match)}
39+
style={[parentProps?.style, styles.urlText]}
40+
>
41+
{match}
42+
</Text>
43+
);
44+
},
4345
},
44-
},
45-
]}
46-
>
47-
{props.renderRegexTextChildren?.(userMessage)}
48-
</RegexText>
49-
{Boolean(userMessage.updatedAt) && (
50-
<Text body3 color={colors.onBackground02}>
51-
{' (edited)'}
52-
</Text>
53-
)}
54-
</Text>
46+
]}
47+
>
48+
{props.renderRegexTextChildren?.(userMessage)}
49+
</RegexText>
50+
{Boolean(userMessage.updatedAt) && (
51+
<Text body3 color={colors.onBackground02}>
52+
{/*FIXME: edited to string set*/}
53+
{' (edited)'}
54+
</Text>
55+
)}
56+
</Text>
57+
</Box>
5558
);
5659
};
5760

packages/uikit-react-native/src/domain/groupChannel/component/GroupChannelSuggestedMentionList.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const GroupChannelSuggestedMentionList = ({
7575
style={styles.userContainer}
7676
>
7777
<Avatar size={28} uri={member.profileUrl} containerStyle={styles.userAvatar} />
78-
<Box style={styles.userInfo} >
78+
<Box style={styles.userInfo}>
7979
<Text body2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>
8080
{member.nickname || STRINGS.LABELS.USER_NO_NAME}
8181
</Text>

packages/uikit-react-native/src/domain/groupChannelThread/component/GroupChannelThreadHeader.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import React, { useContext } from 'react';
2-
import { View } from 'react-native';
32

4-
import { Icon, Text, createStyleSheet, useHeaderStyle, useUIKitTheme } from '@sendbird/uikit-react-native-foundation';
3+
import {
4+
Box,
5+
Icon,
6+
Text,
7+
createStyleSheet,
8+
useHeaderStyle,
9+
useUIKitTheme,
10+
} from '@sendbird/uikit-react-native-foundation';
511

612
import { useLocalization, useSendbirdChat } from '../../../hooks/useContext';
713
import { GroupChannelThreadContexts } from '../module/moduleContext';
@@ -34,14 +40,14 @@ const GroupChannelThreadHeader = ({ onPressLeft, onPressSubtitle }: GroupChannel
3440
<HeaderComponent
3541
clearTitleMargin
3642
title={
37-
<View style={styles.titleContainer}>
38-
<View style={{ flexShrink: 1 }}>
43+
<Box style={styles.titleContainer}>
44+
<Box flexShrink={1} alignItems={'flex-start'}>
3945
<Text h2 color={colors.onBackground01} numberOfLines={1}>
4046
{headerTitle}
4147
</Text>
4248
{renderSubtitle()}
43-
</View>
44-
</View>
49+
</Box>
50+
</Box>
4551
}
4652
left={<Icon icon={'arrow-left'} size={24} />}
4753
onPressLeft={onPressLeft}

packages/uikit-react-native/src/domain/groupChannelThread/component/GroupChannelThreadParentMessageInfo.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { TouchableOpacity, View } from 'react-native';
44
import {
55
Avatar,
66
BottomSheetItem,
7+
Box,
78
Divider,
89
Icon,
910
Text,
@@ -60,32 +61,32 @@ const GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['Par
6061

6162
const renderMessageInfoAndMenu = () => {
6263
return (
63-
<View style={styles.infoAndMenuContainer}>
64+
<Box style={styles.infoAndMenuContainer}>
6465
<Avatar size={34} uri={parentMessage.sender?.profileUrl} />
65-
<View style={styles.userNickAndTimeContainer}>
66+
<Box style={styles.userNickAndTimeContainer} alignItems={'flex-start'}>
6667
<Text h2 color={colors.onBackground01} numberOfLines={1} style={styles.userNickname}>
6768
{nickName}
6869
</Text>
6970
<Text caption2 color={colors.onBackground03} style={styles.messageTime}>
7071
{messageTimestamp}
7172
</Text>
72-
</View>
73+
</Box>
7374
<TouchableOpacity activeOpacity={0.7} onPress={bottomSheetItem ? onLongPress : undefined}>
7475
<Icon icon={'more'} color={colors.onBackground02} />
7576
</TouchableOpacity>
76-
</View>
77+
</Box>
7778
);
7879
};
7980

8081
const renderReplyCount = (replyCountText: string) => {
8182
if (replyCountText) {
8283
return (
83-
<View style={styles.replyContainer}>
84-
<Text caption3 color={colors.onBackground03} style={styles.replyText}>
84+
<Box style={styles.replyContainer} alignItems={'flex-start'}>
85+
<Text caption3 color={colors.onBackground03} style={styles.replyText} numberOfLines={1}>
8586
{replyCountText}
8687
</Text>
8788
<Divider />
88-
</View>
89+
</Box>
8990
);
9091
} else {
9192
return null;
@@ -119,7 +120,7 @@ const GroupChannelThreadParentMessageInfo = (props: GroupChannelThreadProps['Par
119120
<View>
120121
<View style={styles.container}>{renderMessageInfoAndMenu()}</View>
121122
<View style={styles.messageContainer}>
122-
<ThreadParentMessageRenderer {...messageProps}></ThreadParentMessageRenderer>
123+
<ThreadParentMessageRenderer {...messageProps} />
123124
</View>
124125
{renderReactionAddons()}
125126
<Divider />

0 commit comments

Comments
 (0)