浏览代码

sentry JSON.parse fix

Viktoriia 1 天之前
父节点
当前提交
36f7319cde

+ 8 - 4
src/modules/api/chat/queries/use-post-get-conversation-list.tsx

@@ -16,10 +16,14 @@ export const usePostGetChatsListQuery = (token: string, archive: 0 | 1, enabled:
     },
     enabled,
     initialData: () => {
-      const storedChats = storage.get('chats', StoreType.STRING) as string;
-      return storedChats
-        ? ({ conversations: JSON.parse(storedChats), result: 'OK' } as PostGetChatsListReturn)
-        : undefined;
+      try {
+        const storedChats = storage.get('chats', StoreType.STRING) as string;
+        return storedChats
+          ? ({ conversations: JSON.parse(storedChats), result: 'OK' } as PostGetChatsListReturn)
+          : undefined;
+      } catch {
+        return undefined;
+      }
     }
   });
 };

+ 7 - 3
src/modules/api/chat/queries/use-post-get-conversation-with.tsx

@@ -39,10 +39,14 @@ export const usePostGetChatWithQuery = (
     },
     enabled,
     initialData: () => {
-      const storedMessages = storage.get(`chat_${uid}`, StoreType.STRING) as string;
-      let messages = storedMessages ? JSON.parse(storedMessages) : [];
+      try {
+        const storedMessages = storage.get(`chat_${uid}`, StoreType.STRING) as string;
+        let messages = storedMessages ? JSON.parse(storedMessages) : [];
 
-      return messages.length ? ({ messages, result: 'OK' } as PostGetChatWithReturn) : undefined;
+        return messages.length ? ({ messages, result: 'OK' } as PostGetChatWithReturn) : undefined;
+      } catch {
+        return undefined;
+      }
     },
     initialDataUpdatedAt:
       (storage.get(`chat_${uid}_updatedAt`, StoreType.NUMBER) as number) || undefined

+ 9 - 5
src/modules/api/chat/queries/use-post-get-group-conversation.tsx

@@ -40,11 +40,15 @@ export const usePostGetGroupChatQuery = (
     },
     enabled,
     initialData: () => {
-      const storedMessages = storage.get(`chat_${group_token}`, StoreType.STRING) as string;
-      
-      return storedMessages
-        ? (JSON.parse(storedMessages) as PostGetGroupChatWithReturn)
-        : undefined;
+      try {
+        const storedMessages = storage.get(`chat_${group_token}`, StoreType.STRING) as string;
+
+        return storedMessages
+          ? (JSON.parse(storedMessages) as PostGetGroupChatWithReturn)
+          : undefined;
+      } catch {
+        return undefined;
+      }
     },
     initialDataUpdatedAt:
       (storage.get(`chat_${group_token}_updatedAt`, StoreType.NUMBER) as number) || undefined

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

@@ -678,8 +678,12 @@ const ChatScreen = ({ route }: { route: any }) => {
     };
 
     socket.current.onmessage = (event) => {
-      const data = JSON.parse(event.data);
-      handleWebSocketMessage(data);
+      try {
+        const data = JSON.parse(event.data);
+        handleWebSocketMessage(data);
+      } catch {
+        console.log('Invalid WS message:', event.data);
+      }
     };
 
     socket.current.onclose = () => {
@@ -708,8 +712,12 @@ const ChatScreen = ({ route }: { route: any }) => {
             socket.current?.send(JSON.stringify({ token }));
           };
           socket.current.onmessage = (event) => {
-            const data = JSON.parse(event.data);
-            handleWebSocketMessage(data);
+            try {
+              const data = JSON.parse(event.data);
+              handleWebSocketMessage(data);
+            } catch {
+              console.log('Invalid WS message:', event.data);
+            }
           };
         }
 
