Moving selector outside of mapStateToProps (d'oh)
This commit is contained in:
@ -133803,6 +133803,26 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var onProfileRender = function onProfileRender(id, // the "id" prop of the Profiler tree that has just committed
|
||||
phase, // either "mount" (if the tree just mounted) or "update" (if it re-rendered)
|
||||
actualDuration, // time spent rendering the committed update
|
||||
baseDuration, // estimated time to render the entire subtree without memoization
|
||||
startTime, // when React began rendering this update
|
||||
commitTime, // when React committed this update
|
||||
interactions) // the Set of interactions belonging to this update
|
||||
{
|
||||
console.debug({
|
||||
id: id,
|
||||
phase: phase,
|
||||
actualDuration: actualDuration,
|
||||
baseDuration: baseDuration,
|
||||
startTime: startTime,
|
||||
commitTime: commitTime,
|
||||
interactions: interactions
|
||||
});
|
||||
};
|
||||
|
||||
var App = /*#__PURE__*/function (_React$Component) {
|
||||
_inherits(App, _React$Component);
|
||||
@ -140802,6 +140822,7 @@ var Grid = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(funct
|
||||
itemHeight = _useState2[0],
|
||||
setItemHeight = _useState2[1];
|
||||
|
||||
console.debug('Render Grid');
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "grid grid--".concat(items[0].type, "s ").concat(className, " ").concat(mini ? 'grid--mini' : ''),
|
||||
"data-qa-node": "div",
|
||||
@ -163905,7 +163926,7 @@ var ensureLoaded = function ensureLoaded(_ref3) {
|
||||
/*!**********************************!*\
|
||||
!*** ./src/js/util/selectors.js ***!
|
||||
\**********************************/
|
||||
/*! exports provided: getItem, getLibrary, getGridGlowEnabled, makeItemSelector, makeLibrarySelector, makeLoadingSelector, makeSearchResultsSelector, makeProcessProgressSelector, queueHistorySelector */
|
||||
/*! exports provided: getItem, getLibrary, getGridGlowEnabled, getLibrarySource, makeItemSelector, makeLibrarySelector, makeLoadingSelector, makeSearchResultsSelector, makeProcessProgressSelector, queueHistorySelector */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
@ -163913,6 +163934,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getItem", function() { return getItem; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLibrary", function() { return getLibrary; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getGridGlowEnabled", function() { return getGridGlowEnabled; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLibrarySource", function() { return getLibrarySource; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeItemSelector", function() { return makeItemSelector; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeLibrarySelector", function() { return makeLibrarySelector; });
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeLoadingSelector", function() { return makeLoadingSelector; });
|
||||
@ -164003,8 +164025,21 @@ var queueHistorySelector = Object(reselect__WEBPACK_IMPORTED_MODULE_0__["createS
|
||||
});
|
||||
});
|
||||
|
||||
var makeLibrarySelector = function makeLibrarySelector(uris) {
|
||||
return Object(reselect__WEBPACK_IMPORTED_MODULE_0__["createSelector"])([getLibraries, getItems], function (libraries, items) {
|
||||
var getLibrarySource = function getLibrarySource(state, name) {
|
||||
return state.ui["library_".concat(name, "_source")] || 'all';
|
||||
};
|
||||
|
||||
var makeLibrarySelector = function makeLibrarySelector(name) {
|
||||
return Object(reselect__WEBPACK_IMPORTED_MODULE_0__["createSelector"])([getLibraries, getItems, getLibrarySource], function (libraries, items, source) {
|
||||
console.debug('Running library selector', {
|
||||
libraries: libraries,
|
||||
items: items,
|
||||
source: source
|
||||
});
|
||||
var uris = [];
|
||||
if (source === 'all' || source === 'local') uris.push("mopidy:library:".concat(name));
|
||||
if (source === 'all' || source === 'spotify') uris.push("spotify:library:".concat(name));
|
||||
if (source === 'all' || source === 'google') uris.push("google:library:".concat(name));
|
||||
var itemUris = Object(_arrays__WEBPACK_IMPORTED_MODULE_1__["indexToArray"])(libraries, uris).reduce(function (acc, library) {
|
||||
return [].concat(_toConsumableArray(acc), _toConsumableArray(library.items_uris));
|
||||
}, []);
|
||||
@ -172568,22 +172603,18 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryAlbums;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeLibrarySelector"])('albums');
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeProcessProgressSelector"])(processKeys);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_albums_source ? state.ui.library_albums_source : 'all';
|
||||
var libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:albums');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:albums');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:albums');
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeLibrarySelector"])(libraryUris);
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeProcessProgressSelector"])(processKeys);
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
albums: librarySelector(state),
|
||||
albums: librarySelector(state, 'albums'),
|
||||
google_available: state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:'),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_albums_view,
|
||||
source: source,
|
||||
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["getLibrarySource"])(state, 'albums'),
|
||||
sort: state.ui.library_albums_sort,
|
||||
sort_reverse: state.ui.library_albums_sort_reverse
|
||||
};
|
||||
@ -172999,21 +173030,17 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryArtists;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeLibrarySelector"])('artists');
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeProcessProgressSelector"])(processKeys);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_artists_source || 'all';
|
||||
var libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:artists');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:artists');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:artists');
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeLibrarySelector"])(libraryUris);
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeProcessProgressSelector"])(processKeys);
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
google_available: state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:'),
|
||||
spotify_available: state.spotify.access_token,
|
||||
artists: librarySelector(state),
|
||||
source: source,
|
||||
artists: librarySelector(state, 'artists'),
|
||||
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["getLibrarySource"])(state, 'artists'),
|
||||
sort: state.ui.library_artists_sort ? state.ui.library_artists_sort : null,
|
||||
sort_reverse: state.ui.library_artists_sort_reverse ? state.ui.library_artists_sort_reverse : false,
|
||||
view: state.ui.library_artists_view
|
||||
@ -173262,13 +173289,14 @@ var LibraryBrowse = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryBrowse;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_11__["makeLoadingSelector"])(['(.*)mopidy_library.browse(.*)']);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var _state$mopidy$directo = state.mopidy.directory,
|
||||
_directory = _state$mopidy$directo === void 0 ? {} : _state$mopidy$directo,
|
||||
view = state.ui.library_directory_view;
|
||||
|
||||
var directory = _directory && _directory.uri === null ? _directory : null;
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_11__["makeLoadingSelector"])(['(.*)mopidy_library.browse(.*)']);
|
||||
return {
|
||||
loading: loadingSelector(state),
|
||||
directory: directory,
|
||||
@ -173691,6 +173719,8 @@ var LibraryBrowseDirectory = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryBrowseDirectory;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLoadingSelector"])(['mopidy_library.(browse|lookup)']);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state, ownProps) {
|
||||
var _state$mopidy$directo = state.mopidy.directory,
|
||||
_directory = _state$mopidy$directo === void 0 ? {} : _state$mopidy$directo,
|
||||
@ -173700,7 +173730,6 @@ var mapStateToProps = function mapStateToProps(state, ownProps) {
|
||||
var uriMatcher = [uri, decodeURIComponent(uri)]; // Lenient matching due to encoding diffs
|
||||
|
||||
var directory = _directory && uriMatcher.includes(_directory.uri) ? _directory : undefined;
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLoadingSelector"])(['mopidy_library.(browse|lookup)']);
|
||||
return {
|
||||
uri: uri,
|
||||
name: decodeURIComponent(ownProps.match.params.name),
|
||||
@ -174142,24 +174171,20 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryPlaylists;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])('playlists');
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_playlists_source || 'all';
|
||||
var _state$spotify$me = state.spotify.me;
|
||||
_state$spotify$me = _state$spotify$me === void 0 ? {} : _state$spotify$me;
|
||||
var me_id = _state$spotify$me.id;
|
||||
var libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:playlists');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:playlists');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:playlists');
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])(libraryUris);
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
|
||||
return {
|
||||
slim_mode: state.ui.slim_mode,
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
spotify_available: state.spotify.access_token,
|
||||
playlists: librarySelector(state),
|
||||
playlists: librarySelector(state, 'playlists'),
|
||||
loading_progress: processProgressSelector(state),
|
||||
source: source,
|
||||
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["getLibrarySource"])(state, 'playlists'),
|
||||
me_id: me_id,
|
||||
view: state.ui.library_playlists_view,
|
||||
sort: state.ui.library_playlists_sort ? state.ui.library_playlists_sort : null,
|
||||
@ -174577,20 +174602,17 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
|
||||
return LibraryTracks;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])('tracks');
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_tracks_source ? state.ui.library_tracks_source : 'all';
|
||||
var libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:tracks');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:tracks');
|
||||
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])(libraryUris);
|
||||
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
tracks: librarySelector(state),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_tracks_view,
|
||||
source: source,
|
||||
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["getLibrarySource"])(state, 'tracks'),
|
||||
sort: state.ui.library_tracks_sort,
|
||||
sort_reverse: state.ui.library_tracks_sort_reverse
|
||||
};
|
||||
|
||||
File diff suppressed because one or more lines are too long
10
mopidy_iris/static/app.min.js
vendored
10
mopidy_iris/static/app.min.js
vendored
File diff suppressed because one or more lines are too long
@ -106,7 +106,7 @@
|
||||
|
||||
// Release details
|
||||
// These are automatically injected to built HTML
|
||||
var build = "1614758372";
|
||||
var build = "1614938361";
|
||||
var version = "3.56.1";
|
||||
|
||||
// Construct the script tag
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import React from 'react';
|
||||
import React, { Profiler } from 'react';
|
||||
import { bindActionCreators } from 'redux';
|
||||
import { Route, Switch } from 'react-router-dom';
|
||||
import { connect } from 'react-redux';
|
||||
@ -66,6 +66,26 @@ import * as geniusActions from './services/genius/actions';
|
||||
import * as snapcastActions from './services/snapcast/actions';
|
||||
import MediaSession from './components/MediaSession';
|
||||
|
||||
const onProfileRender = (
|
||||
id, // the "id" prop of the Profiler tree that has just committed
|
||||
phase, // either "mount" (if the tree just mounted) or "update" (if it re-rendered)
|
||||
actualDuration, // time spent rendering the committed update
|
||||
baseDuration, // estimated time to render the entire subtree without memoization
|
||||
startTime, // when React began rendering this update
|
||||
commitTime, // when React committed this update
|
||||
interactions, // the Set of interactions belonging to this update
|
||||
) => {
|
||||
console.debug({
|
||||
id,
|
||||
phase,
|
||||
actualDuration,
|
||||
baseDuration,
|
||||
startTime,
|
||||
commitTime,
|
||||
interactions,
|
||||
});
|
||||
};
|
||||
|
||||
export class App extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
@ -11,6 +11,8 @@ const Grid = memo(({
|
||||
if (!items || !items.length) return null;
|
||||
const [itemHeight, setItemHeight] = useState(0);
|
||||
|
||||
console.debug('Render Grid')
|
||||
|
||||
return (
|
||||
<div className={`grid grid--${items[0].type}s ${className} ${mini ? 'grid--mini' : ''}`}>
|
||||
<ErrorBoundary>
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import React, { useEffect, memo } from 'react';
|
||||
import { useDispatch, useSelector } from 'react-redux';
|
||||
import handleViewport from 'react-in-viewport';
|
||||
import { scrollTo, sourceIcon } from '../util/helpers';
|
||||
|
||||
@ -38,9 +38,16 @@ const queueHistorySelector = createSelector(
|
||||
},
|
||||
);
|
||||
|
||||
const makeLibrarySelector = (uris) => createSelector(
|
||||
[getLibraries, getItems],
|
||||
(libraries, items) => {
|
||||
const getLibrarySource = (state, name) => state.ui[`library_${name}_source`] || 'all';
|
||||
const makeLibrarySelector = (name) => createSelector(
|
||||
[getLibraries, getItems, getLibrarySource],
|
||||
(libraries, items, source) => {
|
||||
console.debug('Running library selector', { libraries, items, source})
|
||||
const uris = [];
|
||||
if (source === 'all' || source === 'local') uris.push(`mopidy:library:${name}`);
|
||||
if (source === 'all' || source === 'spotify') uris.push(`spotify:library:${name}`);
|
||||
if (source === 'all' || source === 'google') uris.push(`google:library:${name}`);
|
||||
|
||||
const itemUris = indexToArray(libraries, uris).reduce(
|
||||
(acc, library) => [...acc, ...library.items_uris],
|
||||
[],
|
||||
@ -84,6 +91,7 @@ export {
|
||||
getItem,
|
||||
getLibrary,
|
||||
getGridGlowEnabled,
|
||||
getLibrarySource,
|
||||
makeItemSelector,
|
||||
makeLibrarySelector,
|
||||
makeLoadingSelector,
|
||||
|
||||
@ -19,6 +19,7 @@ import Loader from '../../components/Loader';
|
||||
import {
|
||||
makeLibrarySelector,
|
||||
makeProcessProgressSelector,
|
||||
getLibrarySource,
|
||||
} from '../../util/selectors';
|
||||
|
||||
const processKeys = [
|
||||
@ -329,29 +330,19 @@ class LibraryAlbums extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const source = state.ui.library_albums_source ? state.ui.library_albums_source : 'all';
|
||||
|
||||
const libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:albums');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:albums');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:albums');
|
||||
const librarySelector = makeLibrarySelector(libraryUris);
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
albums: librarySelector(state),
|
||||
google_available: (state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:')),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_albums_view,
|
||||
source,
|
||||
sort: state.ui.library_albums_sort,
|
||||
sort_reverse: state.ui.library_albums_sort_reverse,
|
||||
};
|
||||
};
|
||||
|
||||
const librarySelector = makeLibrarySelector('albums');
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
const mapStateToProps = (state) => ({
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
albums: librarySelector(state, 'albums'),
|
||||
google_available: (state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:')),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_albums_view,
|
||||
source: getLibrarySource(state, 'albums'),
|
||||
sort: state.ui.library_albums_sort,
|
||||
sort_reverse: state.ui.library_albums_sort_reverse,
|
||||
});
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
coreActions: bindActionCreators(coreActions, dispatch),
|
||||
uiActions: bindActionCreators(uiActions, dispatch),
|
||||
|
||||
@ -16,6 +16,7 @@ import Loader from '../../components/Loader';
|
||||
import {
|
||||
makeLibrarySelector,
|
||||
makeProcessProgressSelector,
|
||||
getLibrarySource,
|
||||
} from '../../util/selectors';
|
||||
|
||||
const processKeys = [
|
||||
@ -298,28 +299,19 @@ class LibraryArtists extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const source = state.ui.library_artists_source || 'all';
|
||||
|
||||
const libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:artists');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:artists');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:artists');
|
||||
const librarySelector = makeLibrarySelector(libraryUris);
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
google_available: (state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:')),
|
||||
spotify_available: (state.spotify.access_token),
|
||||
artists: librarySelector(state),
|
||||
source,
|
||||
sort: (state.ui.library_artists_sort ? state.ui.library_artists_sort : null),
|
||||
sort_reverse: (state.ui.library_artists_sort_reverse ? state.ui.library_artists_sort_reverse : false),
|
||||
view: state.ui.library_artists_view,
|
||||
};
|
||||
};
|
||||
const librarySelector = makeLibrarySelector('artists');
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
const mapStateToProps = (state) => ({
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
google_available: (state.mopidy.uri_schemes && state.mopidy.uri_schemes.includes('gmusic:')),
|
||||
spotify_available: (state.spotify.access_token),
|
||||
artists: librarySelector(state, 'artists'),
|
||||
source: getLibrarySource(state, 'artists'),
|
||||
sort: (state.ui.library_artists_sort ? state.ui.library_artists_sort : null),
|
||||
sort_reverse: (state.ui.library_artists_sort_reverse ? state.ui.library_artists_sort_reverse : false),
|
||||
view: state.ui.library_artists_view,
|
||||
});
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
uiActions: bindActionCreators(uiActions, dispatch),
|
||||
|
||||
@ -126,6 +126,7 @@ class LibraryBrowse extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const loadingSelector = makeLoadingSelector(['(.*)mopidy_library.browse(.*)']);
|
||||
const mapStateToProps = (state) => {
|
||||
const {
|
||||
mopidy: {
|
||||
@ -136,7 +137,6 @@ const mapStateToProps = (state) => {
|
||||
},
|
||||
} = state;
|
||||
const directory = _directory && _directory.uri === null ? _directory : null;
|
||||
const loadingSelector = makeLoadingSelector(['(.*)mopidy_library.browse(.*)']);
|
||||
|
||||
return {
|
||||
loading: loadingSelector(state),
|
||||
|
||||
@ -280,6 +280,7 @@ class LibraryBrowseDirectory extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const loadingSelector = makeLoadingSelector(['mopidy_library.(browse|lookup)']);
|
||||
const mapStateToProps = (state, ownProps) => {
|
||||
const {
|
||||
mopidy: {
|
||||
@ -294,7 +295,6 @@ const mapStateToProps = (state, ownProps) => {
|
||||
const directory = _directory && uriMatcher.includes(_directory.uri)
|
||||
? _directory
|
||||
: undefined;
|
||||
const loadingSelector = makeLoadingSelector(['mopidy_library.(browse|lookup)']);
|
||||
|
||||
return {
|
||||
uri,
|
||||
|
||||
@ -18,6 +18,7 @@ import Loader from '../../components/Loader';
|
||||
import {
|
||||
makeLibrarySelector,
|
||||
makeProcessProgressSelector,
|
||||
getLibrarySource,
|
||||
} from '../../util/selectors';
|
||||
|
||||
const processKeys = [
|
||||
@ -304,8 +305,9 @@ class LibraryPlaylists extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const librarySelector = makeLibrarySelector('playlists');
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
const mapStateToProps = (state) => {
|
||||
const source = state.ui.library_playlists_source || 'all';
|
||||
const {
|
||||
spotify: {
|
||||
me: {
|
||||
@ -314,20 +316,13 @@ const mapStateToProps = (state) => {
|
||||
},
|
||||
} = state;
|
||||
|
||||
const libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:playlists');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:playlists');
|
||||
if (source === 'all' || source === 'google') libraryUris.push('google:library:playlists');
|
||||
const librarySelector = makeLibrarySelector(libraryUris);
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
|
||||
return {
|
||||
slim_mode: state.ui.slim_mode,
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
spotify_available: state.spotify.access_token,
|
||||
playlists: librarySelector(state),
|
||||
playlists: librarySelector(state, 'playlists'),
|
||||
loading_progress: processProgressSelector(state),
|
||||
source,
|
||||
source: getLibrarySource(state, 'playlists'),
|
||||
me_id,
|
||||
view: state.ui.library_playlists_view,
|
||||
sort: (state.ui.library_playlists_sort ? state.ui.library_playlists_sort : null),
|
||||
|
||||
@ -18,6 +18,7 @@ import Loader from '../../components/Loader';
|
||||
import {
|
||||
makeLibrarySelector,
|
||||
makeProcessProgressSelector,
|
||||
getLibrarySource,
|
||||
} from '../../util/selectors';
|
||||
|
||||
const processKeys = [
|
||||
@ -312,26 +313,18 @@ class LibraryTracks extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const source = state.ui.library_tracks_source ? state.ui.library_tracks_source : 'all';
|
||||
|
||||
const libraryUris = [];
|
||||
if (source === 'all' || source === 'local') libraryUris.push('mopidy:library:tracks');
|
||||
if (source === 'all' || source === 'spotify') libraryUris.push('spotify:library:tracks');
|
||||
const librarySelector = makeLibrarySelector(libraryUris);
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
|
||||
return {
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
tracks: librarySelector(state),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_tracks_view,
|
||||
source,
|
||||
sort: state.ui.library_tracks_sort,
|
||||
sort_reverse: state.ui.library_tracks_sort_reverse,
|
||||
};
|
||||
};
|
||||
const librarySelector = makeLibrarySelector('tracks');
|
||||
const processProgressSelector = makeProcessProgressSelector(processKeys);
|
||||
const mapStateToProps = (state) => ({
|
||||
loading_progress: processProgressSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
tracks: librarySelector(state),
|
||||
spotify_available: state.spotify.access_token,
|
||||
view: state.ui.library_tracks_view,
|
||||
source: getLibrarySource(state, 'tracks'),
|
||||
sort: state.ui.library_tracks_sort,
|
||||
sort_reverse: state.ui.library_tracks_sort_reverse,
|
||||
});
|
||||
|
||||
const mapDispatchToProps = (dispatch) => ({
|
||||
coreActions: bindActionCreators(coreActions, dispatch),
|
||||
|
||||
Reference in New Issue
Block a user