Selectors not properly memoized for Library views, renders every second (track position changing)
This commit is contained in:
@ -100281,13 +100281,13 @@ var ContextMenu = /*#__PURE__*/function (_React$Component) {
|
||||
var items = _this$props24$menu.items,
|
||||
push = _this$props24.history.push;
|
||||
|
||||
if (!items || items.length <= 0 || !items[0].artists_uris || items[0].artists_uris.length <= 0) {
|
||||
if (!items || items.length <= 0 || !items[0].artists || items[0].artists.length <= 0) {
|
||||
return null;
|
||||
}
|
||||
|
||||
hideContextMenu(); // note: we can only go to one artist (even if this item has multiple artists, just go to the first one)
|
||||
|
||||
push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__["buildLink"])(items[0].artists_uris[0]));
|
||||
push(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_5__["buildLink"])(items[0].artists[0].uri));
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "goToUser", function () {
|
||||
@ -101655,6 +101655,36 @@ var DebugInfo = /*#__PURE__*/function (_React$Component) {
|
||||
|
||||
_this = _super.call(this, props);
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "renderLoadQueue", function () {
|
||||
var load_queue = _this.props.ui.load_queue;
|
||||
if (!load_queue) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item mid_grey-text",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, "Nothing loading");
|
||||
var queue = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_6__["indexToArray"])(load_queue);
|
||||
|
||||
if (queue.length > 0) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, queue.map(function (item, index) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
key: "".concat(item, "_").concat(index),
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, item);
|
||||
}));
|
||||
}
|
||||
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item mid_grey-text",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, "Nothing loading");
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "render", function () {
|
||||
var localStorageUsage = _this.localStorageSize();
|
||||
|
||||
@ -101768,7 +101798,7 @@ var DebugInfo = /*#__PURE__*/function (_React$Component) {
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h5", {
|
||||
"data-qa-node": "h5",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, "Load queue"), _this.renderload_queue()));
|
||||
}, "Load queue"), _this.renderLoadQueue()));
|
||||
});
|
||||
|
||||
_this.state = {
|
||||
@ -101811,37 +101841,6 @@ var DebugInfo = /*#__PURE__*/function (_React$Component) {
|
||||
percent: (used / total * 100).toFixed(2)
|
||||
};
|
||||
}
|
||||
}, {
|
||||
key: "renderload_queue",
|
||||
value: function renderload_queue() {
|
||||
var load_queue = this.props.ui.load_queue;
|
||||
if (!load_queue) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item mid_grey-text",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, "Nothing loading");
|
||||
var queue = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_6__["indexToArray"])(load_queue, null, true);
|
||||
|
||||
if (queue.length > 0) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, queue.map(function (item, index) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
key: "".concat(item, "_").concat(index),
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, item);
|
||||
}));
|
||||
}
|
||||
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "debug-info-item mid_grey-text",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "DebugInfo"
|
||||
}, "Nothing loading");
|
||||
}
|
||||
}]);
|
||||
|
||||
return DebugInfo;
|
||||
@ -114934,8 +114933,6 @@ var CoreMiddleware = function () {
|
||||
break;
|
||||
|
||||
case 'LOAD_ARTIST':
|
||||
console.log(action);
|
||||
|
||||
var fetchArtist = function fetchArtist() {
|
||||
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__["uriSource"])(action.uri)) {
|
||||
case 'spotify':
|
||||
@ -115081,7 +115078,7 @@ var CoreMiddleware = function () {
|
||||
break;
|
||||
|
||||
case 'LOAD_LIBRARY':
|
||||
store.dispatch(uiActions.startLoading(action.uri));
|
||||
store.dispatch(uiActions.startLoading(action.uri, action.uri));
|
||||
|
||||
var fetchLibrary = function fetchLibrary() {
|
||||
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_6__["uriSource"])(action.uri)) {
|
||||
@ -115526,7 +115523,7 @@ var CoreMiddleware = function () {
|
||||
break;
|
||||
|
||||
case 'RESTORE_ITEMS_FROM_COLD_STORE':
|
||||
store.dispatch(uiActions.stopLoading(action.items));
|
||||
store.dispatch(uiActions.stopLoading(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_4__["arrayOf"])('uri', action.items)));
|
||||
next(action);
|
||||
break;
|
||||
|
||||
@ -118526,18 +118523,25 @@ var MopidyMiddleware = function () {
|
||||
break;
|
||||
|
||||
case 'SET_WINDOW_FOCUS':
|
||||
// Focus has just been regained
|
||||
if (action.window_focus === true) {
|
||||
store.dispatch(mopidyActions.getCurrentTrack());
|
||||
store.dispatch(mopidyActions.getPlayState());
|
||||
store.dispatch(mopidyActions.getVolume());
|
||||
store.dispatch(mopidyActions.getMute());
|
||||
store.dispatch(mopidyActions.getConsume());
|
||||
store.dispatch(mopidyActions.getRandom());
|
||||
store.dispatch(mopidyActions.getRepeat());
|
||||
store.dispatch(mopidyActions.getTimePosition());
|
||||
}
|
||||
/**
|
||||
* Disabled because it causes so many requests without any conscious user input.
|
||||
* Will monitor to see if it has any adverse impact.
|
||||
*/
|
||||
|
||||
/*
|
||||
// Focus has just been regained
|
||||
if (action.window_focus === true) {
|
||||
store.dispatch(mopidyActions.getCurrentTrack());
|
||||
store.dispatch(mopidyActions.getPlayState());
|
||||
store.dispatch(mopidyActions.getVolume());
|
||||
store.dispatch(mopidyActions.getMute());
|
||||
store.dispatch(mopidyActions.getConsume());
|
||||
store.dispatch(mopidyActions.getRandom());
|
||||
store.dispatch(mopidyActions.getRepeat());
|
||||
store.dispatch(mopidyActions.getTimePosition());
|
||||
}
|
||||
*/
|
||||
next(action);
|
||||
break;
|
||||
|
||||
case 'MOPIDY_REQUEST':
|
||||
@ -119825,61 +119829,74 @@ var MopidyMiddleware = function () {
|
||||
break;
|
||||
|
||||
case 'MOPIDY_GET_ARTIST':
|
||||
request(store, 'library.lookup', {
|
||||
uris: [action.uri]
|
||||
}).then(function (_response) {
|
||||
if (!_response) return;
|
||||
var response = _response[action.uri];
|
||||
if (!response || !response.length) return;
|
||||
var albums = [];
|
||||
{
|
||||
request(store, 'library.lookup', {
|
||||
uris: [action.uri]
|
||||
}).then(function (_response) {
|
||||
if (!_response) return;
|
||||
var response = _response[action.uri];
|
||||
if (!response || !response.length) return;
|
||||
var albums = [];
|
||||
|
||||
for (var _i8 = 0; _i8 < response.length; _i8++) {
|
||||
if (response[_i8].album) {
|
||||
var album = _objectSpread(_objectSpread({}, response[_i8].album), {}, {
|
||||
uri: response[_i8].album.uri
|
||||
});
|
||||
for (var _i8 = 0; _i8 < response.length; _i8++) {
|
||||
if (response[_i8].album) {
|
||||
(function () {
|
||||
var album = _objectSpread(_objectSpread({}, response[_i8].album), {}, {
|
||||
uri: response[_i8].album.uri
|
||||
});
|
||||
|
||||
if (album) {
|
||||
var getByURI = function getByURI(albumToCheck) {
|
||||
return album.uri == albumToCheck.uri;
|
||||
};
|
||||
if (album) {
|
||||
var existingAlbum = albums.find(function (albumToCheck) {
|
||||
return album.uri === albumToCheck.uri;
|
||||
});
|
||||
|
||||
var existingAlbum = albums.find(getByURI);
|
||||
|
||||
if (!existingAlbum) {
|
||||
albums.push(album);
|
||||
}
|
||||
if (!existingAlbum) {
|
||||
albums.push(album);
|
||||
}
|
||||
}
|
||||
})();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (albums) {
|
||||
store.dispatch(coreActions.itemsLoaded(albums));
|
||||
} // Get the artist object from the track. This is a bit ugly because it's a simplified
|
||||
// (Mopidy) artist object but gives us enough to fetch their name and artwork.
|
||||
if (albums) {
|
||||
store.dispatch(coreActions.itemsLoaded(albums));
|
||||
} // Get the artist object from the track. This is a bit ugly because it's a simplified
|
||||
// (Mopidy) artist object but gives us enough to fetch their name and artwork.
|
||||
|
||||
|
||||
var raw_artist = response[0].artists.find(function (item) {
|
||||
return item.uri === action.uri;
|
||||
var raw_artist = null;
|
||||
response.forEach(function (track) {
|
||||
var matchingArtist = track.artists.find(function (artist) {
|
||||
return artist.uri === action.uri;
|
||||
});
|
||||
|
||||
if (matchingArtist) {
|
||||
raw_artist = matchingArtist;
|
||||
}
|
||||
});
|
||||
|
||||
var artist = _objectSpread({
|
||||
uri: action.uri,
|
||||
provider: 'mopidy',
|
||||
albums_uris: Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', albums),
|
||||
tracks: Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatTracks"])(response)
|
||||
}, raw_artist ? Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatArtist"])(raw_artist) : {});
|
||||
|
||||
store.dispatch(coreActions.itemLoaded(artist)); // We may not have a raw_artist if the tracks' artist is not found (ie the requested
|
||||
// artist may be the albumartist).
|
||||
|
||||
if (raw_artist) {
|
||||
store.dispatch(lastfmActions.getArtist(artist.uri, artist.name, artist.musicbrainz_id)); // Load supprting information from LastFM and Discogs
|
||||
|
||||
if (store.getState().spotify.enabled) {
|
||||
store.dispatch(spotifyActions.getArtistImages(artist));
|
||||
} else {
|
||||
store.dispatch(discogsActions.getArtistImages(artist.uri, artist));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var artist = _objectSpread({
|
||||
uri: action.uri,
|
||||
provider: 'mopidy',
|
||||
albums_uris: Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', albums),
|
||||
tracks: Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatTracks"])(response)
|
||||
}, raw_artist ? Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatArtist"])(raw_artist) : {});
|
||||
|
||||
store.dispatch(coreActions.itemLoaded(artist));
|
||||
store.dispatch(lastfmActions.getArtist(artist.uri, artist.name, artist.musicbrainz_id)); // Load supprting information from LastFM and Discogs
|
||||
|
||||
if (store.getState().spotify.enabled) {
|
||||
store.dispatch(spotifyActions.getArtistImages(artist));
|
||||
} else {
|
||||
store.dispatch(discogsActions.getArtistImages(artist.uri, artist));
|
||||
}
|
||||
});
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
case 'MOPIDY_GET_ARTISTS':
|
||||
request(store, 'library.lookup', {
|
||||
@ -126250,7 +126267,7 @@ function reducer() {
|
||||
|
||||
case 'STOP_LOADING':
|
||||
return _objectSpread(_objectSpread({}, ui), {}, {
|
||||
load_queue: Object(lodash__WEBPACK_IMPORTED_MODULE_0__["omit"])(load_queue, action.keys)
|
||||
load_queue: Object(lodash__WEBPACK_IMPORTED_MODULE_0__["omit"])(ui.load_queue, action.keys)
|
||||
});
|
||||
|
||||
case 'START_PROCESS':
|
||||
@ -134278,12 +134295,12 @@ var Track = /*#__PURE__*/function (_React$Component) {
|
||||
var _this$props6 = _this.props,
|
||||
uri = _this$props6.uri,
|
||||
track = _this$props6.track,
|
||||
load_queue = _this$props6.load_queue,
|
||||
loading = _this$props6.loading,
|
||||
slim_mode = _this$props6.slim_mode,
|
||||
uiActions = _this$props6.uiActions,
|
||||
genius_authorized = _this$props6.genius_authorized;
|
||||
|
||||
if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["isLoading"])(load_queue, ["(.*)".concat(uri, "(.*)")])) {
|
||||
if (loading) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_13__["default"], {
|
||||
body: true,
|
||||
loading: true,
|
||||
@ -134506,11 +134523,13 @@ var rebuildUri = function rebuildUri(uri) {
|
||||
var mapStateToProps = function mapStateToProps(state, ownProps) {
|
||||
var uri = decodeURIComponent(ownProps.match.params.uri);
|
||||
uri = rebuildUri(uri);
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_23__["makeLoadingSelector"])(["(.*)".concat(uri, "(.*)")]);
|
||||
var trackSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_23__["makeItemSelector"])(uri);
|
||||
return {
|
||||
uri: uri,
|
||||
slim_mode: state.ui.slim_mode,
|
||||
load_queue: state.ui.load_queue,
|
||||
track: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_23__["getItemFromIndex"])(state, uri),
|
||||
loading: loadingSelector(state),
|
||||
track: trackSelector(state),
|
||||
spotify_library_albums: state.spotify.library_albums,
|
||||
local_library_albums: state.mopidy.library_albums,
|
||||
lastfm_authorized: state.lastfm.authorization,
|
||||
@ -136670,33 +136689,6 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
}
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "shouldComponentUpdate", function (_ref2, _ref3) {
|
||||
var prevAlbums = _ref2.albums,
|
||||
prevSort = _ref2.sort,
|
||||
prevSortReverse = _ref2.sort_reverse,
|
||||
prevSource = _ref2.source,
|
||||
prevView = _ref2.view;
|
||||
var prevFilter = _ref3.filter,
|
||||
prevLimit = _ref3.limit;
|
||||
var _this$props = _this.props,
|
||||
albums = _this$props.albums,
|
||||
sort = _this$props.sort,
|
||||
sort_reverse = _this$props.sort_reverse,
|
||||
source = _this$props.source,
|
||||
view = _this$props.view;
|
||||
var _this$state = _this.state,
|
||||
filter = _this$state.filter,
|
||||
limit = _this$state.limit;
|
||||
if (prevAlbums.length !== albums.length) return true;
|
||||
if (prevSource !== source) return true;
|
||||
if (prevSort !== sort) return true;
|
||||
if (prevSortReverse !== sort_reverse) return true;
|
||||
if (prevView !== view) return true;
|
||||
if (prevFilter !== filter) return true;
|
||||
if (prevLimit !== limit) return true;
|
||||
return false;
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "onRefresh", function () {
|
||||
var hideContextMenu = _this.props.uiActions.hideContextMenu;
|
||||
hideContextMenu();
|
||||
@ -136710,9 +136702,9 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "getMopidyLibrary", function () {
|
||||
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
var _this$props2 = _this.props,
|
||||
source = _this$props2.source,
|
||||
loadLibrary = _this$props2.coreActions.loadLibrary;
|
||||
var _this$props = _this.props,
|
||||
source = _this$props.source,
|
||||
loadLibrary = _this$props.coreActions.loadLibrary;
|
||||
if (source !== 'local' && source !== 'all') return;
|
||||
loadLibrary('mopidy:library:albums', {
|
||||
forceRefetch: forceRefetch
|
||||
@ -136721,10 +136713,10 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "getGoogleLibrary", function () {
|
||||
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
var _this$props3 = _this.props,
|
||||
source = _this$props3.source,
|
||||
google_available = _this$props3.google_available,
|
||||
loadLibrary = _this$props3.coreActions.loadLibrary;
|
||||
var _this$props2 = _this.props,
|
||||
source = _this$props2.source,
|
||||
google_available = _this$props2.google_available,
|
||||
loadLibrary = _this$props2.coreActions.loadLibrary;
|
||||
if (!google_available) return;
|
||||
if (source !== 'google' && source !== 'all') return;
|
||||
loadLibrary('google:library:albums', {
|
||||
@ -136734,10 +136726,10 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "getSpotifyLibrary", function () {
|
||||
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
||||
var _this$props4 = _this.props,
|
||||
source = _this$props4.source,
|
||||
spotify_available = _this$props4.spotify_available,
|
||||
loadLibrary = _this$props4.coreActions.loadLibrary;
|
||||
var _this$props3 = _this.props,
|
||||
source = _this$props3.source,
|
||||
spotify_available = _this$props3.spotify_available,
|
||||
loadLibrary = _this$props3.coreActions.loadLibrary;
|
||||
if (!spotify_available) return;
|
||||
if (source !== 'spotify' && source !== 'all') return;
|
||||
loadLibrary('spotify:library:albums', {
|
||||
@ -136756,12 +136748,12 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "loadMore", function () {
|
||||
var _this$state2 = _this.state,
|
||||
limit = _this$state2.limit,
|
||||
per_page = _this$state2.per_page;
|
||||
var _this$props5 = _this.props,
|
||||
state = _this$props5.location.state,
|
||||
history = _this$props5.history;
|
||||
var _this$state = _this.state,
|
||||
limit = _this$state.limit,
|
||||
per_page = _this$state.per_page;
|
||||
var _this$props4 = _this.props,
|
||||
state = _this$props4.location.state,
|
||||
history = _this$props4.history;
|
||||
var new_limit = limit + per_page;
|
||||
|
||||
_this.setState({
|
||||
@ -136776,10 +136768,10 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "setSort", function (value) {
|
||||
var _this$props6 = _this.props,
|
||||
sort = _this$props6.sort,
|
||||
sort_reverse = _this$props6.sort_reverse,
|
||||
set = _this$props6.uiActions.set;
|
||||
var _this$props5 = _this.props,
|
||||
sort = _this$props5.sort,
|
||||
sort_reverse = _this$props5.sort_reverse,
|
||||
set = _this$props5.uiActions.set;
|
||||
var reverse = false;
|
||||
if (sort === value) reverse = !sort_reverse;
|
||||
set({
|
||||
@ -136789,15 +136781,16 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
|
||||
var _this$props7 = _this.props,
|
||||
sort = _this$props7.sort,
|
||||
sort_reverse = _this$props7.sort_reverse,
|
||||
view = _this$props7.view,
|
||||
loading = _this$props7.loading;
|
||||
var _this$state3 = _this.state,
|
||||
limit = _this$state3.limit,
|
||||
filter = _this$state3.filter;
|
||||
var _this$props6 = _this.props,
|
||||
sort = _this$props6.sort,
|
||||
sort_reverse = _this$props6.sort_reverse,
|
||||
view = _this$props6.view,
|
||||
loading = _this$props6.loading;
|
||||
var _this$state2 = _this.state,
|
||||
limit = _this$state2.limit,
|
||||
filter = _this$state2.filter;
|
||||
var albums = _this.props.albums;
|
||||
console.log('library albums render', loading, albums.length);
|
||||
|
||||
if (loading) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_18__["default"], {
|
||||
@ -136867,17 +136860,17 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "render", function () {
|
||||
var _this$props8 = _this.props,
|
||||
spotify_available = _this$props8.spotify_available,
|
||||
google_available = _this$props8.google_available,
|
||||
sort = _this$props8.sort,
|
||||
view = _this$props8.view,
|
||||
source = _this$props8.source,
|
||||
sort_reverse = _this$props8.sort_reverse,
|
||||
uiActions = _this$props8.uiActions;
|
||||
var _this$state4 = _this.state,
|
||||
filter = _this$state4.filter,
|
||||
per_page = _this$state4.per_page;
|
||||
var _this$props7 = _this.props,
|
||||
spotify_available = _this$props7.spotify_available,
|
||||
google_available = _this$props7.google_available,
|
||||
sort = _this$props7.sort,
|
||||
view = _this$props7.view,
|
||||
source = _this$props7.source,
|
||||
sort_reverse = _this$props7.sort_reverse,
|
||||
uiActions = _this$props7.uiActions;
|
||||
var _this$state3 = _this.state,
|
||||
filter = _this$state3.filter,
|
||||
per_page = _this$state3.per_page;
|
||||
var source_options = [{
|
||||
value: 'all',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_17__["i18n"])('fields.filters.all')
|
||||
@ -137035,10 +137028,10 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
_createClass(LibraryAlbums, [{
|
||||
key: "componentDidMount",
|
||||
value: function componentDidMount() {
|
||||
var _this$props9 = this.props,
|
||||
_this$props9$location = _this$props9.location.state,
|
||||
state = _this$props9$location === void 0 ? {} : _this$props9$location,
|
||||
setWindowTitle = _this$props9.uiActions.setWindowTitle; // Restore any limit defined in our location state
|
||||
var _this$props8 = this.props,
|
||||
_this$props8$location = _this$props8.location.state,
|
||||
state = _this$props8$location === void 0 ? {} : _this$props8$location,
|
||||
setWindowTitle = _this$props8.uiActions.setWindowTitle; // Restore any limit defined in our location state
|
||||
|
||||
if (state.limit) {
|
||||
this.setState({
|
||||
@ -137051,6 +137044,19 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
|
||||
this.getGoogleLibrary();
|
||||
this.getSpotifyLibrary();
|
||||
}
|
||||
/*
|
||||
componentDidUpdate(prevProps, prevState) {
|
||||
Object.entries(this.props).forEach(([key, val]) =>
|
||||
prevProps[key] !== val && console.log(`Prop '${key}' changed`)
|
||||
);
|
||||
if (this.state) {
|
||||
Object.entries(this.state).forEach(([key, val]) =>
|
||||
prevState[key] !== val && console.log(`State '${key}' changed`)
|
||||
);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}]);
|
||||
|
||||
return LibraryAlbums;
|
||||
@ -137064,15 +137070,15 @@ var mapStateToProps = function mapStateToProps(state) {
|
||||
var mopidyLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_19__["makeLibrarySelector"])('mopidy:library:albums');
|
||||
var albums = [].concat(_toConsumableArray(source === 'all' || source === 'spotify' ? spotifyLibrarySelector(state) : []), _toConsumableArray(source === 'all' || source === 'google' ? googleLibrarySelector(state) : []), _toConsumableArray(source === 'all' || source === 'local' ? mopidyLibrarySelector(state) : []));
|
||||
return {
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
loading: loadingSelector(state),
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
albums: 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,
|
||||
sort: state.ui.library_albums_sort ? state.ui.library_albums_sort : null,
|
||||
sort_reverse: state.ui.library_albums_sort_reverse ? state.ui.library_albums_sort_reverse : false
|
||||
sort: state.ui.library_albums_sort,
|
||||
sort_reverse: state.ui.library_albums_sort_reverse
|
||||
};
|
||||
};
|
||||
|
||||
@ -137546,7 +137552,7 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_albums_source ? state.ui.library_albums_source : 'all';
|
||||
var source = state.ui.library_artists_source || 'all';
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeLoadingSelector"])(['(.*):library:artists']);
|
||||
var spotifyLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeLibrarySelector"])('spotify:library:artists');
|
||||
var googleLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_18__["makeLibrarySelector"])('google:library:artists');
|
||||
@ -138278,8 +138284,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var _util_format__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/format */ "./src/js/util/format.js");
|
||||
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../util/helpers */ "./src/js/util/helpers.js");
|
||||
/* harmony import */ var _components_Loader__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../components/Loader */ "./src/js/components/Loader.js");
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../../util/selectors */ "./src/js/util/selectors.js");
|
||||
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
||||
|
||||
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||||
@ -138292,6 +138297,8 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
||||
|
||||
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
||||
|
||||
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
||||
|
||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
||||
|
||||
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||
@ -138333,6 +138340,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
@ -138393,19 +138401,17 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
|
||||
var _this$props3 = _this.props,
|
||||
spotify_library = _this$props3.spotify_library,
|
||||
mopidy_library = _this$props3.mopidy_library,
|
||||
items = _this$props3.items,
|
||||
sort = _this$props3.sort,
|
||||
sort_reverse = _this$props3.sort_reverse,
|
||||
view = _this$props3.view,
|
||||
source = _this$props3.source,
|
||||
load_queue = _this$props3.load_queue;
|
||||
loading = _this$props3.loading;
|
||||
var _this$state = _this.state,
|
||||
filter = _this$state.filter,
|
||||
limit = _this$state.limit;
|
||||
var playlists = _this.props.playlists;
|
||||
|
||||
if (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_18__["isLoading"])(load_queue, ['(.*):library:playlists'])) {
|
||||
if (loading) {
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_19__["default"], {
|
||||
body: true,
|
||||
loading: true,
|
||||
@ -138414,12 +138420,6 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
});
|
||||
}
|
||||
|
||||
var playlists = [].concat(_toConsumableArray(source === 'all' || source === 'spotify' ? Object(_util_format__WEBPACK_IMPORTED_MODULE_17__["collate"])(spotify_library, {
|
||||
items: items
|
||||
}).items : []), _toConsumableArray(source === 'all' || source === 'local' ? Object(_util_format__WEBPACK_IMPORTED_MODULE_17__["collate"])(mopidy_library, {
|
||||
items: items
|
||||
}).items : []));
|
||||
|
||||
if (sort) {
|
||||
playlists = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_15__["sortItems"])(playlists, sort, sort_reverse);
|
||||
}
|
||||
@ -138484,6 +138484,173 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
}));
|
||||
});
|
||||
|
||||
_defineProperty(_assertThisInitialized(_this), "render", function () {
|
||||
var _this$props4 = _this.props,
|
||||
uiActions = _this$props4.uiActions,
|
||||
spotify_available = _this$props4.spotify_available,
|
||||
source = _this$props4.source,
|
||||
sort = _this$props4.sort,
|
||||
sort_reverse = _this$props4.sort_reverse,
|
||||
view = _this$props4.view;
|
||||
var filter = _this.state.filter;
|
||||
var source_options = [{
|
||||
value: 'all',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.all')
|
||||
}, {
|
||||
value: 'local',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('services.mopidy.local')
|
||||
}];
|
||||
|
||||
if (spotify_available) {
|
||||
source_options.push({
|
||||
value: 'spotify',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('services.spotify.title')
|
||||
});
|
||||
}
|
||||
|
||||
var view_options = [{
|
||||
value: 'thumbnails',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.thumbnails')
|
||||
}, {
|
||||
value: 'list',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.list')
|
||||
}];
|
||||
var sort_options = [{
|
||||
value: null,
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.as_loaded')
|
||||
}, {
|
||||
value: 'name',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.name')
|
||||
}, {
|
||||
value: 'last_modified',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.updated')
|
||||
}, {
|
||||
value: 'can_edit',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.editable')
|
||||
}, {
|
||||
value: 'owner.id',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.owner')
|
||||
}, {
|
||||
value: 'tracks_total',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.tracks')
|
||||
}, {
|
||||
value: 'source',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.source')
|
||||
}];
|
||||
var options = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
|
||||
"data-qa-node": "span",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_FilterField__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
||||
initialValue: filter,
|
||||
handleChange: function handleChange(value) {
|
||||
return _this.setState({
|
||||
filter: value
|
||||
});
|
||||
},
|
||||
onSubmit: function onSubmit() {
|
||||
return uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "FilterField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "swap_vert",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.sort'),
|
||||
value: sort,
|
||||
valueAsLabel: true,
|
||||
options: sort_options,
|
||||
selected_icon: sort ? sort_reverse ? 'keyboard_arrow_up' : 'keyboard_arrow_down' : null,
|
||||
handleChange: function handleChange(value) {
|
||||
_this.setSort(value);
|
||||
|
||||
uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "visibility",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.view'),
|
||||
valueAsLabel: true,
|
||||
value: view,
|
||||
options: view_options,
|
||||
handleChange: function handleChange(value) {
|
||||
uiActions.set({
|
||||
library_playlists_view: value
|
||||
});
|
||||
uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "cloud",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.source'),
|
||||
valueAsLabel: true,
|
||||
value: source,
|
||||
options: source_options,
|
||||
handleChange: function handleChange(value) {
|
||||
uiActions.set({
|
||||
library_playlists_source: value
|
||||
});
|
||||
uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
to: "/playlist/create",
|
||||
noHover: true,
|
||||
discrete: true,
|
||||
tracking: {
|
||||
category: 'Playlist',
|
||||
action: 'Create'
|
||||
},
|
||||
"data-qa-node": "Button",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "add_box",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "actions.add",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
noHover: true,
|
||||
onClick: _this.onRefresh,
|
||||
tracking: {
|
||||
category: 'LibraryAlbums',
|
||||
action: 'Refresh'
|
||||
},
|
||||
"data-qa-node": "Button",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "refresh",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "actions.refresh",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})));
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "view library-playlists-view",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Header__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
options: options,
|
||||
uiActions: uiActions,
|
||||
"data-qa-node": "Header",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "queue_music",
|
||||
type: "material",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "library.playlists.title",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})), _this.renderView());
|
||||
});
|
||||
|
||||
_this.state = {
|
||||
filter: '',
|
||||
limit: 50,
|
||||
@ -138495,13 +138662,13 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
_createClass(LibraryPlaylists, [{
|
||||
key: "componentDidMount",
|
||||
value: function componentDidMount() {
|
||||
var _this$props4 = this.props,
|
||||
_this$props4$location = _this$props4.location;
|
||||
_this$props4$location = _this$props4$location === void 0 ? {} : _this$props4$location;
|
||||
var _this$props4$location2 = _this$props4$location.state;
|
||||
_this$props4$location2 = _this$props4$location2 === void 0 ? {} : _this$props4$location2;
|
||||
var limit = _this$props4$location2.limit,
|
||||
setWindowTitle = _this$props4.uiActions.setWindowTitle;
|
||||
var _this$props5 = this.props,
|
||||
_this$props5$location = _this$props5.location;
|
||||
_this$props5$location = _this$props5$location === void 0 ? {} : _this$props5$location;
|
||||
var _this$props5$location2 = _this$props5$location.state;
|
||||
_this$props5$location2 = _this$props5$location2 === void 0 ? {} : _this$props5$location2;
|
||||
var limit = _this$props5$location2.limit,
|
||||
setWindowTitle = _this$props5.uiActions.setWindowTitle;
|
||||
|
||||
if (limit) {
|
||||
this.setState({
|
||||
@ -138549,194 +138716,29 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
|
||||
state: state
|
||||
});
|
||||
}
|
||||
}, {
|
||||
key: "render",
|
||||
value: function render() {
|
||||
var _this2 = this;
|
||||
|
||||
var source_options = [{
|
||||
value: 'all',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.all')
|
||||
}, {
|
||||
value: 'local',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('services.mopidy.local')
|
||||
}];
|
||||
|
||||
if (this.props.spotify_available) {
|
||||
source_options.push({
|
||||
value: 'spotify',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('services.spotify.title')
|
||||
});
|
||||
}
|
||||
|
||||
var view_options = [{
|
||||
value: 'thumbnails',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.thumbnails')
|
||||
}, {
|
||||
value: 'list',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.list')
|
||||
}];
|
||||
var sort_options = [{
|
||||
value: null,
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.as_loaded')
|
||||
}, {
|
||||
value: 'name',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.name')
|
||||
}, {
|
||||
value: 'last_modified',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.updated')
|
||||
}, {
|
||||
value: 'can_edit',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.editable')
|
||||
}, {
|
||||
value: 'owner.id',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.owner')
|
||||
}, {
|
||||
value: 'tracks_total',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.tracks')
|
||||
}, {
|
||||
value: 'source',
|
||||
label: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.filters.source')
|
||||
}];
|
||||
var options = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
|
||||
"data-qa-node": "span",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_FilterField__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
||||
initialValue: this.state.filter,
|
||||
handleChange: function handleChange(value) {
|
||||
return _this2.setState({
|
||||
filter: value
|
||||
});
|
||||
},
|
||||
onSubmit: function onSubmit(e) {
|
||||
return _this2.props.uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "FilterField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "swap_vert",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.sort'),
|
||||
value: this.props.sort,
|
||||
valueAsLabel: true,
|
||||
options: sort_options,
|
||||
selected_icon: this.props.sort ? this.props.sort_reverse ? 'keyboard_arrow_up' : 'keyboard_arrow_down' : null,
|
||||
handleChange: function handleChange(value) {
|
||||
_this2.setSort(value);
|
||||
|
||||
_this2.props.uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "visibility",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.view'),
|
||||
valueAsLabel: true,
|
||||
value: this.props.view,
|
||||
options: view_options,
|
||||
handleChange: function handleChange(value) {
|
||||
_this2.props.uiActions.set({
|
||||
library_playlists_view: value
|
||||
});
|
||||
|
||||
_this2.props.uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
||||
icon: "cloud",
|
||||
name: Object(_locale__WEBPACK_IMPORTED_MODULE_16__["i18n"])('fields.source'),
|
||||
valueAsLabel: true,
|
||||
value: this.props.source,
|
||||
options: source_options,
|
||||
handleChange: function handleChange(value) {
|
||||
_this2.props.uiActions.set({
|
||||
library_playlists_source: value
|
||||
});
|
||||
|
||||
_this2.props.uiActions.hideContextMenu();
|
||||
},
|
||||
"data-qa-node": "DropdownField",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
to: "/playlist/create",
|
||||
noHover: true,
|
||||
discrete: true,
|
||||
tracking: {
|
||||
category: 'Playlist',
|
||||
action: 'Create'
|
||||
},
|
||||
"data-qa-node": "Button",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "add_box",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "actions.add",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_3__["default"], {
|
||||
noHover: true,
|
||||
onClick: this.onRefresh,
|
||||
tracking: {
|
||||
category: 'LibraryAlbums',
|
||||
action: 'Refresh'
|
||||
},
|
||||
"data-qa-node": "Button",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "refresh",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "actions.refresh",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})));
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "view library-playlists-view",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Header__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
options: options,
|
||||
uiActions: this.props.uiActions,
|
||||
"data-qa-node": "Header",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
name: "queue_music",
|
||||
type: "material",
|
||||
"data-qa-node": "Icon",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_16__["I18n"], {
|
||||
path: "library.playlists.title",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "LibraryPlaylists"
|
||||
})), this.renderView());
|
||||
}
|
||||
}]);
|
||||
|
||||
return LibraryPlaylists;
|
||||
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
|
||||
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
var source = state.ui.library_playlists_source || 'all';
|
||||
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLoadingSelector"])(['(.*):library:playlists']);
|
||||
var spotifyLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLibrarySelector"])('spotify:library:playlists');
|
||||
var googleLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLibrarySelector"])('google:library:playlists');
|
||||
var mopidyLibrarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_20__["makeLibrarySelector"])('mopidy:library:playlists');
|
||||
var playlists = [].concat(_toConsumableArray(source === 'all' || source === 'spotify' ? spotifyLibrarySelector(state) : []), _toConsumableArray(source === 'all' || source === 'google' ? googleLibrarySelector(state) : []), _toConsumableArray(source === 'all' || source === 'local' ? mopidyLibrarySelector(state) : []));
|
||||
return {
|
||||
slim_mode: state.ui.slim_mode,
|
||||
mopidy_uri_schemes: state.mopidy.uri_schemes,
|
||||
spotify_available: state.spotify.access_token,
|
||||
items: state.core.items,
|
||||
mopidy_library: state.core.libraries['mopidy:library:playlists'] || {
|
||||
items_uris: []
|
||||
},
|
||||
spotify_library: state.core.libraries['spotify:library:playlists'] || {
|
||||
items_uris: []
|
||||
},
|
||||
load_queue: state.ui.load_queue,
|
||||
playlists: playlists,
|
||||
loading: loadingSelector(state),
|
||||
source: source,
|
||||
me_id: state.spotify.me ? state.spotify.me.id : false,
|
||||
view: state.ui.library_playlists_view,
|
||||
source: state.ui.library_playlists_source ? state.ui.library_playlists_source : 'all',
|
||||
sort: state.ui.library_playlists_sort ? state.ui.library_playlists_sort : null,
|
||||
sort_reverse: state.ui.library_playlists_sort_reverse ? state.ui.library_playlists_sort_reverse : false,
|
||||
playlists: state.core.playlists
|
||||
sort_reverse: state.ui.library_playlists_sort_reverse ? state.ui.library_playlists_sort_reverse : false
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
16
mopidy_iris/static/app.min.js
vendored
16
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 = "1600883187";
|
||||
var build = "1600971729";
|
||||
var version = "3.52.4";
|
||||
|
||||
// Construct the script tag
|
||||
|
||||
Reference in New Issue
Block a user