import { usePublicKey } from "../AccountProvider/usePublicKey"; import { useDatabase } from "../DatabaseProvider/useDatabase"; import { ProtocolState } from "../ProtocolProvider/ProtocolProvider"; import { useProtocolState } from "../ProtocolProvider/useProtocolState"; export function useUpdateSyncTime() : (timestamp: number) => Promise { const [protocolState] = useProtocolState(); const {runQuery} = useDatabase(); const publicKey = usePublicKey(); /** * Обновляет время последней синхронизации для аккаунта * @param timestamp время */ const updateSyncTime = async (timestamp: number) => { if(protocolState == ProtocolState.SYNCHRONIZATION){ /** * Если сейчас идет синхронизация то чтобы при синхронизации * не создавать нагрузку на базу данных * по постоянному обновлению, обновляем базу один раз - когда * приходит пакет о том что синхронизация закончилась */ return; } await runQuery( "INSERT INTO accounts_sync_times (account, last_sync) VALUES (?, ?) " + "ON CONFLICT(account) DO UPDATE SET last_sync = ? WHERE account = ?", [publicKey, timestamp, timestamp, publicKey] ); }; return updateSyncTime; }