UNPKG

@r3l/app

Version:
232 lines (188 loc) 6.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useCastVote = useCastVote; exports.useVoteAnimation = useVoteAnimation; 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 = require("react"); var _reactRedux = require("react-redux"); var _alert = require("../../../utils/alert"); var _navigation = require("../../navigation/navigation.actions"); var _hooks = require("../../auth/hooks"); var _utils = require("../../../utils"); var _launchAnimation = _interopRequireDefault(require("./launchAnimation")); var _invest = require("../invest.actions"); var _Alert = (0, _alert.Alert)(), alert = _Alert.alert; var ReactGA; if (process.env.WEB === 'true') { ReactGA = require('react-ga').default; } function useCastVote(_ref) { var post = _ref.post, userId = _ref.userId, canBet = _ref.canBet; var dispatch = (0, _reactRedux.useDispatch)(); var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), processingVote = _useState2[0], setProcessingVote = _useState2[1]; // const displayBetPrompt = showBetPrompt({ post, community, user }); var displayBetPrompt = false; var hasAuth = (0, _hooks.useAuth)(); return (0, _react.useCallback)( /*#__PURE__*/function () { var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(e, vote, amount) { var type, res; return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; e.preventDefault(); e.stopPropagation(); if (!processingVote) { _context.next = 5; break; } return _context.abrupt("return"); case 5: if (hasAuth()) { _context.next = 7; break; } return _context.abrupt("return"); case 7: type = amount > 0 ? 'upvote' : 'downvote'; if (!(vote && vote.isManualBet && type === 'upvote' && canBet)) { _context.next = 11; break; } showBetModal({ dispatch: dispatch, postId: post._id }); return _context.abrupt("return"); case 11: setProcessingVote(true); _context.next = 14; return dispatch((0, _invest.vote)({ amount: amount, post: post, userId: userId, vote: vote, displayBetPrompt: displayBetPrompt })); case 14: res = _context.sent; setProcessingVote(false); if (!(!res || res.undoInvest)) { _context.next = 18; break; } return _context.abrupt("return"); case 18: type === 'upvote' && canBet && showBetModal({ dispatch: dispatch, postId: post._id }); runAnalytics(type); _context.next = 26; break; case 22: _context.prev = 22; _context.t0 = _context["catch"](0); setProcessingVote(false); alert(_context.t0.message); case 26: case "end": return _context.stop(); } } }, _callee, null, [[0, 22]]); })); return function (_x, _x2, _x3) { return _ref2.apply(this, arguments); }; }(), [processingVote, hasAuth, dispatch, post, userId, displayBetPrompt, canBet]); } function useVoteAnimation(_ref3) { var post = _ref3.post, investButton = _ref3.investButton, horizontal = _ref3.horizontal; var dispatch = (0, _reactRedux.useDispatch)(); var newVote = (0, _reactRedux.useSelector)(function (state) { var _vote$post; var vote = state.investments.voteSuccess; var postId = (vote === null || vote === void 0 ? void 0 : (_vote$post = vote.post) === null || _vote$post === void 0 ? void 0 : _vote$post._id) || (vote === null || vote === void 0 ? void 0 : vote.post); return postId === post._id && vote; }); (0, _react.useEffect)(function () { if (!(newVote !== null && newVote !== void 0 && newVote._id)) return; var rankChange = computeRankChange({ post: post, rankChange: newVote.rankChange }); var type = newVote.amount >= 0 ? 'upvote' : 'downvote'; var el = investButton; var params = { amount: rankChange, horizontal: horizontal }; if (newVote.isManualBet && newVote.stakedTokens > 0) { params.amount = 0; (0, _launchAnimation.default)({ type: 'bet', params: params, el: el, dispatch: dispatch }); } else { (0, _launchAnimation.default)({ type: type, params: params, el: el, dispatch: dispatch }); } // clear new vote dispatch((0, _invest.updatePostVote)()); }, [newVote]); // eslint-disable-line } // function showBetPrompt({ post, community, user }) { // if (!post) return false; // const now = new Date(); // const bettingEnabled = community && community.betEnabled; // const manualBet = user && user.notificationSettings.bet.manual; // return ( // !manualBet && // bettingEnabled && // post.data && // post.data.eligibleForReward && // now.getTime() < new Date(post.data.payoutTime).getTime() // ); // } function showBetModal(_ref4) { var dispatch = _ref4.dispatch, postId = _ref4.postId; setTimeout(function () { return dispatch((0, _navigation.showModal)('investModal', { postId: postId })); }, 1000); } function computeRankChange(_ref5) { var post = _ref5.post, rankChange = _ref5.rankChange; var startRank = post.data ? post.data.pagerank : 0; var total = startRank + rankChange + 1; return Math.round(total) - Math.round(startRank); } function runAnalytics(type) { _utils.Analytics && _utils.Analytics.logEvent(type); ReactGA && ReactGA.event({ category: 'User', action: "".concat(type, "ed a post") }); } //# sourceMappingURL=button.hooks.js.map