Преглед изворни кода

Border series fix (double checkbox)

Viktoriia пре 1 недеља
родитељ
комит
f5a58baad9
1 измењених фајлова са 25 додато и 22 уклоњено
  1. 25 22
      src/screens/InAppScreens/TravelsScreen/SeriesItemScreen/index.tsx

+ 25 - 22
src/screens/InAppScreens/TravelsScreen/SeriesItemScreen/index.tsx

@@ -105,7 +105,9 @@ export const SeriesItemScreen = ({ route }: { route: any }) => {
         dataToFilter = dataToFilter
           .map((group) => ({
             ...group,
-            items: group.items.filter((item) => !item.checked)
+            items: group.items.filter(
+              (item) => !item.checked || (item.double && !item.checked_double)
+            )
           }))
           .filter((group) => group.items.length > 0);
         break;
@@ -113,7 +115,9 @@ export const SeriesItemScreen = ({ route }: { route: any }) => {
         dataToFilter = dataToFilter
           .map((group) => ({
             ...group,
-            items: group.items.filter((item) => item.checked)
+            items: group.items.filter(
+              (item) => item.checked || (item.double && item.checked_double)
+            )
           }))
           .filter((group) => group.items.length > 0);
         break;
@@ -184,25 +188,24 @@ export const SeriesItemScreen = ({ route }: { route: any }) => {
   const handleCheckboxChange = useCallback(
     async (item: SeriesItem, groupName: string, double?: boolean) => {
       setSeriesData((currentData) => {
-        const groupIndex = currentData.findIndex((group) => group.name === groupName);
+        const newData = currentData.map((group) => {
+          const hasItem = group.items.some((subItem) => subItem.item_id === item.item_id);
+          if (!hasItem) return group;
 
-        if (groupIndex === -1) return currentData;
-
-        const newData = [...currentData];
-        const newGroup = { ...newData[groupIndex] };
-
-        newGroup.items = newGroup.items.map((subItem) =>
-          subItem.item_id === item.item_id
-            ? {
-                ...subItem,
-                ...(double
-                  ? { checked_double: !subItem.checked_double }
-                  : { checked: !subItem.checked })
-              }
-            : subItem
-        );
-
-        newData[groupIndex] = newGroup;
+          return {
+            ...group,
+            items: group.items.map((subItem) =>
+              subItem.item_id === item.item_id
+                ? {
+                  ...subItem,
+                  ...(double
+                    ? { checked_double: !subItem.checked_double }
+                    : { checked: !subItem.checked })
+                }
+                : subItem
+            )
+          };
+        });
 
         return newData;
       });
@@ -211,8 +214,8 @@ export const SeriesItemScreen = ({ route }: { route: any }) => {
         token: token,
         series_id: item.series_id,
         item_id: item.item_id,
-        checked: (item.checked ? 0 : 1) as 0 | 1,
-        double: (double && !item.checked_double ? 1 : 0) as 0 | 1
+        checked: double ? (item.checked_double ? 0 : 1) : (item.checked ? 0 : 1) as 0 | 1,
+        double: (double ? 1 : 0) as 0 | 1
       };
 
       try {