UNPKG

@r3l/app

Version:
260 lines (207 loc) 9.83 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.CashoutHandler = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _reactRedux = require("react-redux"); var _web = require("../../styled/web"); var _wallet = require("../wallet.actions"); var _earnings = require("../earnings.actions"); var _common = require("@r3l/common"); var _tooltip = _interopRequireDefault(require("../../tooltip/tooltip.component")); var _price = require("../price.context"); var _cashoutFooter = require("./cashoutFooter"); var _styled = require("../../styled"); var _hooks = require("../../../web3/hooks"); var _utils = require("../../../web3/utils"); var _claimUtils = require("./claimUtils"); var _navigation = require("../../navigation/navigation.actions"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var CashoutHandler = function CashoutHandler(_ref) { var canClaim = _ref.canClaim, close = _ref.close; var _useState = (0, _react.useState)(''), _useState2 = (0, _slicedToArray2.default)(_useState, 2), token = _useState2[0], setToken = _useState2[1]; var user = (0, _reactRedux.useSelector)(function (state) { return state.auth.user; }); var _useWeb3React = (0, _hooks.useWeb3React)(), account = _useWeb3React.account; var unclaimedSig = (0, _claimUtils.useUnclaimedSig)(user, account); var unclaimedVest = (0, _claimUtils.useUnclaimedVest)(account); var unclaimedUnvestedTokens = ((unclaimedVest === null || unclaimedVest === void 0 ? void 0 : unclaimedVest.shortVest) || 0) + ((unclaimedVest === null || unclaimedVest === void 0 ? void 0 : unclaimedVest.longVest) || 0) || user.unvestedTokens; var _useTx = (0, _hooks.useTx)(), sendTx = _useTx.sendTx, txStatus = _useTx.txStatus; var rel = (0, _hooks.useRel)(); var maxClaim = Math.min(canClaim, Math.max(_common.CASHOUT_MAX - user.cashedOut + user.pendingCashout, 0)); var pendingTx = txStatus === _utils.TX_STATUS.PENDING; var initAmnt = maxClaim; var _useState3 = (0, _react.useState)(initAmnt), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), amount = _useState4[0], setAmount = _useState4[1]; var dispatch = (0, _reactRedux.useDispatch)(); var maxUSD = (0, _price.usePrice)(maxClaim); var _useVerifyEmail = (0, _claimUtils.useVerifyEmail)(), verifyEmail = _useVerifyEmail.verifyEmail, sendEmail = _useVerifyEmail.sendEmail, sendingEmail = _useVerifyEmail.sendingEmail, emailError = _useVerifyEmail.emailError; var startClaim = /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (!(user.email && user.confirmed && !token)) { _context.next = 2; break; } return _context.abrupt("return", verifyEmail()); case 2: return _context.abrupt("return", cashOut()); case 3: case "end": return _context.stop(); } } }, _callee); })); return function startClaim() { return _ref2.apply(this, arguments); }; }(); var cashOut = /*#__PURE__*/function () { var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() { var res, amnt, sig; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return dispatch((0, _wallet.cashOutCall)(amount, token)); case 2: res = _context2.sent; if (res) { _context2.next = 5; break; } return _context2.abrupt("return"); case 5: amnt = res.amnt, sig = res.sig; if (rel) { _context2.next = 9; break; } // eslint-disable-next-line no-console console.error('Missing contract'); return _context2.abrupt("return"); case 9: sendTx(rel, 'claimTokens', [amnt, sig]); case 10: case "end": return _context2.stop(); } } }, _callee2); })); return function cashOut() { return _ref3.apply(this, arguments); }; }(); (0, _react.useEffect)(function () { if (txStatus === _utils.TX_STATUS.CONFIRMED) { var _user$cashOut; dispatch((0, _earnings.updateCashoutLog)(user === null || user === void 0 ? void 0 : (_user$cashOut = user.cashOut) === null || _user$cashOut === void 0 ? void 0 : _user$cashOut.earning)); close(); } }, [txStatus, dispatch]); var minAmnt = (unclaimedSig === null || unclaimedSig === void 0 ? void 0 : unclaimedSig.amount) || 0; var validateAmount = function validateAmount(value) { return value < 0 ? 0 : value > maxClaim ? maxClaim : value; }; // const showUnclamedWarning = unclaimedSig && !pendingTx; if (sendEmail && !txStatus) return /*#__PURE__*/_react.default.createElement(_claimUtils.VerifyEmail, { email: user.email, cashOut: cashOut, setToken: setToken, token: token }); return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, (0, _claimUtils.renderWarnings)(false, emailError), /*#__PURE__*/_react.default.createElement(_styled.Row, null, /*#__PURE__*/_react.default.createElement(_styled.View, { sx: { flex: 1, mr: 1 } }, /*#__PURE__*/_react.default.createElement(_web.Input, { sx: { height: 5, mt: 0, flex: 1, fontSize: amount ? 5 : 4, px: 1, py: 0, fontWeight: 'bold' }, type: "number", onChange: function onChange(_ref4) { var value = _ref4.target.value; return setAmount(validateAmount(value)); }, value: amount })), /*#__PURE__*/_react.default.createElement(_styled.Button, { disabled: !amount || amount < minAmnt || amount === 0, sx: { height: 8, mr: 'auto' }, onPress: startClaim }, "Transfer coins to wallet")), amount < minAmnt || amount == 0 ? /*#__PURE__*/_react.default.createElement(_styled.SmallText, { sx: { color: 'red' } }, "amount must be greater ", minAmnt, " REL") : null, ' ', /*#__PURE__*/_react.default.createElement(_styled.Row, null, /*#__PURE__*/_react.default.createElement(_styled.View, null, /*#__PURE__*/_react.default.createElement(_styled.SecondaryText, { sx: { mt: 1, mr: 2 }, onPress: function onPress() { return setAmount(maxClaim); } }, /*#__PURE__*/_react.default.createElement(_tooltip.default, { data: { text: 'This is the maximum amount of coins you can claim at this time.' } }), "Maximum claim: ", maxClaim, maxUSD, " Coins")), /*#__PURE__*/_react.default.createElement(_styled.View, null, /*#__PURE__*/_react.default.createElement(_styled.SecondaryText, { sx: { mt: 1 } }, /*#__PURE__*/_react.default.createElement(_tooltip.default, { data: { text: 'Total unclaimed coins.' } }), "Unclaimed: ", canClaim, " Coins"))), unclaimedUnvestedTokens ? /*#__PURE__*/_react.default.createElement(_styled.Row, { sx: { mt: 4 } }, /*#__PURE__*/_react.default.createElement(_styled.BodyText, null, "You have ", unclaimedUnvestedTokens, " unvested tokens. "), /*#__PURE__*/_react.default.createElement(_styled.BodyText, { onPress: function onPress() { return dispatch((0, _navigation.showModal)('vest')); }, sx: { color: 'blue' } }, "Claim Unvested Tokens")) : null, /*#__PURE__*/_react.default.createElement(_cashoutFooter.CashoutFooter, null), pendingTx || sendingEmail ? /*#__PURE__*/_react.default.createElement(_claimUtils.Progress, { type: sendingEmail && !pendingTx ? _claimUtils.ProgressType.EMAIL : _claimUtils.ProgressType.TX }) : null); }; exports.CashoutHandler = CashoutHandler; //# sourceMappingURL=cashoutHandler.js.map