@r3l/app
Version:
206 lines (168 loc) • 6.76 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 _reactNativeWeb = require("react-native-web");
var _reactNativeBottomsheet = _interopRequireDefault(require("react-native-bottomsheet"));
var _reactNativeShare = _interopRequireDefault(require("react-native-share"));
var _post = require("../../../utils/post");
var _navigation = require("../../navigation/navigation.actions");
var _createPost = require("../../createPost/createPost.actions");
var _styled = require("../../styled");
var _hooks = require("../../auth/hooks");
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 ActionSheet = _reactNativeWeb.ActionSheetIOS;
if (_reactNativeWeb.Platform.OS === 'android') {
ActionSheet = _reactNativeBottomsheet.default;
ActionSheet.showActionSheetWithOptions = _reactNativeBottomsheet.default.showBottomSheetWithOptions;
}
var linkMenu = {
buttons: ['Repost Article', 'Share Via...', 'Open Link in Browser', 'Cancel'],
cancelIndex: 3
};
var defaultMenu = {
buttons: ['Share Via...', 'Cancel'],
cancelIndex: 2
};
ButtonRow.propTypes = {
singlePost: _propTypes.default.bool,
focusInput: _propTypes.default.func,
link: _propTypes.default.object,
comment: _propTypes.default.object,
setupReply: _propTypes.default.func,
post: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object]),
parentPost: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object])
};
var _default = /*#__PURE__*/(0, _react.memo)(ButtonRow);
exports.default = _default;
function ButtonRow(_ref) {
var link = _ref.link,
post = _ref.post,
parentPost = _ref.parentPost,
singlePost = _ref.singlePost,
focusInput = _ref.focusInput,
comment = _ref.comment,
setupReply = _ref.setupReply;
var auth = (0, _reactRedux.useSelector)(function (state) {
return state.auth;
});
var dispatch = (0, _reactRedux.useDispatch)();
var menu = link ? linkMenu : defaultMenu;
var hasAuth = (0, _hooks.useAuth)();
var onShare = function onShare() {
var community = auth.community;
if (!hasAuth()) return;
var postUrl = (0, _post.getPostUrl)(community, post);
var title = (0, _post.getTitle)({
post: post
});
_reactNativeShare.default.open({
title: title || '',
url: 'https://relevant.community' + postUrl,
subject: 'Share Link'
}).catch(function (err) {
return console.log(err);
}); // eslint-disable-line
};
function showActionSheet() {
if (!hasAuth()) return;
ActionSheet.showActionSheetWithOptions({
options: menu.buttons,
cancelButtonIndex: menu.cancelIndex,
destructiveButtonIndex: menu.destructiveIndex
}, function (buttonIndex) {
if (link) {
switch (buttonIndex) {
case 0:
return repostUrl();
case 1:
return onShare();
case 2:
return _reactNativeWeb.Linking.openURL(link.url);
default:
return null;
}
}
switch (buttonIndex) {
case 0:
return onShare();
default:
return null;
}
});
}
function repostUrl() {
if (!hasAuth()) return;
if (!link) return;
dispatch((0, _createPost.setCreatePostState)({
postBody: '',
component: 'createPost',
nativeImage: true,
postUrl: link.url,
postImage: link.image,
urlPreview: {
image: link.image,
title: link.title ? link.title : 'Untitled',
description: link.description
}
}));
dispatch((0, _navigation.push)({
key: 'createPost',
title: 'Add Commentary'
}));
}
function NavigateToPost(openComment, _comment) {
if (openComment && !hasAuth()) return;
var _parentPost = parentPost || post;
var parentPostId = _parentPost._id || _parentPost;
if (singlePost) {
if (setupReply) setupReply(post);
if (focusInput) focusInput();
return;
}
dispatch((0, _navigation.goToPost)({
_id: parentPostId,
comment: _comment
}, openComment));
}
var isLink = !post.parentPost && post.url;
return /*#__PURE__*/_react.default.createElement(_styled.Row, null, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableOpacity, {
onPress: function onPress() {
return isLink ? NavigateToPost(true) : NavigateToPost(true, comment);
},
style: {
paddingHorizontal: 12
}
}, /*#__PURE__*/_react.default.createElement(_styled.Row, {
sx: {
alignItems: 'center'
}
}, /*#__PURE__*/_react.default.createElement(_styled.CTALink, {
cx: {
color: 'blue'
}
}, isLink ? 'Comment' : 'Reply'), post.commentCount && !isLink ? /*#__PURE__*/_react.default.createElement(_styled.CTALink, null, " (", post.commentCount, ")") : null)), /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableOpacity, {
style: {
paddingRight: 8
},
onPress: function onPress() {
return showActionSheet();
}
}, /*#__PURE__*/_react.default.createElement(_styled.View, {
sx: {
alignItems: 'center'
}
}, /*#__PURE__*/_react.default.createElement(_styled.CTALink, {
sx: {
color: 'blue'
}
}, "Share"))));
}
//# sourceMappingURL=buttonRow.js.map