@tanstack/db
Version:
A reactive client store for building super fast apps on sync
27 lines (26 loc) • 825 B
JavaScript
import { createTransaction } from "./transactions.js";
import { OnMutateMustBeSynchronousError } from "./errors.js";
import { isPromiseLike } from "./utils/type-guards.js";
function createOptimisticAction(options) {
const { mutationFn, onMutate, ...config } = options;
return (variables) => {
const transaction = createTransaction({
...config,
// Wire the mutationFn to use the provided variables
mutationFn: async (params) => {
return await mutationFn(variables, params);
}
});
transaction.mutate(() => {
const maybePromise = onMutate(variables);
if (isPromiseLike(maybePromise)) {
throw new OnMutateMustBeSynchronousError();
}
});
return transaction;
};
}
export {
createOptimisticAction
};
//# sourceMappingURL=optimistic-action.js.map