瀏覽代碼

Merge branch 'hidden-feature' of SashaGoncharov19/nomadmania-app into dev

Viktoriia 1 年之前
父節點
當前提交
55ec6650c7

+ 3 - 0
assets/icons/travels-screens/check.svg

@@ -0,0 +1,3 @@
+<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M10.07 2.87008C10.2522 3.05233 10.2522 3.3478 10.07 3.53005L4.93662 8.66338C4.75438 8.84563 4.4589 8.84563 4.27666 8.66338L1.94332 6.33005C1.76108 6.1478 1.76108 5.85233 1.94332 5.67008C2.12557 5.48784 2.42105 5.48784 2.60329 5.67008L4.60664 7.67343L9.40999 2.87008C9.59224 2.68784 9.88771 2.68784 10.07 2.87008Z" fill="white"/>
+</svg>

+ 3 - 0
assets/icons/travels-screens/square.svg

@@ -0,0 +1,3 @@
+<svg width="17" height="16" viewBox="0 0 17 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect x="1.25" y="0.5" width="15" height="15" rx="3.5" stroke="white"/>
+</svg>

+ 1 - 0
src/modules/api/trips/trips-api.tsx

@@ -64,6 +64,7 @@ export interface PostGetTripReturn extends ResponseType {
       quality: number;
       quality: number;
       status: 0 | 1;
       status: 0 | 1;
       hidden: boolean;
       hidden: boolean;
+      can_be_hidden: boolean;
     }[];
     }[];
   };
   };
 }
 }

+ 16 - 1
src/screens/InAppScreens/TravelsScreen/AddNewTripScreen/index.tsx

@@ -54,7 +54,9 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
           return {
           return {
             ...newRegion,
             ...newRegion,
             quality: existingRegion ? existingRegion.quality : 3,
             quality: existingRegion ? existingRegion.quality : 3,
-            status: existingRegion ? existingRegion.status : 0
+            status: existingRegion ? existingRegion.status : 0,
+            can_be_hidden: existingRegion ? existingRegion.can_be_hidden : newRegion.hidden,
+            hidden: existingRegion ? existingRegion.hidden : false
           };
           };
         });
         });
 
 
@@ -117,6 +119,18 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
       );
       );
   };
   };
 
 
+  const changeHiddenForRegion = (regionId: number | null) => {
+    regions &&
+      setRegions(
+        regions.map((region) => {
+          if (region.id === regionId) {
+            return { ...region, hidden: !region.hidden };
+          }
+          return region;
+        })
+      );
+  };
+
   const handleDeleteRegion = (regionId: number) => {
   const handleDeleteRegion = (regionId: number) => {
     regions && setRegions(regions.filter((region) => region.id !== regionId));
     regions && setRegions(regions.filter((region) => region.id !== regionId));
   };
   };
@@ -247,6 +261,7 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
                       setSelectedRegionId(region.id);
                       setSelectedRegionId(region.id);
                       setQualitySelectorVisible(true);
                       setQualitySelectorVisible(true);
                     }}
                     }}
+                    onHiddenChange={() => changeHiddenForRegion(region.id)}
                     startDate={selectedDates ? selectedDates.split(' - ')[0] : null}
                     startDate={selectedDates ? selectedDates.split(' - ')[0] : null}
                   />
                   />
                 );
                 );

+ 49 - 19
src/screens/InAppScreens/TravelsScreen/Components/RegionItem/index.tsx

@@ -7,21 +7,24 @@ import { Colors } from 'src/theme';
 import { API_HOST } from 'src/constants';
 import { API_HOST } from 'src/constants';
 import { styles } from './styles';
 import { styles } from './styles';
 
 
-import MarkIcon from 'assets/icons/mark.svg';
 import TrashSvg from 'assets/icons/travels-screens/trash-solid.svg';
 import TrashSvg from 'assets/icons/travels-screens/trash-solid.svg';
 import ChevronIcon from 'assets/icons/travels-screens/down-arrow.svg';
 import ChevronIcon from 'assets/icons/travels-screens/down-arrow.svg';
