index.ts 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import NetInfo, { NetInfoState } from '@react-native-community/netinfo';
  2. import { StoreType, storage } from 'src/storage';
  3. import { fetchLimitedRanking, fetchLpi, fetchInHistory, fetchInMemoriam } from '@api/ranking';
  4. import { initOfflineSetup } from './tilesService';
  5. import { downloadFlags } from './flagsService';
  6. import { fetchAndSaveAllTypesAndMasters } from './unMastersService';
  7. import { fetchAndSaveStatistics } from './statisticsService';
  8. import { saveTriumphsData } from './triumphsService';
  9. import { saveSeriesRankingData } from './seriesRankingService';
  10. import { updateDarePlacesDb, updateNmRegionsDb } from 'src/db';
  11. import { cleanCache, deleteAvatarsDirectory } from './cacheService';
  12. const lastUpdateNmRegions =
  13. (storage.get('lastUpdateNmRegions', StoreType.STRING) as string) || '1990-01-01';
  14. const lastUpdateDarePlaces =
  15. (storage.get('lastUpdateDarePlaces', StoreType.STRING) as string) || '1990-01-01';
  16. export const checkInternetConnection = async (): Promise<NetInfoState> => {
  17. const state = await NetInfo.fetch();
  18. return state;
  19. };
  20. export const syncDataWithServer = async (): Promise<void> => {
  21. const { isConnected } = await checkInternetConnection();
  22. if (isConnected) {
  23. await updateDarePlacesDb(lastUpdateDarePlaces);
  24. await updateMasterRanking();
  25. await updateNmRegionsDb(lastUpdateNmRegions);
  26. await downloadFlags();
  27. await initOfflineSetup();
  28. }
  29. };
  30. export const setupDatabaseAndSync = async (): Promise<void> => {
  31. await syncDataWithServer();
  32. cleanCache();
  33. deleteAvatarsDirectory();
  34. };
  35. export const updateMasterRanking = async () => {
  36. const token = (storage.get('token', StoreType.STRING) as string) || '';
  37. const dataLimitedRanking = await fetchLimitedRanking();
  38. if (dataLimitedRanking && dataLimitedRanking?.data) {
  39. storage.set('masterRanking', JSON.stringify(dataLimitedRanking.data));
  40. }
  41. const dataLpi = await fetchLpi();
  42. if (dataLpi && dataLpi?.data) {
  43. storage.set('lpiRanking', JSON.stringify(dataLpi.data));
  44. }
  45. const dataInHistory = await fetchInHistory();
  46. if (dataInHistory && dataInHistory?.data) {
  47. storage.set('inHistoryRanking', JSON.stringify(dataInHistory.data));
  48. }
  49. const dataInMemoriam = await fetchInMemoriam();
  50. if (dataInMemoriam && dataInMemoriam?.data) {
  51. storage.set('inMemoriamRanking', JSON.stringify(dataInMemoriam.data));
  52. }
  53. await fetchAndSaveStatistics(token);
  54. await fetchAndSaveAllTypesAndMasters();
  55. await saveTriumphsData();
  56. await saveSeriesRankingData();
  57. };
  58. export default setupDatabaseAndSync;