|
@@ -1,6 +1,11 @@
|
|
import { fetchCountryUserData, usePostSetSlowMutation } from '@api/countries';
|
|
import { fetchCountryUserData, usePostSetSlowMutation } from '@api/countries';
|
|
import { usePostSetDareRegionMutation } from '@api/myDARE';
|
|
import { usePostSetDareRegionMutation } from '@api/myDARE';
|
|
-import { usePostSetNmRegionMutation } from '@api/myRegions';
|
|
|
|
|
|
+import {
|
|
|
|
+ usePostAddVisitMutation,
|
|
|
|
+ usePostGetSingleRegionMutation,
|
|
|
|
+ usePostSetNmRegionMutation,
|
|
|
|
+ usePostSetNotVisitedMutation
|
|
|
|
+} from '@api/myRegions';
|
|
import React, { createContext, useContext, useState, useCallback } from 'react';
|
|
import React, { createContext, useContext, useState, useCallback } from 'react';
|
|
import { DareRegion, NmRegion, SlowData } from 'src/screens/InAppScreens/TravelsScreen/utils/types';
|
|
import { DareRegion, NmRegion, SlowData } from 'src/screens/InAppScreens/TravelsScreen/utils/types';
|
|
import { StoreType, storage } from 'src/storage';
|
|
import { StoreType, storage } from 'src/storage';
|
|
@@ -19,6 +24,9 @@ export const RegionProvider = ({ children }: { children: React.ReactNode }) => {
|
|
const { mutate: updateDARE } = usePostSetDareRegionMutation();
|
|
const { mutate: updateDARE } = usePostSetDareRegionMutation();
|
|
const { mutate: updateSlow } = usePostSetSlowMutation();
|
|
const { mutate: updateSlow } = usePostSetSlowMutation();
|
|
const { mutateAsync: mutateCountriesData } = fetchCountryUserData();
|
|
const { mutateAsync: mutateCountriesData } = fetchCountryUserData();
|
|
|
|
+ const { mutateAsync: unvisitRegion } = usePostSetNotVisitedMutation();
|
|
|
|
+ const { mutateAsync: addVisit } = usePostAddVisitMutation();
|
|
|
|
+ const { mutateAsync: getRegion } = usePostGetSingleRegionMutation();
|
|
|
|
|
|
const handleUpdateNM = useCallback(
|
|
const handleUpdateNM = useCallback(
|
|
(region: number, first: number, last: number, visits: number, quality: number) => {
|
|
(region: number, first: number, last: number, visits: number, quality: number) => {
|
|
@@ -31,16 +39,47 @@ export const RegionProvider = ({ children }: { children: React.ReactNode }) => {
|
|
visited: visits > 0 ? true : false
|
|
visited: visits > 0 ? true : false
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ if (visits === 0) {
|
|
|
|
+ unvisitRegion(
|
|
|
|
+ { token, region },
|
|
|
|
+ {
|
|
|
|
+ onSuccess: (res) => {
|
|
|
|
+ updatedNM && setUserData(updatedNM);
|
|
|
|
+ },
|
|
|
|
+ onError: (err) => {
|
|
|
|
+ console.log('err', err);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const currentYear = new Date().getFullYear();
|
|
|
|
+ const currentMonth = new Date().getMonth() + 1;
|
|
|
|
+ updatedNM.first_visit_year = currentYear;
|
|
|
|
+ updatedNM.last_visit_year = currentYear;
|
|
|
|
+ updatedNM.best_visit_quality = 3;
|
|
|
|
+
|
|
const updatedNMData = {
|
|
const updatedNMData = {
|
|
token,
|
|
token,
|
|
region,
|
|
region,
|
|
- first,
|
|
|
|
- last,
|
|
|
|
- visits,
|
|
|
|
- quality
|
|
|
|
|
|
+ quality: 3,
|
|
|
|
+ year_from: currentYear,
|
|
|
|
+ month_from: currentMonth,
|
|
|
|
+ day_from: undefined,
|
|
|
|
+ year_to: currentYear,
|
|
|
|
+ month_to: currentMonth,
|
|
|
|
+ day_to: undefined,
|
|
|
|
+ hidden: 0
|
|
};
|
|
};
|
|
|
|
|
|
- updateNM(updatedNMData);
|
|
|
|
|
|
+ addVisit(updatedNMData as never, {
|
|
|
|
+ onError: (error) => {
|
|
|
|
+ console.log('addVisit error', error);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
updatedNM && setUserData(updatedNM);
|
|
updatedNM && setUserData(updatedNM);
|
|
},
|
|
},
|
|
[userData, token]
|
|
[userData, token]
|
|
@@ -122,29 +161,57 @@ export const RegionProvider = ({ children }: { children: React.ReactNode }) => {
|
|
|
|
|
|
const handleUpdateNMList = useCallback(
|
|
const handleUpdateNMList = useCallback(
|
|
(id: number, first: number, last: number, visits: number, quality: number) => {
|
|
(id: number, first: number, last: number, visits: number, quality: number) => {
|
|
|
|
+ const currentYear = new Date().getFullYear();
|
|
|
|
+ const currentMonth = new Date().getMonth() + 1;
|
|
|
|
+
|
|
const updatedNM = nmRegions.map((item) => {
|
|
const updatedNM = nmRegions.map((item) => {
|
|
if (item.id === id) {
|
|
if (item.id === id) {
|
|
return {
|
|
return {
|
|
...item,
|
|
...item,
|
|
- year: first,
|
|
|
|
- last,
|
|
|
|
- quality,
|
|
|
|
|
|
+ year: visits === 0 ? first : currentYear,
|
|
|
|
+ last: visits === 0 ? last : currentYear,
|
|
|
|
+ quality: visits === 0 ? quality : 3,
|
|
visits
|
|
visits
|
|
};
|
|
};
|
|
}
|
|
}
|
|
return item;
|
|
return item;
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ if (visits === 0) {
|
|
|
|
+ unvisitRegion(
|
|
|
|
+ { token, region: id },
|
|
|
|
+ {
|
|
|
|
+ onSuccess: (res) => {
|
|
|
|
+ updatedNM && setNmRegions(updatedNM);
|
|
|
|
+ },
|
|
|
|
+ onError: (err) => {
|
|
|
|
+ console.log('err', err);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ );
|
|
|
|
+
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
const updatedNMData = {
|
|
const updatedNMData = {
|
|
token,
|
|
token,
|
|
region: id,
|
|
region: id,
|
|
- first,
|
|
|
|
- last,
|
|
|
|
- visits,
|
|
|
|
- quality
|
|
|
|
|
|
+ quality: 3,
|
|
|
|
+ year_from: currentYear,
|
|
|
|
+ month_from: currentMonth,
|
|
|
|
+ day_from: undefined,
|
|
|
|
+ year_to: currentYear,
|
|
|
|
+ month_to: currentMonth,
|
|
|
|
+ day_to: undefined,
|
|
|
|
+ hidden: 0
|
|
};
|
|
};
|
|
|
|
|
|
- updateNM(updatedNMData);
|
|
|
|
|
|
+ addVisit(updatedNMData as never, {
|
|
|
|
+ onError: (error) => {
|
|
|
|
+ console.log('addVisit error', error);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
updatedNM && setNmRegions(updatedNM);
|
|
updatedNM && setNmRegions(updatedNM);
|
|
},
|
|
},
|
|
[nmRegions]
|
|
[nmRegions]
|