Skip to content

Commit 3871c18

Browse files
authored
Merge pull request #2567 from GetStream/develop
Next Release
2 parents c6d82a0 + 99816a4 commit 3871c18

File tree

14 files changed

+83
-27
lines changed

14 files changed

+83
-27
lines changed

examples/ExpoMessaging/app.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
"ios": {
1919
"supportsTablet": true,
2020
"usesIcloudStorage": true,
21-
"bundleIdentifier": "io.stream.expomessaging"
21+
"bundleIdentifier": "io.stream.expomessagingapp"
2222
},
2323
"android": {
24-
"package": "io.stream.expomessaging",
24+
"package": "io.stream.expomessagingapp",
2525
"adaptiveIcon": {
2626
"foregroundImage": "./assets/adaptive-icon.png",
2727
"backgroundColor": "#ffffff"

examples/ExpoMessaging/app/channel/[cid]/index.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, { useContext, useEffect } from 'react';
22
import { SafeAreaView, View } from 'react-native';
3-
import { useSafeAreaInsets } from 'react-native-safe-area-context';
43
import { Channel, MessageInput, MessageList, useAttachmentPickerContext } from 'stream-chat-expo';
54
import { Stack, useRouter } from 'expo-router';
65
import { AuthProgressLoader } from '../../../components/AuthProgressLoader';
@@ -25,7 +24,11 @@ export default function ChannelScreen() {
2524
<SafeAreaView>
2625
<Stack.Screen options={{ title: 'Channel Screen' }} />
2726
{channel && (
28-
<Channel audioRecordingEnabled={true} channel={channel}>
27+
<Channel
28+
audioRecordingEnabled={true}
29+
channel={channel}
30+
keyboardVerticalOffset={headerHeight}
31+
>
2932
<View style={{ flex: 1 }}>
3033
<MessageList
3134
onThreadSelect={(thread) => {

examples/ExpoMessaging/app/channel/[cid]/thread/[cid]/index.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ import { SafeAreaView, View } from 'react-native';
33
import { Channel, Thread } from 'stream-chat-expo';
44
import { Stack } from 'expo-router';
55
import { AppContext } from '../../../../../context/AppContext';
6+
import { useHeaderHeight } from '@react-navigation/elements';
67

78
export default function ThreadScreen() {
89
const { channel, thread, setThread } = useContext(AppContext);
10+
const headerHeight = useHeaderHeight();
911

1012
if (channel === undefined) {
1113
return null;
@@ -15,7 +17,13 @@ export default function ThreadScreen() {
1517
<SafeAreaView>
1618
<Stack.Screen options={{ title: 'Thread Screen' }} />
1719

18-
<Channel audioRecordingEnabled={true} channel={channel} thread={thread} threadList>
20+
<Channel
21+
audioRecordingEnabled={true}
22+
channel={channel}
23+
keyboardVerticalOffset={headerHeight}
24+
thread={thread}
25+
threadList
26+
>
1927
<View
2028
style={{
2129
flex: 1,

package/.eslintrc.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
"arrow-body-style": 2,
155155
"comma-dangle": 0,
156156
"babel/no-invalid-this": 0,
157-
"@typescript-eslint/no-invalid-this": ["error"],
157+
"@typescript-eslint/no-invalid-this": "error",
158158
"default-case": 2,
159159
"eqeqeq": [2, "smart"],
160160
"linebreak-style": [2, "unix"],
Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
1-
import { VideoComponent } from '../optionalDependencies';
1+
import React, { useEffect } from 'react';
2+
3+
import { AudioComponent, VideoComponent } from '../optionalDependencies';
24

35
export const Video = VideoComponent
4-
? ({ onPlaybackStatusUpdate, paused, resizeMode, style, uri, videoRef }) => (
5-
<VideoComponent
6-
onPlaybackStatusUpdate={onPlaybackStatusUpdate}
7-
ref={videoRef}
8-
resizeMode={resizeMode}
9-
shouldPlay={!paused}
10-
source={{
11-
uri,
12-
}}
13-
style={[style]}
14-
/>
15-
)
6+
? ({ onPlaybackStatusUpdate, paused, resizeMode, style, uri, videoRef }) => {
7+
// This is done so that the audio of the video is not muted when the phone is in silent mode for iOS.
8+
useEffect(() => {
9+
const initializeSound = async () => {
10+
await AudioComponent.setAudioModeAsync({
11+
playsInSilentModeIOS: true,
12+
});
13+
};
14+
initializeSound();
15+
}, []);
16+
17+
return (
18+
<VideoComponent
19+
onPlaybackStatusUpdate={onPlaybackStatusUpdate}
20+
ref={videoRef}
21+
resizeMode={resizeMode}
22+
shouldPlay={!paused}
23+
source={{
24+
uri,
25+
}}
26+
style={[style]}
27+
/>
28+
);
29+
}
1630
: null;

package/src/components/Channel/Channel.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ import { removeReservedFields } from '../../utils/removeReservedFields';
8787
import {
8888
defaultEmojiSearchIndex,
8989
generateRandomId,
90+
getFileNameFromPath,
9091
isBouncedMessage,
9192
isLocalUrl,
9293
MessageStatusTypes,
@@ -1574,7 +1575,7 @@ const ChannelWithContext = <
15741575
attachment.image_url &&
15751576
isLocalUrl(attachment.image_url)
15761577
) {
1577-
const filename = image.name ?? image.uri.replace(/^(file:\/\/|content:\/\/)/, '');
1578+
const filename = image.name ?? getFileNameFromPath(image.uri);
15781579
// if any upload is in progress, cancel it
15791580
const controller = uploadAbortControllerRef.current.get(filename);
15801581
if (controller) {

package/src/components/Message/Message.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -830,7 +830,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
830830
prevMessage.type === nextMessage.type &&
831831
prevMessage.text === nextMessage.text &&
832832
prevMessage.pinned === nextMessage.pinned &&
833-
`${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;
833+
`${prevMessage?.updated_at}` === `${nextMessage?.updated_at}` &&
834+
prevMessage.i18n === nextMessage.i18n;
834835

835836
if (!messageEqual) return false;
836837

package/src/components/Message/MessageSimple/MessageContent.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
474474
prevMessage.status === nextMessage.status &&
475475
prevMessage.type === nextMessage.type &&
476476
prevMessage.text === nextMessage.text &&
477-
prevMessage.pinned === nextMessage.pinned;
477+
prevMessage.pinned === nextMessage.pinned &&
478+
prevMessage.i18n === nextMessage.i18n;
478479
if (!messageEqual) return false;
479480

480481
const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';

package/src/components/Message/MessageSimple/MessageSimple.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
164164
isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&
165165
prevMessage.status === nextMessage.status &&
166166
prevMessage.type === nextMessage.type &&
167-
prevMessage.text === nextMessage.text;
167+
prevMessage.text === nextMessage.text &&
168+
prevMessage.i18n === nextMessage.i18n;
168169
if (!messageEqual) return false;
169170

170171
const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';

package/src/components/Message/MessageSimple/MessageTextContainer.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ const areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = Default
133133
onlyEmojis: nextOnlyEmojis,
134134
} = nextProps;
135135

136-
const messageTextEqual = prevMessage.text === nextMessage.text;
136+
const messageTextEqual =
137+
prevMessage.text === nextMessage.text && prevMessage.i18n === nextMessage.i18n;
137138
if (!messageTextEqual) return false;
138139

139140
const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;

0 commit comments

Comments
 (0)