|
|
@@ -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 {
|