diff --git a/app/providers/DialogProvider/dialogQueue.ts b/app/providers/DialogProvider/dialogQueue.ts index 7256a77..4422f90 100644 --- a/app/providers/DialogProvider/dialogQueue.ts +++ b/app/providers/DialogProvider/dialogQueue.ts @@ -1,5 +1,12 @@ let tail: Promise = Promise.resolve(); +/** + * Ставит функцию в очередь на выполнение. + * Все функции выполняются последовательно, одна за другой. + * Если функция выбрасывает ошибку, она логируется, + * а выполнение очереди продолжается + * @param fn функция + */ export const runTaskInQueue = (fn: () => Promise) => { tail = tail.then(fn).catch((e) => { console.error("Dialog queue error", e); diff --git a/app/providers/DialogProvider/useDialogFiber.ts b/app/providers/DialogProvider/useDialogFiber.ts index 7b77cb4..28f449e 100644 --- a/app/providers/DialogProvider/useDialogFiber.ts +++ b/app/providers/DialogProvider/useDialogFiber.ts @@ -70,10 +70,8 @@ export function useDialogFiber() { } await runQuery( "INSERT INTO accounts_sync_times (account, last_sync) VALUES (?, ?) " + - "ON CONFLICT(account) DO UPDATE SET last_sync = CASE " + - "WHEN excluded.last_sync > last_sync THEN excluded.last_sync " + - "ELSE last_sync END", - [publicKey, timestamp] + "ON CONFLICT(account) DO UPDATE SET last_sync = ?", + [publicKey, timestamp, timestamp] ); }; @@ -580,6 +578,7 @@ export function useDialogFiber() { const messageId = packet.getMessageId(); await runQuery(`UPDATE messages SET delivered = ?, timestamp = ? WHERE message_id = ? AND account = ?`, [DeliveredMessageState.DELIVERED, Date.now(), messageId, publicKey]); updateDialog(packet.getToPublicKey()); + updateSyncTime(Date.now()); log("Delivery packet received msg id " + messageId); addOrUpdateDialogCache(packet.getToPublicKey(), getDialogCache(packet.getToPublicKey()).map((message) => { if (message.message_id == messageId) {