UNPKG

@r3l/app

Version:
276 lines (238 loc) 11.3 kB
"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 _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 _propTypes = _interopRequireDefault(require("prop-types")); var _redux = require("redux"); var _reactRedux = require("react-redux"); var adminActions = _interopRequireWildcard(require("../admin.actions")); var _ShadowButton = _interopRequireDefault(require("../../ui/web/ShadowButton")); var _infScroll = _interopRequireDefault(require("../../listview/web/infScroll.component")); 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 _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; } } if (process.env.BROWSER === true) { require("./admin.css"); } var PAGE_SIZE = 40; var Invites = /*#__PURE__*/function (_Component) { (0, _inherits2.default)(Invites, _Component); var _super = _createSuper(Invites); function Invites(props) { var _this; (0, _classCallCheck2.default)(this, Invites); _this = _super.call(this, props); _this.handleChange = _this.handleChange.bind((0, _assertThisInitialized2.default)(_this)); _this.createInvite = _this.createInvite.bind((0, _assertThisInitialized2.default)(_this)); _this.sendEmail = _this.sendEmail.bind((0, _assertThisInitialized2.default)(_this)); _this.load = _this.load.bind((0, _assertThisInitialized2.default)(_this)); _this.hasMore = true; _this.state = { email: '', name: '', number: 1, filter: null, invitedBy: '' }; return _this; } (0, _createClass2.default)(Invites, [{ key: "load", value: function load(page) { var l = this.props.admin.inviteList.length; this.hasMore = (page - 1) * PAGE_SIZE <= l; if (this.hasMore) { this.props.actions.getInvites(l, PAGE_SIZE); } } }, { key: "sendEmail", value: function sendEmail(invite) { if (invite.status) { var c = window.confirm('We have already sent one email to this user, are you sure you would like to send another one?'); if (c) { this.props.actions.sendInvitationEmail(invite._id); } } else { this.props.actions.sendInvitationEmail(invite._id); } } }, { key: "destroy", value: function destroy(invite) { var c = window.confirm('Are you sure you would like to delete this invite?'); if (c) this.props.actions.destroy(invite); } }, { key: "createInvite", value: function createInvite() { var invite = { email: this.state.email, name: this.state.name, number: this.state.number, invitedByString: this.state.invitedBy }; this.props.actions.createInvite(invite); this.setState({ name: '', email: '', number: 1 }); } }, { key: "handleChange", value: function handleChange(event) { this.setState((0, _defineProperty2.default)({}, event.target.name, event.target.value)); } }, { key: "renderInvite", value: function renderInvite(inviteId) { var _this2 = this; var invite = this.props.admin.invites[inviteId]; if (!invite) return null; if (this.state.filter === 'original' && !invite.email) return null; if (this.state.filter === 'registered' && invite.status !== 'registered') return null; if (this.state.filter === 'notregistered' && (invite.status === 'registered' || !invite.email)) { return null; } return /*#__PURE__*/_react.default.createElement("div", { key: inviteId, className: 'adminRow' }, /*#__PURE__*/_react.default.createElement("span", null, invite.invitedBy), /*#__PURE__*/_react.default.createElement("span", null, invite.name), /*#__PURE__*/_react.default.createElement("span", null, invite.email), /*#__PURE__*/_react.default.createElement("span", null, invite.code), /*#__PURE__*/_react.default.createElement("span", null, invite.status), /*#__PURE__*/_react.default.createElement("span", { style: { width: '40px' } }, invite.number), /*#__PURE__*/_react.default.createElement("button", { onClick: function onClick() { return _this2.sendEmail(invite); } }, "Resend Email"), /*#__PURE__*/_react.default.createElement("button", { className: 'alert', onClick: function onClick() { return _this2.destroy(invite); } }, "Delete")); } }, { key: "render", value: function render() { var _this3 = this; var createInvite = /*#__PURE__*/_react.default.createElement("div", { className: "adminInner" }, /*#__PURE__*/_react.default.createElement("input", { className: 'blueInput', type: 'text', name: 'invitedBy', placeholder: 'invited by', value: this.state.invitedBy, onChange: this.handleChange }), /*#__PURE__*/_react.default.createElement("input", { className: 'blueInput', type: 'email', name: 'email', placeholder: 'user email', value: this.state.email, onChange: this.handleChange }), /*#__PURE__*/_react.default.createElement("input", { className: 'blueInput', type: 'text', name: 'name', placeholder: 'user name', value: this.state.name, onChange: this.handleChange }), /*#__PURE__*/_react.default.createElement("input", { className: 'blueInput', style: { width: '40px', textAlign: 'right' }, type: 'text', name: 'number', placeholder: 'number of invites', value: this.state.number, onChange: this.handleChange }), /*#__PURE__*/_react.default.createElement(_ShadowButton.default, { backgroundColor: 'white', color: '#3E3EFF', onClick: this.createInvite }, this.state.email ? 'Send Invite Email' : 'Create Invite Code')); var invites = this.props.admin.inviteList ? this.props.admin.inviteList.map(function (id) { return _this3.renderInvite(id); }) : null; return /*#__PURE__*/_react.default.createElement("div", { className: "adminContainer" }, /*#__PURE__*/_react.default.createElement("h2", null, "Manage Invites"), createInvite, /*#__PURE__*/_react.default.createElement("div", { className: 'filter' }, /*#__PURE__*/_react.default.createElement("span", { onClick: function onClick() { return _this3.setState({ filter: null }); } }, "all"), /*#__PURE__*/_react.default.createElement("span", { onClick: function onClick() { return _this3.setState({ filter: 'original' }); } }, "original"), /*#__PURE__*/_react.default.createElement("span", { onClick: function onClick() { return _this3.setState({ filter: 'registered' }); } }, "registered"), /*#__PURE__*/_react.default.createElement("span", { onClick: function onClick() { return _this3.setState({ filter: 'notregistered' }); } }, "notregistered")), /*#__PURE__*/_react.default.createElement("div", { key: 'inviteId', className: 'titleRow' }, /*#__PURE__*/_react.default.createElement("span", null, "Invited by"), /*#__PURE__*/_react.default.createElement("span", null, "Name"), /*#__PURE__*/_react.default.createElement("span", null, "Email"), /*#__PURE__*/_react.default.createElement("span", null, "Invite Code"), /*#__PURE__*/_react.default.createElement("span", null, "Status"), /*#__PURE__*/_react.default.createElement("span", { style: { width: '40px' } }, "Number"), /*#__PURE__*/_react.default.createElement("span", { style: { maxWidth: 130 } })), /*#__PURE__*/_react.default.createElement(_infScroll.default, { className: 'adminContainer', data: this.props.admin.inviteList, loadMore: this.load, hasMore: this.hasMore }, invites)); } }]); return Invites; }(_react.Component); (0, _defineProperty2.default)(Invites, "propTypes", { admin: _propTypes.default.object, actions: _propTypes.default.object }); var _default = (0, _reactRedux.connect)(function (state) { return { auth: state.auth, admin: state.admin }; }, function (dispatch) { return { actions: (0, _redux.bindActionCreators)(adminActions, dispatch) }; })(Invites); exports.default = _default; //# sourceMappingURL=invites.container.js.map