@@ -883,8 +891,12 @@ const ChatScreen = ({ route }: { route: any }) => {
           socket.current?.send(JSON.stringify({ token }));
         };
         socket.current.onmessage = (event) => {
-          const data = JSON.parse(event.data);
-          handleWebSocketMessage(data);
+          try {
+            const data = JSON.parse(event.data);
+            handleWebSocketMessage(data);
+          } catch {
+            console.log('Invalid WS message:', event.data);
+          }
         };
 
         return () => {

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

@@ -695,8 +695,12 @@ const GroupChatScreen = ({ route }: { route: any }) => {
     };
 
     socket.current.onmessage = (event) => {
-      const data = JSON.parse(event.data);
-      handleWebSocketMessage(data);
+      try {
+        const data = JSON.parse(event.data);
+        handleWebSocketMessage(data);
+      } catch {
+        console.log('Invalid WS message:', event.data);
+      }
     };
 
     socket.current.onclose = () => {
@@ -725,8 +729,12 @@ const GroupChatScreen = ({ route }: { route: any }) => {
             socket.current?.send(JSON.stringify({ token }));
           };
           socket.current.onmessage = (event) => {
-            const data = JSON.parse(event.data);
-            handleWebSocketMessage(data);
+            try {
+              const data = JSON.parse(event.data);
+              handleWebSocketMessage(data);
+            } catch {
+              console.log('Invalid WS message:', event.data);
+            }
           };
         }
 
@@ -912,8 +920,12 @@ const GroupChatScreen = ({ route }: { route: any }) => {
           socket.current?.send(JSON.stringify({ token }));
         };
         socket.current.onmessage = (event) => {
-          const data = JSON.parse(event.data);
-          handleWebSocketMessage(data);
+          try {
+            const data = JSON.parse(event.data);
+            handleWebSocketMessage(data);
+          } catch {
+            console.log('Invalid WS message:', event.data);
+          }
         };
 
         return () => {

+ 25 - 29
src/screens/InAppScreens/MessagesScreen/index.tsx

@@ -114,8 +114,12 @@ const MessagesScreen = () => {
       };
 
       socket.current.onmessage = (event) => {
-        const data = JSON.parse(event.data);
-        handleWebSocketMessage(data);
+        try {
+          const data = JSON.parse(event.data);
+          handleWebSocketMessage(data);
+        } catch {
+          console.log('Invalid WS message:', event.data);
+        }
       };
 
       socket.current.onclose = () => {
@@ -154,8 +158,12 @@ const MessagesScreen = () => {
             socket.current?.send(JSON.stringify({ token }));
           };
           socket.current.onmessage = (event) => {
-            const data = JSON.parse(event.data);
-            handleWebSocketMessage(data);
+            try {
+              const data = JSON.parse(event.data);
+              handleWebSocketMessage(data);
+            } catch {
+              console.log('Invalid WS message:', event.data);
+            }
           };
         }
       }
@@ -357,29 +365,19 @@ const MessagesScreen = () => {
           activeOpacity={0.8}
           onPress={() => {
             if (!item.uid) {
-              navigation.navigate(
-                ...([
-                  NAVIGATION_PAGES.GROUP_CHAT,
-                  {
-                    group_token: item.group_chat_token,
-                    name: item.name,
-                    avatar: item.avatar,
-                    userType: item.user_type
-                  }
-                ] as never)
-              );
+              navigation.navigate(NAVIGATION_PAGES.GROUP_CHAT, {
+                group_token: item.group_chat_token,
+                name: item.name,
+                avatar: item.avatar,
+                userType: item.user_type
+              });
             } else {
-              navigation.navigate(
-                ...([
-                  NAVIGATION_PAGES.CHAT,
-                  {
-                    id: item.uid,
-                    name: item.name,
-                    avatar: item.avatar,
-                    userType: item.user_type
-                  }
-                ] as never)
-              );
+              navigation.navigate(NAVIGATION_PAGES.CHAT, {
+                id: item.uid,
+                name: item.name,
+                avatar: item.avatar,
+                userType: item.user_type
+              });
             }
           }}
           underlayColor={Colors.FILL_LIGHT}
@@ -484,9 +482,7 @@ const MessagesScreen = () => {
         <TouchableHighlight
           activeOpacity={0.8}
           onPress={() =>
-            navigation.navigate(
-              ...([NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId: item.id }] as never)
-            )
+            navigation.navigate(NAVIGATION_PAGES.PUBLIC_PROFILE_VIEW, { userId: item.id })
           }
           underlayColor={Colors.FILL_LIGHT}
         >