Skip to content

Commit 5c3daf0

Browse files
MRN-868,MRN-880
1 parent 80dd95a commit 5c3daf0

File tree

4 files changed

+32
-25
lines changed

4 files changed

+32
-25
lines changed

src/components/ChatInput.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import { setAudioRecordTime, setAudioRecording, setTextMessage } from '../redux/
4040
import {
4141
getAudioRecordTime,
4242
getAudioRecording,
43-
getRoomLink,
43+
getCurrentCallRoomId,
4444
getUserNameFromStore,
4545
useAudioRecordTime,
4646
useAudioRecording,
@@ -61,7 +61,8 @@ audioRecordRef.current = {};
6161
let userId = '',
6262
fileInfo = {},
6363
fileName = {},
64-
audioRecordClick = 0;
64+
audioRecordClick = 0,
65+
isAudioClicked = false;
6566

6667
export const chatInputRef = createRef();
6768
chatInputRef.current = {};
@@ -81,7 +82,6 @@ export const cancelAudioRecord = () => {
8182
function ChatInput({ chatUser }) {
8283
userId = getUserIdFromJid(chatUser);
8384
const stringSet = getStringSet();
84-
let isAudioClicked = false;
8585
const themeColorPalatte = useThemeColorPalatte();
8686
const dispatch = useDispatch();
8787
const appState = useAppState();
@@ -234,26 +234,25 @@ function ChatInput({ chatUser }) {
234234
};
235235

236236
const onResetRecord = () => {
237+
isAudioClicked = false;
237238
setAudioRecording('');
238239
setRecordTime('');
239240
setRecordSecs(0);
240241
setShowDeleteIcon(false);
241242
dispatch(setAudioRecording({ userId, message: '' }));
242-
isAudioClicked = false;
243243
};
244244

245245
const onStartRecord = async () => {
246246
try {
247-
if (isAudioClicked) {
247+
const roomId = getCurrentCallRoomId();
248+
if (roomId) {
249+
showToast(stringSet.TOAST_MESSAGES.AUDIO_CANNOT_BE_RECORDED_WHILE_IN_CALL);
248250
return;
249251
}
250-
isAudioClicked = true;
251-
const roomLink = getRoomLink();
252-
if (roomLink) {
253-
showToast(stringSet.TOAST_MESSAGES.AUDIO_CANNOT_BE_RECORDED_WHILE_IN_CALL);
252+
if (isAudioClicked) {
254253
return;
255254
}
256-
console.log('onStartRecord ==> ');
255+
isAudioClicked = true;
257256
pauseAudio();
258257
audioRecordClick += 1;
259258
const res = await audioRecordPermission();

src/hooks/useMediaMessaegs.js

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,35 +40,43 @@ export const useMergedMediaMessages = (jid, mediaTypeArr = []) => {
4040
getMediaMessage();
4141
}, [userId]);
4242

43-
// Memoized merged media messages
4443
const mergedMediaMessages = useMemo(() => {
45-
const fetchedMessagesMap = {};
44+
const fetchedMessagesMap = new Map();
4645

4746
// Populate map with fetched messages
4847
fetchedMediaMessages.forEach(msg => {
49-
fetchedMessagesMap[msg.msgId] = msg;
48+
fetchedMessagesMap.set(msg.msgId, msg);
5049
});
5150

52-
// Merge state messages, prioritizing state data
53-
stateMediaMessages.forEach(stateMsg => {
54-
if (fetchedMessagesMap[stateMsg.msgId]) {
55-
fetchedMessagesMap[stateMsg.msgId] = {
56-
...fetchedMessagesMap[stateMsg.msgId],
57-
...stateMsg,
51+
// Maintain stateMediaMessages order while merging
52+
const mergedMessages = stateMediaMessages.map(stateMsg => {
53+
if (fetchedMessagesMap.has(stateMsg.msgId)) {
54+
return {
55+
...fetchedMessagesMap.get(stateMsg.msgId), // Keep fetched message properties
56+
...stateMsg, // Override with state message properties
5857
msgBody: {
59-
...fetchedMessagesMap[stateMsg.msgId].msgBody,
58+
...fetchedMessagesMap.get(stateMsg.msgId).msgBody,
6059
...stateMsg.msgBody,
6160
media: {
62-
...fetchedMessagesMap[stateMsg.msgId].msgBody.media,
61+
...fetchedMessagesMap.get(stateMsg.msgId).msgBody.media,
6362
...stateMsg.msgBody.media,
6463
},
6564
},
6665
};
6766
} else {
68-
fetchedMessagesMap[stateMsg.msgId] = stateMsg;
67+
return stateMsg; // Keep state message if not in fetched messages
6968
}
7069
});
71-
return Object.values(fetchedMessagesMap);
70+
71+
// Append fetched messages that are NOT in stateMediaMessages
72+
fetchedMessagesMap.forEach((msg, msgId) => {
73+
if (!stateMediaMessages.some(stateMsg => stateMsg.msgId === msgId)) {
74+
mergedMessages.push(msg);
75+
}
76+
});
77+
78+
// Sort by timestamp to ensure correct order
79+
return mergedMessages.sort((a, b) => a.timeStamp - b.timeStamp);
7280
}, [stateMediaMessages, fetchedMediaMessages]);
7381

7482
return { mergedMediaMessages, isLoading };

src/redux/reduxHook.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ export const getAnySelectedChatMessages = userId => {
134134
return messages.some(item => item.isSelected === 1);
135135
};
136136
export const getRoomLink = () => store.getState().callData?.connectionState?.roomLink;
137-
137+
export const getCurrentCallRoomId = () => store.getState().callData?.connectionState?.roomId;
138138
export const getMediaMessages = (userId, mediaTypeArr = []) => {
139139
const state = store.getState();
140140
const messages = state.chatMessagesData?.[userId] || [];

src/screens/PostPreViewPage.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ const PostPreViewPage = () => {
4141
};
4242

4343
const initialPage = React.useMemo(() => {
44-
const selectedMsgIndex = messageList.reverse().findIndex(message => {
44+
const selectedMsgIndex = messageList.findIndex(message => {
4545
return message.msgId === msgId;
4646
});
4747
setCurrentIndex(selectedMsgIndex);

0 commit comments

Comments
 (0)