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