import React, { useCallback, useState } from 'react'; import { useFocusEffect } from '@react-navigation/native'; import { FlatList } from 'react-native'; import { fetchFullRanking, usePostGetCountriesRanking } from '@api/ranking'; import { Header, Loading, PageWrapper } from '../../../../components'; import { storage, StoreType } from '../../../../storage'; import { Profile } from '../Components/Profile'; import { FilterModal, FilterButton } from '../Components/FilterModal'; import { applyModalSort, dataRanking } from '../utils'; import type { RankingDropdown } from '../utils/types'; import type { Ranking } from '..'; import { useConnection } from 'src/contexts/ConnectionContext'; const MasterRankingScreen = () => { const { mutateAsync } = fetchFullRanking(); const { data: masterCountries } = usePostGetCountriesRanking(); const netInfo = useConnection(); const [masterRanking, setMasterRanking] = useState([]); const [isLoading, setIsLoading] = useState(true); const [filteredData, setFilteredData] = useState([]); const [isModalVisible, setModalVisible] = useState(false); const [confirmedValueRanking, setConfirmedValueRanking] = useState(); useFocusEffect( useCallback(() => { const fetchRanking = async () => { const ranking = storage.get('masterRanking', StoreType.STRING) as string; setMasterRanking( JSON.parse(ranking).sort((a: Ranking, b: Ranking) => b.score_nm - a.score_nm) ); setIsLoading(false); }; fetchRanking(); }, []) ); if (isLoading) return ; const getFullRanking = async () => { if (netInfo?.isInternetReachable) { await mutateAsync(undefined, { onSuccess: (data) => { setMasterRanking(data.data); } }); } }; return ( setModalVisible(value)} applyFilter={(filterAge, filterRanking, filterCountry) => { setConfirmedValueRanking(filterRanking); setFilteredData(applyModalSort(masterRanking, filterAge, filterRanking, filterCountry)); setModalVisible(false); }} countriesData={masterCountries ? masterCountries.data : []} />
setModalVisible(!isModalVisible)} />} /> item.user_id.toString()} renderItem={({ item, index }) => ( )} onEndReached={() => getFullRanking()} onEndReachedThreshold={0.5} /> ); }; export default MasterRankingScreen;