UNPKG

@r3l/app

Version:
187 lines (160 loc) 7.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.Community = Community; exports.default = void 0; var _react = _interopRequireWildcard(require("react")); var _reactRedux = require("react-redux"); var _propTypes = _interopRequireDefault(require("prop-types")); var _navigation = require("../navigation/navigation.actions"); var _auth = require("../auth/auth.actions"); var _communityActive = _interopRequireDefault(require("./communityActive.component")); var _communityListItem = _interopRequireDefault(require("./communityListItem.component")); var _layout = require("../../styles/layout"); var _hooks = require("./hooks"); var _reactRouterDom = require("react-router-dom"); var _styled = require("../styled"); 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; } Community.propTypes = { viewCommunityMembers: _propTypes.default.func, showSettings: _propTypes.default.func }; function Community(_ref) { var _communityMembers$com; var viewCommunityMembers = _ref.viewCommunityMembers, showSettings = _ref.showSettings; var community = (0, _reactRedux.useSelector)(function (state) { return state.community; }); var auth = (0, _reactRedux.useSelector)(function (state) { return state.auth; }); var view = (0, _reactRedux.useSelector)(function (state) { return state.navigation.discover; }); var screenSize = (0, _reactRedux.useSelector)(function (state) { return state.navigation.screenSize; }); var communityMembers = community.communityMembers, members = community.members, communities = community.communities, userCommunities = community.userCommunities, userMemberships = community.userMemberships; var activeCommunity = communities === null || communities === void 0 ? void 0 : communities[community.active]; var activeMembers = (communityMembers === null || communityMembers === void 0 ? void 0 : (_communityMembers$com = communityMembers[community === null || community === void 0 ? void 0 : community.active]) === null || _communityMembers$com === void 0 ? void 0 : _communityMembers$com.map(function (id) { return members[id]; })) || []; return /*#__PURE__*/_react.default.createElement(_styled.Box, { sx: { flex: 1 } }, /*#__PURE__*/_react.default.createElement(_styled.Box, { sx: { variant: 'borders.navBorder', borderBottomWidth: 1 } }, activeCommunity && /*#__PURE__*/_react.default.createElement(_communityActive.default, { key: activeCommunity._id, community: activeCommunity, userCommunities: userCommunities, userMemberships: userMemberships, members: activeMembers, screenSize: screenSize, viewCommunityMembers: viewCommunityMembers, showSettings: showSettings, view: view, auth: auth }, /*#__PURE__*/_react.default.createElement(MemoCommunityLink, { community: activeCommunity, active: true })), /*#__PURE__*/_react.default.createElement(_styled.View, { sx: { my: 2 } }, /*#__PURE__*/_react.default.createElement(OtherCommunities, null))), /*#__PURE__*/_react.default.createElement(_styled.BodyText, { sx: { m: [2, _layout.SIDE_NAV_PADDING] } }, "We'll be adding more communities soon!", '\n\n')); } var OtherCommunities = /*#__PURE__*/(0, _react.memo)(function () { var _useSelector = (0, _reactRedux.useSelector)(function (state) { return state.community; }), communities = _useSelector.communities, list = _useSelector.list, active = _useSelector.active; if (!list) return null; return list.map(function (id) { return communities[id]; }).filter(function (community) { return community && active !== community.slug; }).map(function (community) { return /*#__PURE__*/_react.default.createElement(MemoCommunityLink, { key: community._id, community: community }); }); }); CommunityLink.propTypes = { community: _propTypes.default.object, active: _propTypes.default.bool }; var MemoCommunityLink = /*#__PURE__*/(0, _react.memo)(CommunityLink); function CommunityLink(_ref2) { var _loc$pathname; var community = _ref2.community, active = _ref2.active; var dispatch = (0, _reactRedux.useDispatch)(); var unread = (0, _hooks.useUnread)(community, active); var loc = (0, _reactRouterDom.useLocation)(); var currentCommunity = (0, _reactRedux.useSelector)(function (state) { return state.auth.community; }); return /*#__PURE__*/_react.default.createElement(_styled.Box, { sx: { flex: 1 } }, /*#__PURE__*/_react.default.createElement(_styled.Pressable, { bgHover: 'white', hu: true, key: community._id, to: currentCommunity === community.slug ? '/' + community.slug + '/top' : loc !== null && loc !== void 0 && (_loc$pathname = loc.pathname) !== null && _loc$pathname !== void 0 && _loc$pathname.match('user/profile') ? loc === null || loc === void 0 ? void 0 : loc.pathname : '/' + community.slug + '/top', webAction: function webAction() { var _loc$pathname2; if (loc !== null && loc !== void 0 && (_loc$pathname2 = loc.pathname) !== null && _loc$pathname2 !== void 0 && _loc$pathname2.match('user/profile')) dispatch((0, _auth.setCommunity)(community.slug)); }, nativeAction: function nativeAction() { dispatch((0, _navigation.setDiscoverLoading)(true)); // dispatch(resetTabs()); dispatch((0, _navigation.closeDrawer)()); requestAnimationFrame(function () { dispatch((0, _auth.setCommunity)(community.slug)); dispatch((0, _navigation.setDiscoverLoading)(false)); }); } }, /*#__PURE__*/_react.default.createElement(_styled.Row, { sx: { alignItems: 'center', justifyContent: 'space-between', py: 1, px: [2, _layout.SIDE_NAV_PADDING] } }, /*#__PURE__*/_react.default.createElement(_communityListItem.default, { community: community }))), /*#__PURE__*/_react.default.createElement(_styled.Badge, { sx: { position: 'absolute', top: 2, right: 0, mr: [_layout.SIDE_NAV_PADDING, 2] }, number: unread })); } var _default = /*#__PURE__*/(0, _react.memo)(Community); exports.default = _default; //# sourceMappingURL=communityNav.component.js.map