|
@@ -1,4 +1,4 @@
|
|
-import React from 'react';
|
|
|
|
|
|
+import React, { useState } from 'react';
|
|
import { View, Text, Image, TouchableOpacity } from 'react-native';
|
|
import { View, Text, Image, TouchableOpacity } from 'react-native';
|
|
|
|
|
|
import { SlowData } from '../../utils/types';
|
|
import { SlowData } from '../../utils/types';
|
|
@@ -22,12 +22,20 @@ const CountryItem = React.memo(
|
|
navigation
|
|
navigation
|
|
}: {
|
|
}: {
|
|
item: SlowData;
|
|
item: SlowData;
|
|
- updateSlow: (id: number, v: boolean, s11: boolean, s31: boolean, s101: boolean) => void;
|
|
|
|
|
|
+ updateSlow: (
|
|
|
|
+ id: number,
|
|
|
|
+ v: boolean,
|
|
|
|
+ s11: boolean,
|
|
|
|
+ s31: boolean,
|
|
|
|
+ s101: boolean,
|
|
|
|
+ onDone?: () => void
|
|
|
|
+ ) => void;
|
|
openEditModal: (item: SlowData) => void;
|
|
openEditModal: (item: SlowData) => void;
|
|
token: string;
|
|
token: string;
|
|
setUserData: (data: any) => void;
|
|
setUserData: (data: any) => void;
|
|
navigation: any;
|
|
navigation: any;
|
|
}) => {
|
|
}) => {
|
|
|
|
+ const [isUpdating, setIsUpdating] = useState(false);
|
|
const renderDurationIcon = (condition: 0 | 1) =>
|
|
const renderDurationIcon = (condition: 0 | 1) =>
|
|
condition && token ? <CheckSvg fill={Colors.DARK_BLUE} /> : <CheckRegularSvg />;
|
|
condition && token ? <CheckSvg fill={Colors.DARK_BLUE} /> : <CheckRegularSvg />;
|
|
|
|
|
|
@@ -127,26 +135,34 @@ const CountryItem = React.memo(
|
|
) : null}
|
|
) : null}
|
|
|
|
|
|
<TouchableOpacity
|
|
<TouchableOpacity
|
|
- style={item.visited ? styles.visitedButton : styles.markVisitedButton}
|
|
|
|
- onPress={() =>
|
|
|
|
- item.visited && item.visited_regions > 1
|
|
|
|
- ? navigation.navigate(NAVIGATION_PAGES.EDIT_COUNTRY_DATA, {
|
|
|
|
- countryId: item.country_id,
|
|
|
|
- countryName: item.country,
|
|
|
|
- countryFlag: item.flag,
|
|
|
|
- slow11: item.slow11,
|
|
|
|
- slow31: item.slow31,
|
|
|
|
- slow101: item.slow101,
|
|
|
|
- isSlowList: true
|
|
|
|
- })
|
|
|
|
- : updateSlow(
|
|
|
|
- item.country_id,
|
|
|
|
- item.visited === 1 ? false : true,
|
|
|
|
- Boolean(item.slow11),
|
|
|
|
- Boolean(item.slow31),
|
|
|
|
- Boolean(item.slow101)
|
|
|
|
- )
|
|
|
|
- }
|
|
|
|
|
|
+ style={[
|
|
|
|
+ item.visited ? styles.visitedButton : styles.markVisitedButton,
|
|
|
|
+ isUpdating && { opacity: 0.7 }
|
|
|
|
+ ]}
|
|
|
|
+ disabled={isUpdating}
|
|
|
|
+ onPress={async () => {
|
|
|
|
+ if (item.visited && item.visited_regions > 1) {
|
|
|
|
+ navigation.navigate(NAVIGATION_PAGES.EDIT_COUNTRY_DATA, {
|
|
|
|
+ countryId: item.country_id,
|
|
|
|
+ countryName: item.country,
|
|
|
|
+ countryFlag: item.flag,
|
|
|
|
+ slow11: item.slow11,
|
|
|
|
+ slow31: item.slow31,
|
|
|
|
+ slow101: item.slow101,
|
|
|
|
+ isSlowList: true
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ setIsUpdating(true);
|
|
|
|
+ await updateSlow(
|
|
|
|
+ item.country_id,
|
|
|
|
+ item.visited === 1 ? false : true,
|
|
|
|
+ Boolean(item.slow11),
|
|
|
|
+ Boolean(item.slow31),
|
|
|
|
+ Boolean(item.slow101),
|
|
|
|
+ () => setIsUpdating(false)
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ }}
|
|
>
|
|
>
|
|
{item.visited && item.visited_regions <= 1 ? (
|
|
{item.visited && item.visited_regions <= 1 ? (
|
|
<View style={styles.visitedContainer}>
|
|
<View style={styles.visitedContainer}>
|