@r3l/app
Version:
187 lines (160 loc) • 7.53 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.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