UNPKG

@tanstack/offline-transactions

Version:

Offline-first transaction capabilities for TanStack DB

43 lines (42 loc) 1.3 kB
import { OnMutateMustBeSynchronousError } from "@tanstack/db"; import { OfflineTransaction } from "./OfflineTransaction.js"; function isPromiseLike(value) { return !!value && (typeof value === `object` || typeof value === `function`) && typeof value.then === `function`; } function createOfflineAction(options, mutationFn, persistTransaction, executor) { const { mutationFnName, onMutate } = options; console.log(`createOfflineAction 2`, options); return (variables) => { const offlineTransaction = new OfflineTransaction( { mutationFnName, autoCommit: false }, mutationFn, persistTransaction, executor ); const transaction = offlineTransaction.mutate(() => { console.log(`mutate`); const maybePromise = onMutate(variables); if (isPromiseLike(maybePromise)) { throw new OnMutateMustBeSynchronousError(); } }); const commitPromise = (async () => { try { await transaction.commit(); console.log(`offlineAction committed - success`); } catch { console.log(`offlineAction commit failed - error`); } })(); commitPromise.catch(() => { }); return transaction; }; } export { createOfflineAction }; //# sourceMappingURL=OfflineAction.js.map