prostgles-client
Version:
Reactive client for Postgres
32 lines (31 loc) • 1.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useEffectAsync = void 0;
const reactImports_1 = require("../hooks/reactImports");
const { useRef } = reactImports_1.reactImports;
const useEffectDeep_1 = require("./useEffectDeep");
const useEffectAsync = (effect, inputs) => {
const onCleanup = useRef({
cleanup: undefined,
effect,
cleanupEffect: undefined,
});
onCleanup.current.effect = effect;
(0, useEffectDeep_1.useEffectDeep)(() => {
effect().then((result) => {
if (typeof result === "function") {
onCleanup.current.cleanup = result;
if (onCleanup.current.cleanupEffect === effect) {
result();
}
}
});
return () => {
var _a, _b;
onCleanup.current.cleanupEffect = effect;
(_b = (_a = onCleanup.current).cleanup) === null || _b === void 0 ? void 0 : _b.call(_a);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, inputs);
};
exports.useEffectAsync = useEffectAsync;