UNPKG

@adyen/adyen-platform-experience-web

Version:

![Platform Experience header](https://github.com/Adyen/adyen-platform-experience-web/assets/7926613/18094965-9e01-450e-8dc9-ea84e6b22c2b)

55 lines (54 loc) 2.01 kB
import S from "../../../../../hooks/useBalanceAccounts.js"; import { createDuplexTransactionNavigator as y } from "./transactionNavigator/createDuplexTransactionNavigator.js"; import { useRef as m, useState as l, useMemo as h, useCallback as C, useEffect as s } from "../../../../../external/.pnpm/preact@10.28.2/node_modules/preact/hooks/dist/hooks.module.js"; import { useFetch as R } from "../../../../../hooks/useFetch.js"; import { useConfigContext as x } from "../../../../../core/ConfigContext/preact/context.js"; import { EMPTY_OBJECT as B } from "../../../../../utils/value/constants.js"; import { isFunction as E } from "../../../../../utils/value/is.js"; const v = (e) => { const { onNavigation: n, reset: a, ...r } = e; return r; }, J = (e) => { const n = m(y()).current, [a, r] = l(e), [t, N] = l(), [b, A] = l(() => v(n)), { balanceAccounts: T } = S(), { getTransaction: i } = x().endpoints, { data: u, error: f, isFetching: o } = R( h(() => { const c = E(i) && !!a, g = { transactionId: a }; return { fetchOptions: { enabled: c }, queryFn: () => i(B, { path: g }) }; }, [i, a]) ), p = m(o), d = m(a), F = h(() => { if (!t) return; const c = T?.find((g) => g.id === t.balanceAccountId); return { ...t, balanceAccount: c }; }, [T, t]), I = C(() => r(void 0), []); return s(() => { switch (t?.id === e && t?.category) { case "Refund": { n.reset(t?.id, t?.refundMetadata?.originalPaymentId), n.onNavigation = ({ to: c }) => r(c); break; } } A(v(n)); }, [e, t, n]), s(() => { p.current !== o && ((p.current = o) || (!u || f ? r(d.current) : (N(u), d.current = a))); }, [u, f, o, a]), s(() => { a || r(d.current); }, [t, a]), s(() => () => { n.onNavigation = null, n.reset(); }, [n]), { error: f, fetchingTransaction: o, refreshTransaction: I, transaction: F, transactionNavigator: b }; }; export { J as default, J as useTransaction };