Ver código fonte

android MultipleSeriesModal fix

Viktoriia 1 semana atrás
pai
commit
5c806785ca

+ 6 - 2
src/screens/InAppScreens/MapScreen/MarkerItem/index.tsx

@@ -26,6 +26,10 @@ const MarkerItem = ({
 }) => {
   const navigation = useNavigation();
 
+  if (!marker || !marker.coordinates) {
+    return null;
+  }
+
   function formatNumber(value?: number | null) {
     const number = typeof value === 'number' && !isNaN(value) ? value : 0;
 
@@ -133,7 +137,7 @@ const MarkerItem = ({
                 >
                   {parsedAvatars?.map((avatar: number, index: number) => (
                     <Image
-                      key={avatar}
+                      key={`${avatar}-${index}`}
                       source={{ uri: API_HOST + '/img/avatars/' + avatar + '.webp' }}
                       style={styles.userImageSmall}
                     />
@@ -237,7 +241,7 @@ const MarkerItem = ({
                 >
                   {parsedAvatars?.map((avatar: number, index: number) => (
                     <Image
-                      key={avatar}
+                      key={`${avatar}-${index}`}
                       source={{ uri: API_HOST + '/img/avatars/' + avatar + '.webp' }}
                       style={styles.userImageSmall}
                     />

+ 2 - 2
src/screens/InAppScreens/MapScreen/MultipleSeriesModal/index.tsx

@@ -90,7 +90,7 @@ const MultipleSeriesModal = () => {
         <View style={styles.container}>
           <FlashList
             data={markers}
-            keyExtractor={(item, index) => item.id.toString() + index.toString()}
+            keyExtractor={(item, index) => `${item.id}-${index}`}
             showsVerticalScrollIndicator={true}
             persistentScrollbar={true}
             renderItem={({ item }) => {
@@ -147,7 +147,7 @@ const MultipleSeriesModal = () => {
                         >
                           {parsedAvatars?.map((avatar: number, index: number) => (
                             <Image
-                              key={avatar}
+                              key={`${avatar}-${index}`}
                               source={{ uri: API_HOST + '/img/avatars/' + avatar + '.webp' }}
                               style={styles.userImageSmall}
                             />

+ 6 - 2
src/screens/InAppScreens/MapScreen/index.tsx

@@ -2030,10 +2030,14 @@ const MapScreen: any = ({ navigation, route }: { navigation: any; route: any })
         updateSeriesItem(itemData);
         if (item.visited === 1) {
           setSeriesVisited((current) => current.filter((id) => id !== item.id));
-          setSelectedMarker((current: any) => ({ ...current, visited: 0 }));
+          setSelectedMarker((current: any) =>
+            current && current.id === item.id ? { ...current, visited: 0 } : current
+          );
         } else {
           setSeriesVisited((current) => [...current, item.id]);
-          setSelectedMarker((current: any) => ({ ...current, visited: 1 }));
+          setSelectedMarker((current: any) =>
+            current && current.id === item.id ? { ...current, visited: 1 } : current
+          );
         }
       } catch (error) {
         console.error('Failed to update series state', error);