@r3l/app
Version:
157 lines (130 loc) • 5.67 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.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