+import CheckSvg from 'assets/icons/travels-screens/check.svg';
+import SquareSvg from 'assets/icons/travels-screens/square.svg';
 
 
 const RegionItem = ({
 const RegionItem = ({
   region,
   region,
   onDelete,
   onDelete,
   onToggleStatus,
   onToggleStatus,
   onQualityChange,
   onQualityChange,
+  onHiddenChange,
   startDate
   startDate
 }: {
 }: {
   region: RegionAddData;
   region: RegionAddData;
   onDelete: () => void;
   onDelete: () => void;
   onToggleStatus: () => void;
   onToggleStatus: () => void;
   onQualityChange: () => void;
   onQualityChange: () => void;
+  onHiddenChange: () => void;
   startDate: string | null;
   startDate: string | null;
 }) => {
 }) => {
   const name = region.region_name.split(/ – | - /);
   const name = region.region_name.split(/ – | - /);
@@ -64,30 +67,57 @@ const RegionItem = ({
         </TouchableOpacity>
         </TouchableOpacity>
 
 
         <TouchableOpacity
         <TouchableOpacity
-          style={
-            region.status === 1 && !disabled
-              ? styles.markNotCompletedButton
-              : [
-                  styles.markCompletedButton,
-                  disabled && {
-                    backgroundColor: Colors.LIGHT_GRAY,
-                    borderColor: Colors.LIGHT_GRAY
-                  }
-                ]
-          }
+          style={[
+            styles.markCompletedButton,
+            disabled && {
+              backgroundColor: Colors.LIGHT_GRAY,
+              borderColor: Colors.LIGHT_GRAY
+            }
+          ]}
           onPress={onToggleStatus}
           onPress={onToggleStatus}
           disabled={disabled}
           disabled={disabled}
         >
         >
-          {region.status === 1 && !disabled ? (
-            <View style={styles.completedContainer}>
-              <MarkIcon width={16} height={16} />
-              <Text style={styles.markNotCompletedButtonText}>Completed</Text>
+          <View style={styles.completedContainer}>
+            <View style={{ position: 'relative' }}>
+              <SquareSvg />
             </View>
             </View>
-          ) : (
-            <Text style={[styles.markCompletedButtonText]}>Mark Completed</Text>
-          )}
+            {region.status === 1 && !disabled && (
+              <View style={{ position: 'absolute', left: 2, top: 1 }}>
+                <CheckSvg width={14} height={14} />
+              </View>
+            )}
+            <Text style={styles.markCompletedButtonText}>Completed</Text>
+          </View>
         </TouchableOpacity>
         </TouchableOpacity>
       </View>
       </View>
+      {region.can_be_hidden && (
+        <View style={{ marginTop: 12, marginHorizontal: '25%' }}>
+          <TouchableOpacity
+            style={[
+              styles.markCompletedButton,
+              disabled && {
+                backgroundColor: Colors.LIGHT_GRAY,
+                borderColor: Colors.LIGHT_GRAY
+              }
+            ]}
+            onPress={onHiddenChange}
+            disabled={disabled}
+          >
+            <View style={styles.completedContainer}>
+              <View style={{ position: 'relative' }}>
+                <SquareSvg />
+              </View>
+              {region.hidden && (
+                <View style={{ position: 'absolute', left: 2, top: 1 }}>
+                  <CheckSvg width={14} height={14} />
+                </View>
+              )}
+
+              <Text style={styles.markCompletedButtonText}>Hidden</Text>
+            </View>
+          </TouchableOpacity>
+        </View>
+      )}
     </View>
     </View>
   );
   );
 };
 };

+ 1 - 0
src/screens/InAppScreens/TravelsScreen/utils/types.ts

@@ -75,4 +75,5 @@ export interface RegionAddData {
   status?: 0 | 1;
   status?: 0 | 1;
   hidden: boolean;
   hidden: boolean;
   name?: string;
   name?: string;
+  can_be_hidden?: boolean;
 }
 }