@r3l/app
Version:
175 lines (150 loc) • 6.89 kB
JavaScript
"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