12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import * as SQLite from 'expo-sqlite';
- import NetInfo, { NetInfoState } from '@react-native-community/netinfo';
- import { StoreType, getOnlineStatus, storage } from 'src/storage';
- import { fetchLimitedRanking, fetchLpi, fetchInHistory, fetchInMemoriam } from '@api/ranking';
- import { initTilesDownload } from './tilesService';
- const db = SQLite.openDatabase('nomadManiaDb.db');
- export const initializeDatabase = (): Promise<void> => {
- return new Promise<void>((resolve, reject) => {
- db.transaction(tx => {
- createSyncTriggers('tableName');
- resolve();
- }, error => {
- console.error('DB initialization error: ', error);
- reject(error);
- });
- });
- };
- const createSyncTriggers = (tableName: string): void => {
- };
- export const checkInternetConnection = async (): Promise<NetInfoState> => {
- const state = await NetInfo.fetch();
- return state;
- };
- export const syncDataWithServer = async (): Promise<void> => {
- const userId = storage.get('uid', StoreType.STRING) as string;
- const { isConnected, isInternetReachable } = await checkInternetConnection();
- const isOnline = getOnlineStatus();
- if (isConnected && isInternetReachable && isOnline) {
- console.log('Syncing data with server...');
- processSyncQueue();
- await updateAvatars();
- await updateMasterRanking();
- await initTilesDownload(userId);
- }
- };
- const processSyncQueue = (): void => {
- };
- export const updateAvatars = async (): Promise<void> => {
- };
- export const updateStaticGeoJSON = async (): Promise<void> => {
- };
- export const setupDatabaseAndSync = async (): Promise<void> => {
- await initializeDatabase();
- await syncDataWithServer();
- await updateStaticGeoJSON();
- };
- const updateMasterRanking = async () => {
- const dataLimitedRanking = await fetchLimitedRanking();
- if (dataLimitedRanking && dataLimitedRanking.data) {
- storage.set('masterRanking', JSON.stringify(dataLimitedRanking.data));
- }
- 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));
- }
- };
- export default setupDatabaseAndSync;
|