UNPKG

@hypernetlabs/web-ui

Version:
159 lines 6.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useLinks = void 0; const objects_1 = require("@hypernetlabs/objects"); const contexts_1 = require("../contexts"); const react_1 = require("react"); const react_alert_1 = require("react-alert"); var EActionTypes; (function (EActionTypes) { EActionTypes["FETCHING"] = "FETCHING"; EActionTypes["FETCHED"] = "FETCHED"; EActionTypes["PUBLIC_IDENTIFIER_FETCHED"] = "PUBLIC_IDENTIFIER_FETCHED"; EActionTypes["PAYMENT_AUTO_ACCEPT_CHANGED"] = "PAYMENT_AUTO_ACCEPT_CHANGED"; EActionTypes["ERROR"] = "ERROR"; })(EActionTypes || (EActionTypes = {})); function useLinks() { const { coreProxy } = (0, contexts_1.useStoreContext)(); const { setLoading } = (0, contexts_1.useLayoutContext)(); const alert = (0, react_alert_1.useAlert)(); const setPaymentsAutoAccept = (val) => { dispatch({ type: EActionTypes.PAYMENT_AUTO_ACCEPT_CHANGED, payload: val, }); window.localStorage.setItem("PaymentsAutoAccept", JSON.stringify(val)); alert.success("Payments auto accept changed successfully."); }; const initialState = { loading: true, error: null, links: [], publicIdentifier: (0, objects_1.PublicIdentifier)(""), paymentsAutoAccept: false, setPaymentsAutoAccept, acceptPayment, pullFunds, }; const [state, dispatch] = (0, react_1.useReducer)((state, action) => { switch (action.type) { case EActionTypes.FETCHING: return { ...state, loading: true }; case EActionTypes.FETCHED: return { ...state, loading: false, links: action.payload }; case EActionTypes.PUBLIC_IDENTIFIER_FETCHED: return { ...state, loading: false, publicIdentifier: action.payload }; case EActionTypes.PAYMENT_AUTO_ACCEPT_CHANGED: return { ...state, loading: false, paymentsAutoAccept: action.payload }; case EActionTypes.ERROR: return { ...state, loading: false, error: action.payload }; default: return state; } }, initialState); (0, react_1.useEffect)(() => { fetchData(); coreProxy.onPullPaymentSent.subscribe(() => { alert.show("New pull payment sent."); fetchPayments(); }); coreProxy.onPushPaymentSent.subscribe(() => { alert.show("New push payment sent."); fetchPayments(); }); coreProxy.onPullPaymentReceived.subscribe((payment) => { const paymentsAutoAccept = getPaymentAutoAccept(); if (paymentsAutoAccept == true && payment.state == objects_1.EPaymentState.Proposed) { acceptPayment(payment.id); } else { fetchPayments(); } }); coreProxy.onPushPaymentReceived.subscribe((payment) => { const paymentsAutoAccept = getPaymentAutoAccept(); if (paymentsAutoAccept == true && payment.state == objects_1.EPaymentState.Proposed) { acceptPayment(payment.id); } else { fetchPayments(); } }); coreProxy.onPullPaymentUpdated.subscribe((payment) => { const paymentsAutoAccept = getPaymentAutoAccept(); if (paymentsAutoAccept == true && payment.state == objects_1.EPaymentState.Proposed) { acceptPayment(payment.id); } else { fetchPayments(); } }); coreProxy.onPushPaymentUpdated.subscribe((payment) => { const paymentsAutoAccept = getPaymentAutoAccept(); if (paymentsAutoAccept == true && payment.state == objects_1.EPaymentState.Proposed) { acceptPayment(payment.id); } else { fetchPayments(); } }); }, []); function fetchData() { fetchPayments(); coreProxy.payments.getPublicIdentifier().match((publicIdentifier) => { dispatch({ type: EActionTypes.PUBLIC_IDENTIFIER_FETCHED, payload: publicIdentifier, }); }, handleError); const paymentsAutoAccept = getPaymentAutoAccept(); dispatch({ type: EActionTypes.PAYMENT_AUTO_ACCEPT_CHANGED, payload: paymentsAutoAccept, }); } function fetchPayments() { setLoading(true); dispatch({ type: EActionTypes.FETCHING }); coreProxy.payments.getLinks().match((links) => { dispatch({ type: EActionTypes.FETCHED, payload: [...links] }); setLoading(false); }, handleError); } function acceptPayment(paymentId) { setLoading(true); coreProxy.payments.acceptOffer(paymentId).match(() => { fetchPayments(); alert.success("Payment accepted successfully."); }, (err) => { fetchPayments(); handleError(err); }); } function pullFunds(paymentId) { setLoading(true); coreProxy.payments.pullFunds(paymentId, (0, objects_1.BigNumberString)("1")).match(() => { fetchPayments(); alert.success("Payment disputed successfully."); }, handleError); } function getPaymentAutoAccept() { const paymentsAutoAcceptStr = window.localStorage.getItem("PaymentsAutoAccept"); return paymentsAutoAcceptStr == null ? false : JSON.parse(paymentsAutoAcceptStr); } function handleError(error) { const err = (error === null || error === void 0 ? void 0 : error.message) || "Something went wrong in payments!"; alert.error(err); dispatch({ type: EActionTypes.ERROR, payload: err }); setLoading(false); } return state; } exports.useLinks = useLinks; //# sourceMappingURL=useLinks.js.map