@hypernetlabs/web-ui
Version:
Web ui react components for hypernet protocol
159 lines • 6.1 kB
JavaScript
;
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