UNPKG

@r3l/app

Version:
157 lines (130 loc) 5.67 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Popup = void 0; var _react = _interopRequireWildcard(require("react")); var _community = require("../../community"); var _reactNativeWeb = require("react-native-web"); var _reactNativeBottomsheet = _interopRequireDefault(require("react-native-bottomsheet")); var _Ionicons = _interopRequireDefault(require("react-native-vector-icons/Ionicons")); var _colors = require("../../../styles/colors"); var _post = require("../post.actions"); var _reactRedux = require("react-redux"); var _navigation = require("../../navigation/navigation.actions"); var _createPost = require("../../createPost/createPost.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 ActionSheet; //: Platform.OS === 'android' ? ActionSheetIOS || RNBottomSheet; if (_reactNativeWeb.Platform.OS === 'android') { ActionSheet = _reactNativeBottomsheet.default; ActionSheet.showActionSheetWithOptions = _reactNativeBottomsheet.default.showBottomSheetWithOptions; } else { ActionSheet = _reactNativeWeb.ActionSheetIOS; } var ownerMenu = { buttons: ['Edit', 'Delete', 'Cancel'], destructiveIndex: 1, cancelIndex: 2 }; var Popup = function Popup(_ref) { var isOwner = _ref.isOwner, post = _ref.post, edit = _ref.edit, userId = _ref.userId, deleteFn = _ref.deleteFn, singlePost = _ref.singlePost; var dispatch = (0, _reactRedux.useDispatch)(); var isAdmin = (0, _community.useRequireRole)(_community.MemberRole.ADMIN); var deletePostDefault = (0, _react.useCallback)(function () { var redirect = false; if (singlePost) redirect = true; dispatch((0, _post.deletePost)(post, redirect)); }, [post, singlePost, dispatch]); var toggleEditing = (0, _react.useCallback)(function () { dispatch((0, _createPost.setCreatePostState)({ postBody: post.body, nativeImage: true, postUrl: post.url, postImage: post.image, allTags: post.tags, urlPreview: { image: post.image, title: post.title ? post.title : 'Untitled', description: post.description }, edit: true, editPost: post })); dispatch((0, _navigation.push)({ key: 'createPost', back: true, title: 'Edit Post', next: 'Update', left: 'Cancel' })); }, [post, dispatch]); var showActionSheet = (0, _react.useCallback)(function () { var _ActionSheet; if (!((_ActionSheet = ActionSheet) !== null && _ActionSheet !== void 0 && _ActionSheet.showActionSheetWithOptions)) return; if (isOwner) { return ActionSheet.showActionSheetWithOptions({ options: ownerMenu.buttons, cancelButtonIndex: ownerMenu.cancelIndex, destructiveButtonIndex: ownerMenu.destructiveIndex }, function (buttonIndex) { switch (buttonIndex) { case 0: if (edit != null) edit();else toggleEditing(); break; case 1: if (deleteFn != null) deleteFn();else deletePostDefault(); break; default: } }); } return ActionSheet.showActionSheetWithOptions({ options: isAdmin ? ['Flag Inappropriate Content', 'Audit User', 'Cancel'] : ['Flag Inappropriate Content', 'Cancel'], cancelButtonIndex: isAdmin ? 2 : 1 }, function (buttonIndex) { switch (buttonIndex) { case 0: dispatch((0, _post.flag)(post)); break; case 1: { if (!isAdmin) break; dispatch((0, _navigation.push)({ key: 'relatedUsers', back: true, title: 'Related Users', id: userId })); } break; default: } }); }, [post, deletePostDefault, deleteFn, toggleEditing, edit, dispatch, isOwner, isAdmin, userId]); return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, { style: { justifyContent: 'flex-end', overflow: 'visible', alignSelf: 'center' } }, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableOpacity, { style: { paddingRight: 10 }, onPress: showActionSheet }, /*#__PURE__*/_react.default.createElement(_Ionicons.default, { name: "ellipsis-horizontal", size: 24, color: _colors.grey }))); }; exports.Popup = Popup; //# sourceMappingURL=popup.js.map