@r3l/app
Version:
460 lines (355 loc) • 17.7 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
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 _core = require("@web3-react/core");
var _providers = require("@ethersproject/providers");
var _component = _interopRequireDefault(require("@loadable/component"));
var _awesomeDebouncePromise = _interopRequireDefault(require("awesome-debounce-promise"));
var _routes = _interopRequireDefault(require("./routes"));
var _queryString = _interopRequireDefault(require("query-string"));
var _reactRouterConfig = require("react-router-config");
var _community = require("../../community/community.actions");
var _reactRedux = require("react-redux");
var _redux = require("redux");
var _reactRouterDom = require("react-router-dom");
var _earnings = require("../../wallet/earnings.actions");
var navigationActions = _interopRequireWildcard(require("../../navigation/navigation.actions"));
var authActions = _interopRequireWildcard(require("../../auth/auth.actions"));
var _modal = _interopRequireDefault(require("../../ui/modals/modal.container"));
var _styles = require("../../../styles");
var _reactSmartbanner = _interopRequireDefault(require("react-smartbanner"));
var _reactGa = _interopRequireDefault(require("react-ga"));
var _social = require("../../../utils/social");
var _tooltip = require("../../tooltip/web/tooltip.component");
var _reactToastify = require("react-toastify");
var _dripsy = require("dripsy");
var _reactNativeWeb = require("react-native-web");
var _utils = require("../../../utils");
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; } }
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 || (0, _typeof2.default)(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 UpvoteAnimation = (0, _component.default)({
resolved: {},
chunkName: function chunkName() {
return "animation-upvoteAnimation-component";
},
isReady: function isReady(props) {
var key = this.resolve(props);
if (this.resolved[key] !== true) {
return false;
}
if (typeof __webpack_modules__ !== 'undefined') {
return !!__webpack_modules__[key];
}
return false;
},
importAsync: function importAsync() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require("../../animation/upvoteAnimation.component"));
});
},
requireAsync: function requireAsync(props) {
var _this = this;
var key = this.resolve(props);
this.resolved[key] = false;
return this.importAsync(props).then(function (resolved) {
_this.resolved[key] = true;
return resolved;
});
},
requireSync: function requireSync(props) {
var id = this.resolve(props);
if (typeof __webpack_require__ !== 'undefined') {
return __webpack_require__(id);
}
return eval('module.require')(id);
},
resolve: function resolve() {
if (require.resolveWeak) {
return require.resolveWeak("../../animation/upvoteAnimation.component");
}
return eval('require.resolve')("../../animation/upvoteAnimation.component");
}
});
var DownvoteAnimation = (0, _component.default)({
resolved: {},
chunkName: function chunkName() {
return "animation-downvoteAnimation-component";
},
isReady: function isReady(props) {
var key = this.resolve(props);
if (this.resolved[key] !== true) {
return false;
}
if (typeof __webpack_modules__ !== 'undefined') {
return !!__webpack_modules__[key];
}
return false;
},
importAsync: function importAsync() {
return Promise.resolve().then(function () {
return _interopRequireWildcard(require("../../animation/downvoteAnimation.component"));
});
},
requireAsync: function requireAsync(props) {
var _this = this;
var key = this.resolve(props);
this.resolved[key] = false;
return this.importAsync(props).then(function (resolved) {
_this.resolved[key] = true;
return resolved;
});
},
requireSync: function requireSync(props) {
var id = this.resolve(props);
if (typeof __webpack_require__ !== 'undefined') {
return __webpack_require__(id);
}
return eval('module.require')(id);
},
resolve: function resolve() {
if (require.resolveWeak) {
return require.resolveWeak("../../animation/downvoteAnimation.component");
}
return eval('require.resolve')("../../animation/downvoteAnimation.component");
}
});
var AnimationContainer = (0, _dripsy.styled)(_reactNativeWeb.View)({
top: 0,
left: 0,
zIndex: 10000
}); // const DEV_MODE = process.env.NODE_ENV === 'development';
if (process.env.BROWSER === true) {
require("../../../styles/fonts.css");
require('react-toastify/dist/ReactToastify.css');
require('react-smartbanner/dist/main.css');
}
function getLibrary(provider) {
var library = new _providers.Web3Provider(provider);
library.pollingInterval = 1000;
return library;
}
var App = /*#__PURE__*/function (_Component) {
(0, _inherits2.default)(App, _Component);
var _super = _createSuper(App);
function App() {
var _this2;
(0, _classCallCheck2.default)(this, App);
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this2 = _super.call.apply(_super, [this].concat(args));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "state", {
authType: null
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "initAnalytics", function (_ref) {
var location = _ref.location,
history = _ref.history;
_social.TwitterCT.init('o1p7u');
_reactGa.default.initialize('UA-51795165-6');
_social.TwitterCT.pageView();
_reactGa.default.pageview(location.pathname + location.search);
history.listen(function (loc) {
_social.TwitterCT.pageView();
_reactGa.default.pageview(loc.pathname + loc.search);
_utils.Analytics.logEvent('screenView', {
viewName: loc.pathname + loc.search
});
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "setWidth", function () {
_this2.props.actions.setWidth(window.innerWidth);
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "debouncedSetWidth", (0, _awesomeDebouncePromise.default)(_this2.setWidth, 100));
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "updateWidth", function () {
_this2.debouncedSetWidth();
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "reloadTabs", function () {
var now = new Date().getTime();
if (now - _this2.backgroundTime > 10 * 60 * 1000) {
_this2.props.actions.reloadAllTabs();
}
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this2), "handleUserLogin", function () {
var _this2$props = _this2.props,
auth = _this2$props.auth,
actions = _this2$props.actions,
navigation = _this2$props.navigation,
location = _this2$props.location,
history = _this2$props.history;
var screenSize = navigation.screenSize;
if (auth.user.role === 'temp') {
return actions.showModal('setHandle');
}
if (!auth.user.webOnboard.onboarding) {
actions.showModal('onboarding');
actions.webOnboard('onboarding');
}
if (auth.invitecode) {
actions.redeemInvite(auth.invitecode);
_reactGa.default.event({
category: 'User',
action: 'Redeemed Invite'
});
}
_reactGa.default.set({
userId: auth.user._id
});
actions.getEarnings('pending');
if (!auth.community && location.pathname === '/') {
history.replace('/communities');
}
if (screenSize) return null;
return null;
});
return _this2;
}
(0, _createClass2.default)(App, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this3 = this;
var _this$props = this.props,
actions = _this$props.actions,
auth = _this$props.auth,
location = _this$props.location,
history = _this$props.history;
if (process.env.NODE_ENV !== 'development') {
this.initAnalytics({
location: location,
history: history
});
}
actions.getUser();
if (auth.user) this.handleUserLogin();
this.updateCommunity(location);
history.listen(function (loc) {
_this3.updateCommunity(loc);
});
var parsed = _queryString.default.parse(location.search);
if (parsed.invitecode) {
var _location$pathname;
actions.setInviteCode(parsed.invitecode);
if (auth.isAuthenticated) {
actions.redeemInvite(parsed.invitecode);
} else if (!(location !== null && location !== void 0 && (_location$pathname = location.pathname) !== null && _location$pathname !== void 0 && _location$pathname.match('resetPassword'))) {
history.push({
pathname: '/user/signup',
search: "".concat(location.search, "&redirect=").concat(location.pathname)
});
}
}
this.updateWidth();
window.addEventListener('resize', this.updateWidth); // TODO do this after a timeout
window.addEventListener('blur', function () {
_this3.backgroundTime = new Date().getTime();
}); // TODO do this after a timeout
window.addEventListener('focus', function () {
return _this3.reloadTabs();
});
}
}, {
key: "updateCommunity",
value: function updateCommunity(location) {
var _route, _route$match, _route$match$params;
var _this$props2 = this.props,
actions = _this$props2.actions,
auth = _this$props2.auth;
var route = (0, _reactRouterConfig.matchRoutes)(_routes.default, location === null || location === void 0 ? void 0 : location.pathname);
var newCommunity = route === null || route === void 0 ? void 0 : (_route = route[route.length - 1]) === null || _route === void 0 ? void 0 : (_route$match = _route.match) === null || _route$match === void 0 ? void 0 : (_route$match$params = _route$match.params) === null || _route$match$params === void 0 ? void 0 : _route$match$params.community;
if (newCommunity !== auth.community) actions.setCommunity(newCommunity);
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps) {
var _this$props3 = this.props,
actions = _this$props3.actions,
auth = _this$props3.auth,
location = _this$props3.location;
if (location.pathname !== prevProps.location.pathname) {
window.scrollTo(0, 0);
}
var userId = auth.user ? auth.user._id : null;
var PrevUserId = prevProps.auth.user ? prevProps.auth.user._id : null;
if (userId !== PrevUserId) {
actions.userToSocket(userId);
}
if (!prevProps.auth.user && auth.user) {
this.handleUserLogin();
}
if (prevProps.auth.user && auth.user && prevProps.auth.user.role === 'temp' && auth.user.role !== 'temp') {
this.handleUserLogin();
}
}
}, {
key: "render",
value: function render() {
var _this$props4 = this.props,
globalModal = _this$props4.globalModal,
navigation = _this$props4.navigation;
var screenSize = navigation.screenSize;
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_styles.GlobalStyle, null), /*#__PURE__*/_react.default.createElement(_reactSmartbanner.default, {
daysHidden: 0,
daysReminder: 0,
title: 'Relevant Communities',
position: 'top'
}), /*#__PURE__*/_react.default.createElement(_tooltip.TextTooltip, {
globalEventOff: "click",
type: 'dark',
scrollHide: true,
id: "mainTooltip",
multiline: true
}), /*#__PURE__*/_react.default.createElement(AnimationContainer, {
pointerEvents: 'none'
}, /*#__PURE__*/_react.default.createElement(UpvoteAnimation, null), /*#__PURE__*/_react.default.createElement(DownvoteAnimation, null)), /*#__PURE__*/_react.default.createElement(_core.Web3ReactProvider, {
getLibrary: getLibrary
}, /*#__PURE__*/_react.default.createElement(_react.Fragment, null, /*#__PURE__*/_react.default.createElement(_modal.default, null), /*#__PURE__*/_react.default.createElement(_reactToastify.ToastContainer, null), /*#__PURE__*/_react.default.createElement("div", null, (0, _reactRouterConfig.renderRoutes)(this.props.route.routes)))));
}
}]);
return App;
}(_react.Component);
(0, _defineProperty2.default)(App, "propTypes", {
auth: _propTypes.default.object,
actions: _propTypes.default.object,
match: _propTypes.default.object,
location: _propTypes.default.object,
user: _propTypes.default.object,
history: _propTypes.default.object,
route: _propTypes.default.object,
globalModal: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.string]),
navigation: _propTypes.default.object
});
var mapStateToProps = function mapStateToProps(state) {
return {
user: state.auth.user,
auth: state.auth,
navigation: state.navigation,
globalModal: state.navigation.modal
};
};
var mapDispatchToProps = function mapDispatchToProps(dispatch) {
return {
actions: (0, _redux.bindActionCreators)(_objectSpread(_objectSpread(_objectSpread({}, navigationActions), authActions), {}, {
getCommunities: _community.getCommunities,
getEarnings: _earnings.getEarnings
}), dispatch)
};
};
var _default = (0, _reactRouterDom.withRouter)((0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(App));
exports.default = _default;
//# sourceMappingURL=app.js.map