Browse Source

"unread" banner fix

Viktoriia 1 tuần trước cách đây
mục cha
commit
d438b4daec

+ 18 - 13
src/screens/InAppScreens/MessagesScreen/ChatScreen/index.tsx

@@ -86,6 +86,7 @@ import { database } from 'src/watermelondb';
 import { Q } from '@nozbe/watermelondb';
 import { createOptimisticMessage } from 'src/watermelondb/features/chat/data/createOptimisticMessage';
 import _ from 'lodash';
+import { Galeria } from '@nandorojo/galeria';
 
 const options = {
   enableVibrateFallback: true,
@@ -1041,20 +1042,20 @@ const ChatScreen = ({ route }: { route: any }) => {
 
     if (!unreadMessageId) return;
 
-    const giftedIndex = giftedMessages.findIndex((m) => m._id === unreadMessageId);
-
-    if (giftedIndex === -1) return;
-
     didInitUnreadRef.current = true;
-    setUnreadMessageIndex(giftedIndex);
+    setUnreadMessageIndex(unreadMessageId);
 
-    setTimeout(() => {
-      flatList.current?.scrollToIndex({
-        index: giftedIndex,
-        animated: true,
-        viewPosition: 0.5
-      });
-    }, 400);
+    const giftedIndex = giftedMessages.findIndex((m) => m._id === unreadMessageId);
+
+    if (giftedIndex !== -1) {
+      setTimeout(() => {
+        flatList.current?.scrollToIndex({
+          index: giftedIndex,
+          animated: true,
+          viewPosition: 0.5
+        });
+      }, 400);
+    }
   }, [giftedMessages, chatData]);
 
   const giftedMessagesWithUnread = useMemo(() => {
@@ -1062,6 +1063,10 @@ const ChatScreen = ({ route }: { route: any }) => {
       return giftedMessages;
     }
 
+    const index = giftedMessages.findIndex((m) => m._id === unreadMessageIndex);
+
+    if (index === -1) return giftedMessages;
+
     const unreadMarker = {
       _id: 'unreadMarker',
       text: 'Unread messages',
@@ -1069,7 +1074,7 @@ const ChatScreen = ({ route }: { route: any }) => {
     };
 
     const copy = [...giftedMessages];
-    copy.splice(unreadMessageIndex + 1, 0, unreadMarker as any);
+    copy.splice(index + 1, 0, unreadMarker as any);
 
     return copy;
   }, [giftedMessages, unreadMessageIndex]);

+ 18 - 14
src/screens/InAppScreens/MessagesScreen/GroupChatScreen/index.tsx

@@ -1054,27 +1054,31 @@ const GroupChatScreen = ({ route }: { route: any }) => {
 
     if (!unreadMessageId) return;
 
-    const giftedIndex = giftedMessages.findIndex((m) => m._id === unreadMessageId);
-
-    if (giftedIndex === -1) return;
-
     didInitUnreadRef.current = true;
-    setUnreadMessageIndex(giftedIndex);
+    setUnreadMessageIndex(unreadMessageId);
 
-    setTimeout(() => {
-      flatList.current?.scrollToIndex({
-        index: giftedIndex,
-        animated: true,
-        viewPosition: 0.5
-      });
-    }, 400);
-  }, [giftedMessages, isFetching, group_token, chatData]);
+    const giftedIndex = giftedMessages.findIndex((m) => m._id === unreadMessageId);
+
+    if (giftedIndex !== -1) {
+      setTimeout(() => {
+        flatList.current?.scrollToIndex({
+          index: giftedIndex,
+          animated: true,
+          viewPosition: 0.5
+        });
+      }, 400);
+    }
+  }, [giftedMessages, chatData]);
 
   const giftedMessagesWithUnread = useMemo(() => {
     if (unreadMessageIndex == null || unreadMessageIndex === -1) {
       return giftedMessages;
     }
 
+    const index = giftedMessages.findIndex((m) => m._id === unreadMessageIndex);
+
+    if (index === -1) return giftedMessages;
+
     const unreadMarker = {
       _id: 'unreadMarker',
       text: 'Unread messages',
@@ -1082,7 +1086,7 @@ const GroupChatScreen = ({ route }: { route: any }) => {
     };
 
     const copy = [...giftedMessages];
-    copy.splice(unreadMessageIndex + 1, 0, unreadMarker as any);
+    copy.splice(index + 1, 0, unreadMarker as any);
 
     return copy;
   }, [giftedMessages, unreadMessageIndex]);