UNPKG

@hypernetlabs/web-ui

Version:
173 lines 11.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const core_1 = require("@material-ui/core"); const icons_1 = require("@material-ui/icons"); const contexts_1 = require("../../contexts"); const react_1 = __importStar(require("react")); const LinksWidget_style_1 = require("../../widgets/LinksWidget/LinksWidget.style"); const components_1 = require("../../components"); const hooks_1 = require("../../hooks"); const SideFilter_style_1 = require("../../components/SideFilter/SideFilter.style"); const LinksWidget = ({ noLabel, excludeCardWrapper, bodyStyle, }) => { const classes = (0, LinksWidget_style_1.useStyles)(); const isLargeScreen = (0, core_1.useMediaQuery)(SideFilter_style_1.theme.breakpoints.up("md"), { noSsr: true, }); const { coreProxy, viewUtils, dateUtils } = (0, contexts_1.useStoreContext)(); const [tabValue, setTabValue] = (0, react_1.useState)(0); const [isSideFilterOpen, setIsSideFilterOpen] = (0, react_1.useState)(false); const [tokenInformationList, setTokenInformationList] = (0, react_1.useState)([]); const [filter, setFilter] = (0, react_1.useState)(); const { setLoading, handleCoreError } = (0, contexts_1.useLayoutContext)(); const { links, publicIdentifier, acceptPayment, pullFunds, loading, paymentsAutoAccept, setPaymentsAutoAccept, } = (0, hooks_1.useLinks)(); (0, react_1.useEffect)(() => { getTokenInformation(); }, []); const handleChange = (event, newValue) => { setTabValue(newValue); }; const linksFilter = (0, react_1.useMemo)(() => [ { label: "Search By Payment ID", widgetType: components_1.ESideFilterItemType.stringInput, stateKey: "id", }, { label: "Search By From", widgetType: components_1.ESideFilterItemType.stringInput, stateKey: "from", }, { label: "Search By To", widgetType: components_1.ESideFilterItemType.stringInput, stateKey: "to", }, { label: "Search By Gateway URL", widgetType: components_1.ESideFilterItemType.stringInput, stateKey: "gatewayUrl", }, { label: "Search By Payment State", widgetType: components_1.ESideFilterItemType.select, stateKey: "state", defaultValue: "all", widgetProps: { options: viewUtils.getPaymentStateOptions(), }, }, { label: "Search By created date", widgetType: components_1.ESideFilterItemType.dateTimeDifference, stateKey: "createdTimestamp", }, { label: "Search By expiration date", widgetType: components_1.ESideFilterItemType.dateTimeDifference, stateKey: "expirationDate", }, ], []); const handleFilterSubmit = (filter) => { console.log("handleFilterSubmit filter: ", filter); if (!filter) return; setFilter(filter); }; const getPushPayments = () => { return links.reduce((acc, link) => { const pushPayments = link.pushPayments.filter((pushPayment) => { return (pushPayment.id.includes((filter === null || filter === void 0 ? void 0 : filter.id) || "") && pushPayment.from.includes((filter === null || filter === void 0 ? void 0 : filter.from) || "") && pushPayment.to.includes((filter === null || filter === void 0 ? void 0 : filter.to) || "") && pushPayment.gatewayUrl.includes((filter === null || filter === void 0 ? void 0 : filter.gatewayUrl) || "") && ((filter === null || filter === void 0 ? void 0 : filter.state) == null || (filter === null || filter === void 0 ? void 0 : filter.state) === "all" || pushPayment.state.toString() == (filter === null || filter === void 0 ? void 0 : filter.state)) && dateUtils.checkTimestampInRang(pushPayment.createdTimestamp, dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.createdTimestampFrom), dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.createdTimestampTo)) && dateUtils.checkTimestampInRang(pushPayment.expirationDate, dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.expirationDateFrom), dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.expirationDateTo))); }); acc.push(...pushPayments); return acc; }, new Array()); }; const getTokenInformation = () => { setLoading(true); coreProxy.payments .getTokenInformation() .map((tokenInformationList) => { setTokenInformationList(tokenInformationList); setLoading(false); }) .mapErr(handleCoreError); }; const repairPayment = (paymentId) => { setLoading(true); coreProxy.payments .repairPayments([paymentId]) .map(() => { setLoading(false); }) .mapErr(handleCoreError); }; const getPullPayments = () => { return links.reduce((acc, link) => { const pullPayments = link.pullPayments.filter((pullPayment) => { return (pullPayment.id.includes((filter === null || filter === void 0 ? void 0 : filter.id) || "") && pullPayment.from.includes((filter === null || filter === void 0 ? void 0 : filter.from) || "") && pullPayment.to.includes((filter === null || filter === void 0 ? void 0 : filter.to) || "") && pullPayment.gatewayUrl.includes((filter === null || filter === void 0 ? void 0 : filter.gatewayUrl) || "") && ((filter === null || filter === void 0 ? void 0 : filter.state) == null || (filter === null || filter === void 0 ? void 0 : filter.state) === "all" || pullPayment.state.toString() == (filter === null || filter === void 0 ? void 0 : filter.state)) && dateUtils.checkTimestampInRang(pullPayment.createdTimestamp, dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.createdTimestampFrom), dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.createdTimestampTo)) && dateUtils.checkTimestampInRang(pullPayment.expirationDate, dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.expirationDateFrom), dateUtils.fromDatetimeStringToTimestamp(filter === null || filter === void 0 ? void 0 : filter.expirationDateTo))); }); acc.push(...pullPayments); return acc; }, new Array()); }; const onPaymentsAutoAcceptChange = (event) => { setPaymentsAutoAccept(event.target.checked); }; return (react_1.default.createElement(components_1.GovernanceCard, { ...(!isLargeScreen && { className: classes.nakedCard, }), title: react_1.default.createElement(core_1.Box, { display: "flex" }, react_1.default.createElement(core_1.Typography, { variant: "h6" }, "Transaction History"), react_1.default.createElement(core_1.Box, { display: "flex", alignItems: "center", marginLeft: "auto" }, react_1.default.createElement(core_1.Box, { display: "flex", alignItems: "center", marginRight: 1 }, react_1.default.createElement(core_1.Tooltip, { title: "Enabling auto-accept will free you from manually approving every change to your Hypernet account." }, react_1.default.createElement(icons_1.Info, { className: classes.infoIcon })), react_1.default.createElement(core_1.Typography, { variant: "body2", className: classes.switchLabel }, "Payments auto-accept"), react_1.default.createElement(core_1.Switch, { checked: paymentsAutoAccept, onChange: onPaymentsAutoAcceptChange, name: "paymentsAutoAccept", color: "primary", inputProps: { "aria-label": "primary checkbox" } })), react_1.default.createElement(components_1.GovernanceButton, { size: "small", onClick: () => setIsSideFilterOpen(true), endIcon: react_1.default.createElement(icons_1.FilterList, null) }, "Filter"))), description: "Transactions associated with the currently selected Hypernet account." }, react_1.default.createElement(components_1.GovernanceSideFilter, { visible: isSideFilterOpen, onClose: () => setIsSideFilterOpen(false), filterItems: linksFilter, onFilterSubmit: handleFilterSubmit }), react_1.default.createElement(core_1.AppBar, { position: "static", color: "transparent", elevation: 0 }, react_1.default.createElement(components_1.GovernanceTabs, { value: tabValue, onChange: handleChange, indicatorColor: "primary", textColor: "primary" }, react_1.default.createElement(components_1.GovernanceTab, { label: "Push Payments" }), react_1.default.createElement(components_1.GovernanceTab, { label: "Pull Payments" }))), react_1.default.createElement(components_1.TabPanel, { value: tabValue, index: 0 }, react_1.default.createElement(components_1.PushPaymentList, { publicIdentifier: publicIdentifier, tokenInformationList: tokenInformationList, pushPayments: getPushPayments(), onAcceptPushPaymentClick: acceptPayment, onRepairPaymentClick: repairPayment })), react_1.default.createElement(components_1.TabPanel, { value: tabValue, index: 1 }, react_1.default.createElement(components_1.PullPaymentList, { publicIdentifier: publicIdentifier, tokenInformationList: tokenInformationList, pullPayments: getPullPayments(), onAcceptPullPaymentClick: acceptPayment, onPullFundClick: pullFunds, onRepairPaymentClick: repairPayment })))); }; exports.default = LinksWidget; //# sourceMappingURL=LinksWidget.js.map