import NetInfo, { NetInfoState } from '@react-native-community/netinfo'; import { StoreType, storage } from 'src/storage'; import { fetchLpi, fetchInHistory, fetchInMemoriam, updateMaster } from '@api/ranking'; import { initOfflineSetup } from './tilesService'; import { downloadFlags } from './flagsService'; import { fetchAndSaveAllTypesAndMasters } from './unMastersService'; import { fetchAndSaveStatistics } from './statisticsService'; import { saveTriumphsData } from './triumphsService'; import { saveSeriesRankingData } from './seriesRankingService'; import { updateDarePlacesDb, updateNmRegionsDb } from 'src/db'; import { cleanCache, deleteAvatarsDirectory } from './cacheService'; const lastUpdateNmRegions = (storage.get('lastUpdateNmRegions', StoreType.STRING) as string) || '1990-01-01'; const lastUpdateDarePlaces = (storage.get('lastUpdateDarePlaces', StoreType.STRING) as string) || '1990-01-01'; export const checkInternetConnection = async (): Promise => { const state = await NetInfo.fetch(); return state; }; export const syncDataWithServer = async (): Promise => { const { isConnected } = await checkInternetConnection(); if (isConnected) { await updateDarePlacesDb(lastUpdateDarePlaces); await updateMasterRanking(); await updateNmRegionsDb(lastUpdateNmRegions); await downloadFlags(); await initOfflineSetup(); } }; export const setupDatabaseAndSync = async (): Promise => { await syncDataWithServer(); cleanCache(); deleteAvatarsDirectory(); }; export const updateMasterRanking = async () => { const token = (storage.get('token', StoreType.STRING) as string) || ''; await updateMaster(); storage.remove('masterRanking'); const dataLpi = await fetchLpi(); if (dataLpi && dataLpi?.data) { storage.set('lpiRanking', JSON.stringify(dataLpi.data)); } const dataInHistory = await fetchInHistory(); if (dataInHistory && dataInHistory?.data) { storage.set('inHistoryRanking', JSON.stringify(dataInHistory.data)); } const dataInMemoriam = await fetchInMemoriam(); if (dataInMemoriam && dataInMemoriam?.data) { storage.set('inMemoriamRanking', JSON.stringify(dataInMemoriam.data)); } await fetchAndSaveStatistics(token); await fetchAndSaveAllTypesAndMasters(); await saveTriumphsData(); await saveSeriesRankingData(); }; export default setupDatabaseAndSync;