UNPKG

@r3l/app

Version:
175 lines (150 loc) 6.89 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _reactRedux = require("react-redux"); var _post = require("../../../utils/post"); var _community = require("../../community/community.selectors"); var _postbutton = _interopRequireDefault(require("./postbutton")); var _postrank = _interopRequireDefault(require("./postrank")); var _button = require("./button.hooks"); var _styled = require("../../styled"); 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 coinImage = require("../../../../public/img/relevantcoin.png"); PostButtons.propTypes = { post: _propTypes.default.shape({ _id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]), id: _propTypes.default.string, data: _propTypes.default.object, user: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]), myVote: _propTypes.default.object, parentPost: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]), type: _propTypes.default.string, url: _propTypes.default.string }), color: _propTypes.default.string, horizontal: _propTypes.default.bool }; var _default = /*#__PURE__*/(0, _react.memo)(PostButtons); exports.default = _default; function PostButtons(_ref) { var post = _ref.post, color = _ref.color, horizontal = _ref.horizontal; var investButton = (0, _react.useRef)(); var community = (0, _community.useCommunity)(); var userId = (0, _reactRedux.useSelector)(function (state) { var _state$auth, _state$auth$user; return (_state$auth = state.auth) === null || _state$auth === void 0 ? void 0 : (_state$auth$user = _state$auth.user) === null || _state$auth$user === void 0 ? void 0 : _state$auth$user.userId; }); var betEnabled = (0, _reactRedux.useSelector)(function (state) { var _state$auth$user2, _state$auth$user2$not, _state$auth$user2$not2; return (_state$auth$user2 = state.auth.user) === null || _state$auth$user2 === void 0 ? void 0 : (_state$auth$user2$not = _state$auth$user2.notificationSettings) === null || _state$auth$user2$not === void 0 ? void 0 : (_state$auth$user2$not2 = _state$auth$user2$not.bet) === null || _state$auth$user2$not2 === void 0 ? void 0 : _state$auth$user2$not2.manual; }); var canBet = (0, _react.useMemo)(function () { return getCanBet({ post: post, community: community, betEnabled: betEnabled }); }, [betEnabled, community, post]); (0, _button.useVoteAnimation)({ post: post, investButton: investButton, horizontal: horizontal }); var castVote = (0, _button.useCastVote)({ post: post, userId: userId, community: community, canBet: canBet }); var tooltipData = (0, _react.useMemo)(function () { return getTooltipData(post, horizontal); }, [post, horizontal]); var voteStatus = (0, _react.useMemo)(function () { return getVoteStatus(userId, post); }, [userId, post]); if (!post || post === 'notFound') return null; return /*#__PURE__*/_react.default.createElement(_styled.View, { ref: investButton, onLayout: function onLayout() { return {}; }, sx: { alignItems: 'center', flexDirection: horizontal ? 'row' : 'column', opacity: 1 // need this to make animations work on android } }, /*#__PURE__*/_react.default.createElement(_styled.View, null, canBet && /*#__PURE__*/_react.default.createElement(_styled.Image, { sx: { width: 2, height: 2, position: 'absolute', top: -0.8, right: -3.2 }, source: coinImage }), /*#__PURE__*/_react.default.createElement(_postbutton.default, { canBet: canBet, tooltipData: tooltipData, key: "".concat(post.id, "-up"), imageSet: "UPVOTE", isActive: voteStatus.up, alt: "upvote", color: color, onPress: function onPress(e) { return castVote(e, voteStatus.vote, 1); } })), /*#__PURE__*/_react.default.createElement(_postrank.default, { horizontal: horizontal, color: color, post: post }), /*#__PURE__*/_react.default.createElement(_postbutton.default, { tooltipData: tooltipData, key: "".concat(post.id, "-down"), imageSet: "DOWNVOTE", isActive: voteStatus.down, alt: "downvote", color: color, onPress: function onPress(e) { return castVote(e, voteStatus.vote, -1); } })); } function getVoteStatus(userId, post) { var ownPost = userId != null && userId === (post === null || post === void 0 ? void 0 : post.user); var vote = ownPost ? true : post.myVote; return { vote: vote, up: vote && vote.amount > 0, down: vote && vote.amount < 0 }; } function getTooltipData(post, horizontal) { var postType = (0, _post.getPostType)({ post: post }); var tipText = postType === 'link' ? 'Upvote articles that are worth reading, downvote spam.' : "Upvote quality ".concat(postType, "s and downvote spam"); return { text: tipText, position: horizontal ? 'top' : 'right', desktopOnly: true }; } function getCanBet(_ref2) { var post = _ref2.post, community = _ref2.community, betEnabled = _ref2.betEnabled; if (!post) return false; var now = new Date(); var communityBetIsEnabled = community && community.betEnabled; return betEnabled && communityBetIsEnabled && post.data && post.data.eligibleForReward && now.getTime() < new Date(post.data.payoutTime).getTime(); } //# sourceMappingURL=postbuttons.container.js.map