@randy.tarampi/jsx
Version:
Some common JSX components for www.randytarampi.ca
93 lines (70 loc) • 4.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.ConnectedPosts = exports.connectPosts = void 0;
var _js = require("@randy.tarampi/js");
var _luxon = require("luxon");
var _propTypes = _interopRequireDefault(require("prop-types"));
var _reactRedux = require("react-redux");
var _fetchPosts = require("../actions/posts/fetchPosts");
var _fetchPostsForBlog = require("../actions/posts/fetchPostsForBlog");
var _posts = require("../components/posts");
var _api = require("../data/api");
var _selectors = require("../data/selectors");
var _util = require("../util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
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) { _defineProperty(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 _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var connectPosts = (0, _reactRedux.connect)(function (state, ownProps) {
var searchType = "blog";
var isLoadingUrlSelector = (0, _api.createIsLoadingUrlSelector)();
var errorForUrlSelector = (0, _api.createGetErrorForUrlSelector)();
var _ownProps$type = ownProps.type,
type = _ownProps$type === void 0 ? "global" : _ownProps$type,
fetchUrl = ownProps.fetchUrl;
var _ref = ownProps.match && ownProps.match.params || ownProps,
filter = _ref.filter,
filterValue = _ref.filterValue;
var oldestLoadedPostDateString = _selectors.selectors.getOldestFetchedPostDateForSearchTypeAndPostType(state, searchType, type);
var oldestLoadedPostDate = oldestLoadedPostDateString && _luxon.DateTime.fromISO(oldestLoadedPostDateString);
var props = {
isLoading: isLoadingUrlSelector(state, fetchUrl),
error: errorForUrlSelector(state, fetchUrl)
};
var postsFilters = [];
if (filter) {
postsFilters.push(_util.generateFilterFunctionForFilterName[filter](filterValue));
} else if (oldestLoadedPostDate) {
postsFilters.push(_util.generateFilterFunctionForFilterName.earlierThan(oldestLoadedPostDate));
}
var postsSelector = (0, _selectors.createComplexPostsSelector)(postsFilters, [(0, _selectors.getBasePostsSelectorForType)(type)]);
props.posts = postsSelector(state);
return props;
}, function (dispatch, _ref2) {
var fetchUrl = _ref2.fetchUrl,
type = _ref2.type,
match = _ref2.match,
fetchPostsParams = _ref2.fetchPostsParams;
return {
fetchPosts: function fetchPosts(passedParams) {
var searchParams = _objectSpread(_objectSpread(_objectSpread({}, match && match.params), fetchPostsParams), {}, {
perPage: _fetchPosts.FETCHING_POSTS_PER_PAGE
}, passedParams);
return dispatch((0, _fetchPostsForBlog.fetchPostsForBlogCreator)(fetchUrl, type, searchParams));
}
};
});
exports.connectPosts = connectPosts;
var ConnectedPosts = connectPosts(_posts.DimensionsContainerWrappedPosts);
exports.ConnectedPosts = ConnectedPosts;
ConnectedPosts.propTypes = {
fetchUrl: _propTypes["default"].string.isRequired,
type: _propTypes["default"].oneOf([_js.Post.type, _js.Photo.type, _js.Gallery.type])
};
ConnectedPosts.defaultProps = {
fetchUrl: "/posts"
};
var _default = ConnectedPosts;
exports["default"] = _default;