Viktoriia 1 gadu atpakaļ
vecāks
revīzija
780bcc02d7

+ 1 - 1
src/components/WarningModal/index.tsx

@@ -102,7 +102,7 @@ export const WarningModal = ({
           textColor: Colors.WHITE,
           color: Colors.ORANGE,
           action: () => {
-            onClose;
+            onClose();
             action && action();
           },
           borderColor: Colors.ORANGE

+ 8 - 7
src/modules/api/ranking/queries/use-post-get-full-ranking.tsx

@@ -1,17 +1,18 @@
-import { useMutation } from '@tanstack/react-query';
+import { useQuery } from '@tanstack/react-query';
 
 import { rankingQueryKeys } from '../ranking-query-keys';
 import { type PostGetRanking, rankingApi } from '../ranking-api';
 
 import type { BaseAxiosError } from '../../../../types';
 
-export const fetchFullRanking = () => {
-  return useMutation<PostGetRanking, BaseAxiosError, void>({
-    mutationKey: rankingQueryKeys.getFullRanking(),
-    mutationFn: async () => {
+export const useGetFullRanking = () => {
+  return useQuery<PostGetRanking, BaseAxiosError>({
+    queryKey: rankingQueryKeys.getFullRanking(),
+    queryFn: async () => {
       const response = await rankingApi.getFullRanking();
-      
       return response.data;
-    }
+    },
+    gcTime: 0,
+    staleTime: 0,
   });
 };

+ 20 - 10
src/screens/InAppScreens/TravellersScreen/MasterRankingScreen/index.tsx

@@ -1,8 +1,8 @@
-import React, { useCallback, useState } from 'react';
+import React, { useCallback, useEffect, useState } from 'react';
 import { useFocusEffect } from '@react-navigation/native';
 import { FlatList } from 'react-native';
 
-import { fetchFullRanking, usePostGetCountriesRanking } from '@api/ranking';
+import { useGetFullRanking, usePostGetCountriesRanking } from '@api/ranking';
 
 import { Header, Loading, PageWrapper } from '../../../../components';
 import { storage, StoreType } from '../../../../storage';
@@ -17,11 +17,12 @@ import type { Ranking } from '..';
 import { useConnection } from 'src/contexts/ConnectionContext';
 
 const MasterRankingScreen = () => {
-  const { mutateAsync } = fetchFullRanking();
+  const { data: fullData } = useGetFullRanking();
   const { data: masterCountries } = usePostGetCountriesRanking();
   const netInfo = useConnection();
 
   const [masterRanking, setMasterRanking] = useState<Ranking[]>([]);
+  const [fullRanking, setFullRanking] = useState<Ranking[]>([]);
   const [isLoading, setIsLoading] = useState(true);
 
   const [filteredData, setFilteredData] = useState<Ranking[]>([]);
@@ -42,15 +43,17 @@ const MasterRankingScreen = () => {
     }, [])
   );
 
+  useEffect(() => {
+    if (fullData) {
+      setFullRanking(fullData?.data?.sort((a: Ranking, b: Ranking) => b.score_nm - a.score_nm));
+    }
+  }, [fullData]);
+
   if (isLoading) return <Loading />;
 
   const getFullRanking = async () => {
-    if (netInfo?.isInternetReachable) {
-      await mutateAsync(undefined, {
-        onSuccess: (data) => {
-          setMasterRanking(data.data);
-        }
-      });
+    if (netInfo?.isInternetReachable && fullRanking) {
+      setMasterRanking(fullRanking);
     }
   };
 
@@ -61,7 +64,14 @@ const MasterRankingScreen = () => {
         setModalVisible={(value) => setModalVisible(value)}
         applyFilter={(filterAge, filterRanking, filterCountry) => {
           setConfirmedValueRanking(filterRanking);
-          setFilteredData(applyModalSort(masterRanking, filterAge, filterRanking, filterCountry));
+          setFilteredData(
+            applyModalSort(
+              netInfo?.isInternetReachable && fullRanking ? fullRanking : masterRanking,
+              filterAge,
+              filterRanking,
+              filterCountry
+            )
+          );
           setModalVisible(false);
         }}
         countriesData={masterCountries ? masterCountries.data : []}

+ 7 - 2
src/screens/InAppScreens/TravelsScreen/AddNewTripScreen/index.tsx

@@ -154,11 +154,13 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
     if (regions && selectedDates) {
       const isStartDateInFuture =
         selectedDates.split(' - ')[0] > new Date().toISOString().split('T')[0];
+      const isEndDateInPast =
+        selectedDates.split(' - ')[1] <= new Date().toISOString().split('T')[0];
       const regionsData = regions.map((region) => {
         return {
           id: region.id,
           quality: region.quality ?? 3,
-          status: isStartDateInFuture ? 0 : (Number(region.status) as 0 | 1),
+          status: isStartDateInFuture ? 0 : isEndDateInPast ? 1 : (Number(region.status) as 0 | 1),
           hidden: region.hidden
         };
       });
@@ -184,11 +186,13 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
     if (regions && selectedDates) {
       const isStartDateInFuture =
         selectedDates.split(' - ')[0] > new Date().toISOString().split('T')[0];
+      const isEndDateInPast =
+        selectedDates.split(' - ')[1] <= new Date().toISOString().split('T')[0];
       const regionsData = regions.map((region) => {
         return {
           id: region.id,
           quality: region.quality ?? 3,
-          status: isStartDateInFuture ? 0 : (Number(region.status) as 0 | 1),
+          status: isStartDateInFuture ? 0 : isEndDateInPast ? 1 : (Number(region.status) as 0 | 1),
           hidden: region.hidden
         };
       });
@@ -263,6 +267,7 @@ const AddNewTripScreen = ({ route }: { route: any }) => {
                     }}
                     onHiddenChange={() => changeHiddenForRegion(region.id)}
                     startDate={selectedDates ? selectedDates.split(' - ')[0] : null}
+                    endDate={selectedDates ? selectedDates.split(' - ')[1] : null}
                   />
                 );
               })}

+ 7 - 4
src/screens/InAppScreens/TravelsScreen/Components/RegionItem/index.tsx

@@ -18,7 +18,8 @@ const RegionItem = ({
   onToggleStatus,
   onQualityChange,
   onHiddenChange,
-  startDate
+  startDate,
+  endDate
 }: {
   region: RegionAddData;
   onDelete: () => void;
@@ -26,12 +27,14 @@ const RegionItem = ({
   onQualityChange: () => void;
   onHiddenChange: () => void;
   startDate: string | null;
+  endDate: string | null;
 }) => {
   const name = region.region_name.split(/ – | - /);
   const qualityName = region.quality
     ? qualityOptions.find((q) => q.id === region.quality)?.name
     : 'Good Visit';
   const disabled = !startDate || startDate > new Date().toISOString().split('T')[0];
+  const completed = Boolean(endDate && endDate <= new Date().toISOString().split('T')[0]);
 
   return (
     <View key={region.id} style={styles.regionItem}>
@@ -69,19 +72,19 @@ const RegionItem = ({
         <TouchableOpacity
           style={[
             styles.markCompletedButton,
-            disabled && {
+            (disabled || completed) && {
               backgroundColor: Colors.LIGHT_GRAY,
               borderColor: Colors.LIGHT_GRAY
             }
           ]}
           onPress={onToggleStatus}
-          disabled={disabled}
+          disabled={disabled || completed}
         >
           <View style={styles.completedContainer}>
             <View style={{ position: 'relative' }}>
               <SquareSvg />
             </View>
-            {region.status === 1 && !disabled && (
+            {((region.status === 1 && !disabled) || completed) && (
               <View style={{ position: 'absolute', left: 2, top: 1 }}>
                 <CheckSvg width={14} height={14} />
               </View>

+ 0 - 4
src/screens/ResetPasswordScreen/index.tsx

@@ -72,10 +72,6 @@ const ResetPasswordScreen: FC = () => {
           'Password reset link has been sent to your email. Please check your inbox for further instructions.'
         }
         title="Success!"
-        action={() => {
-          setIsModalVisible(false);
-          navigation.goBack();
-        }}
       />
     </PageWrapper>
   );