@r3l/app
Version:
337 lines (260 loc) • 12.4 kB
JavaScript
;
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 _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _reactNativeWeb = require("react-native-web");
var _redux = require("redux");
var _reactRedux = require("react-redux");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Ionicons = _interopRequireDefault(require("react-native-vector-icons/Ionicons"));
var _rnPrompt = _interopRequireDefault(require("rn-prompt"));
var _reactNavigation = require("react-navigation");
var _global = require("../../../styles/global");
var _stats = _interopRequireDefault(require("../../stats/mobile/stats.component"));
var _reactNativeBottomsheet = _interopRequireDefault(require("react-native-bottomsheet"));
var _pickerOptions = require("../../../utils/pickerOptions");
var _s = require("../../../utils/s3");
var _reactNativeImagePicker = _interopRequireDefault(require("react-native-image-picker"));
var userActions = _interopRequireWildcard(require("../../user/user.actions"));
var navigationActions = _interopRequireWildcard(require("../navigation.actions"));
var authActions = _interopRequireWildcard(require("../../auth/auth.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; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var styles;
var ActionSheet = _reactNativeWeb.ActionSheetIOS;
if (_reactNativeWeb.Platform.OS === 'android') {
ActionSheet = _reactNativeBottomsheet.default;
ActionSheet.showActionSheetWithOptions = _reactNativeBottomsheet.default.showBottomSheetWithOptions;
}
var HeaderRight = /*#__PURE__*/function (_Component) {
(0, _inherits2.default)(HeaderRight, _Component);
var _super = _createSuper(HeaderRight);
function HeaderRight() {
var _this;
(0, _classCallCheck2.default)(this, HeaderRight);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
newName: ''
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "showActionSheet", function () {
ActionSheet.showActionSheetWithOptions({
options: ['Change display name', 'Add new photo', 'Notifications', 'Blocked Users', 'FAQ', 'Logout', 'Cancel'],
cancelButtonIndex: 6,
destructiveButtonIndex: 5
}, function (buttonIndex) {
switch (buttonIndex) {
case 0:
_this.changeName();
break;
case 1:
_this.initImage();
break;
case 2:
_this.props.actions.push('notifications');
break;
case 3:
_this.props.actions.viewBlocked();
break;
case 4:
_this.props.actions.goToUrl('https://relevant.community/info/faq');
break;
case 5:
_this.logoutRedirect();
break;
default:
}
});
});
return _this;
}
(0, _createClass2.default)(HeaderRight, [{
key: "changeName",
value: function changeName() {
var _this2 = this;
var user = this.props.auth.user; // ANDROID
if (_reactNativeWeb.Platform.OS === 'android') {
this.promptTitle = 'Enter new name';
this.setState({
promptVisible: true
});
return;
} // IOS
_reactNativeWeb.Alert.prompt('Enter new name', user.name, [{
text: 'Cancel',
style: 'cancel'
}, {
text: 'OK',
onPress: function onPress(newName) {
user.name = newName;
_this2.props.actions.updateUser(user);
_this2.setState({
newName: newName
});
}
}]);
}
}, {
key: "initImage",
value: function initImage() {
var _this3 = this;
this.chooseImage(function (err, res) {
if (err) return _reactNativeWeb.Alert.alert(err);
if (!res) return;
(0, _s.uploadFile)("data:".concat(res.type, ";base64,").concat(res.data), res.type, res.uri).then(function (url) {
var newUser = _this3.props.auth.user;
newUser.image = url;
_this3.props.actions.updateUser(newUser);
}).catch(function (err) {
_reactNativeWeb.Alert.alert('Error uploading image', err.message);
});
});
}
}, {
key: "chooseImage",
value: function chooseImage(callback) {
_reactNativeImagePicker.default.showImagePicker(_pickerOptions.pickerOptions, function (res) {
if (res.didCancel) return callback();
if (res.error || res.customButton) return callback('Image selection error.');
return callback(null, res);
});
}
}, {
key: "logoutRedirect",
value: function logoutRedirect() {
var _this$props = this.props,
actions = _this$props.actions,
auth = _this$props.auth;
actions.removeDeviceToken(this.props.auth);
actions.logoutAction(auth.user);
var resetAction = _reactNavigation.StackActions.reset({
index: 0,
key: null,
actions: [_reactNavigation.NavigationActions.navigate({
routeName: 'main'
})]
});
this.props.navigation.dispatch(resetAction);
this.props.navigation.navigate('auth');
}
}, {
key: "renderElement",
value: function renderElement() {
var _this4 = this;
var _this$props2 = this.props,
navigation = _this$props2.navigation,
auth = _this$props2.auth;
var state = navigation.state;
if (state.routeName === 'myProfileView') {
return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.TouchableHighlight, {
style: styles.gear,
underlayColor: 'transparent',
onPress: function onPress() {
return _this4.showActionSheet();
}
}, _reactNativeWeb.Platform.OS === 'ios' ?
/*#__PURE__*/
// eslint-disable-next-line jsx-a11y/accessible-emoji
_react.default.createElement(_reactNativeWeb.Text, {
style: {
paddingBottom: 5,
fontSize: 17
}
}, "\u2699\uFE0F") : /*#__PURE__*/_react.default.createElement(_Ionicons.default, {
name: "ios-settings",
size: 24,
color: _global.darkGrey
}));
}
if (auth.user) {
return /*#__PURE__*/_react.default.createElement(_stats.default, {
type: 'nav',
discover: state.routeName === 'discoverView',
parent: this,
entity: auth.user
});
}
return null;
}
}, {
key: "render",
value: function render() {
var _this5 = this;
var _this$props3 = this.props,
auth = _this$props3.auth,
actions = _this$props3.actions;
return /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, {
style: styles.rightButton
}, /*#__PURE__*/_react.default.createElement(_reactNativeWeb.View, {
style: {
paddingRight: 10
}
}, this.renderElement()), /*#__PURE__*/_react.default.createElement(_rnPrompt.default, {
title: this.promptTitle || '',
visible: this.state.promptVisible,
onCancel: function onCancel() {
return _this5.setState({
promptVisible: false
});
},
onSubmit: function onSubmit(newName) {
auth.user.name = newName;
actions.updateUser(auth.user);
_this5.setState({
promptVisible: false,
newName: newName
});
}
}));
}
}]);
return HeaderRight;
}(_react.Component);
(0, _defineProperty2.default)(HeaderRight, "propTypes", {
auth: _propTypes.default.object,
actions: _propTypes.default.object,
navigation: _propTypes.default.object
});
var localStyles = _reactNativeWeb.StyleSheet.create({
rightButton: {
flex: 1,
marginRight: _global.mainPadding - 10,
justifyContent: 'center'
},
gear: {
flexDirection: 'row',
justifyContent: 'flex-end',
alignItems: 'center'
}
});
styles = _objectSpread(_objectSpread({}, localStyles), _global.globalStyles);
function mapStateToProps(state) {
return {
auth: state.auth
};
}
function mapDispatchToProps(dispatch) {
return {
actions: (0, _redux.bindActionCreators)(_objectSpread(_objectSpread(_objectSpread({}, navigationActions), userActions), authActions), dispatch)
};
}
var _default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(HeaderRight);
exports.default = _default;
//# sourceMappingURL=headerRight.component.js.map