Merging from develop

This commit is contained in:
James Barnsley
2020-11-12 21:13:59 +13:00
14 changed files with 633 additions and 262 deletions

View File

@ -121353,7 +121353,7 @@ var MopidyMiddleware = function () {
}; // Give a 5-second leeway for allowing Mopidy to connect, if it isn't already connected
if (store.getState().mopidy.connected) {
if (socket) {
doRequest();
} else {
console.info('Mopidy not yet connected, waiting 2 seconds');
@ -122621,21 +122621,32 @@ var MopidyMiddleware = function () {
store.dispatch({
type: 'MOPIDY_DIRECTORY_FLUSH'
});
var uri = action.uri ? decodeURIComponent(action.uri) : null;
if (action.uri) {
if (uri) {
request(store, 'library.lookup', {
uris: [action.uri]
uris: [uri]
}).then(function (response) {
if (!response[action.uri] || !response[action.uri].length) return;
var _response$uri = response[uri],
results = _response$uri === void 0 ? [] : _response$uri;
if (!results.length) return;
var result = results[0];
if (result.album) {
result = _objectSpread(_objectSpread({}, result), {}, {
name: result.album.name
});
}
store.dispatch({
type: 'MOPIDY_DIRECTORY_LOADED',
directory: Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatSimpleObject"])(response[action.uri][0])
directory: _objectSpread({}, Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatSimpleObject"])(result))
});
});
}
request(store, 'library.browse', {
uri: action.uri
uri: uri
}).then(function (response) {
var tracks_uris = [];
var tracks = [];
@ -122692,9 +122703,9 @@ var MopidyMiddleware = function () {
return;
}
for (var uri in response) {
if (response.hasOwnProperty(uri) && response[uri].length > 0) {
tracks.push(Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatTrack"])(response[uri][0]));
for (var _uri in response) {
if (response.hasOwnProperty(_uri) && response[_uri].length > 0) {
tracks.push(Object(_util_format__WEBPACK_IMPORTED_MODULE_6__["formatTrack"])(response[_uri][0]));
}
}
@ -125352,7 +125363,7 @@ function reducer() {
/*!********************************************!*\
!*** ./src/js/services/spotify/actions.js ***!
\********************************************/
/*! exports provided: set, connect, authorizationGranted, revokeAuthorization, refreshingToken, tokenChanged, importAuthorization, getMe, getTrack, getFeaturedPlaylists, getCategories, getCategory, getNewReleases, getURL, getMore, getSearchResults, getAutocompleteResults, clearAutocompleteResults, following, resolveRadioSeeds, getRecommendations, getGenres, getArtist, getArtistImages, playArtistTopTracks, getUser, getAlbum, createPlaylist, savePlaylist, getPlaylist, addTracksToPlaylist, deleteTracksFromPlaylist, reorderPlaylistTracks, flushLibrary, getLibraryPlaylists, getLibraryAlbums, getLibraryArtists, getLibraryTracks */
/*! exports provided: set, connect, authorizationGranted, revokeAuthorization, refreshingToken, tokenChanged, importAuthorization, getMe, getTrack, getFeaturedPlaylists, getCategories, getCategory, getNewReleases, getURL, getMore, getSearchResults, getAutocompleteResults, clearAutocompleteResults, following, resolveRadioSeeds, getRecommendations, getGenres, getArtist, getArtistImages, playArtistTopTracks, getUser, getAlbum, createPlaylist, savePlaylist, getPlaylistTracks, getPlaylist, addTracksToPlaylist, deleteTracksFromPlaylist, reorderPlaylistTracks, flushLibrary, getLibraryPlaylists, getLibraryAlbums, getLibraryArtists, getLibraryTracks */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@ -125386,6 +125397,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAlbum", function() { return getAlbum; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPlaylist", function() { return createPlaylist; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "savePlaylist", function() { return savePlaylist; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPlaylistTracks", function() { return getPlaylistTracks; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getPlaylist", function() { return getPlaylist; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addTracksToPlaylist", function() { return addTracksToPlaylist; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deleteTracksFromPlaylist", function() { return deleteTracksFromPlaylist; });
@ -125877,6 +125889,11 @@ function getSearchResults(_ref3) {
var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
var processKey = 'SPOTIFY_GET_SEARCH_RESULTS';
return function (dispatch, getState) {
var _getState = getState(),
_getState$spotify$me = _getState.spotify.me;
_getState$spotify$me = _getState$spotify$me === void 0 ? {} : _getState$spotify$me;
var meId = _getState$spotify$me.id;
dispatch(uiActions.startProcess(processKey, {
content: 'Searching Spotify'
}));
@ -125916,7 +125933,7 @@ function getSearchResults(_ref3) {
if (response.playlists !== undefined) {
var playlists = response.playlists.items.map(function (item) {
return _objectSpread(_objectSpread({}, Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatPlaylist"])(item)), {}, {
can_edit: getState().spotify.me && item.owner.id === getState().spotify.me.id
can_edit: meId === item.owner.id
});
});
dispatch(coreActions.searchResultsLoaded({
@ -126061,8 +126078,14 @@ function following(uri) {
break;
case 'playlist':
var _getState2 = getState(),
_getState2$spotify$me = _getState2.spotify.me;
_getState2$spotify$me = _getState2$spotify$me === void 0 ? {} : _getState2$spotify$me;
var meId = _getState2$spotify$me.id;
if (method === 'GET') {
endpoint = "playlists/".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/followers/contains?ids=").concat(getState().spotify.me.id);
endpoint = "playlists/".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/followers/contains?ids=").concat(meId);
} else {
endpoint = "playlists/".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/followers?");
}
@ -126487,7 +126510,13 @@ function createPlaylist(name, description, is_public, is_collaborative) {
"public": is_public,
collaborative: is_collaborative
};
request(dispatch, getState, "users/".concat(getState().spotify.me.id, "/playlists/"), 'POST', data).then(function (response) {
var _getState3 = getState(),
_getState3$spotify$me = _getState3.spotify.me;
_getState3$spotify$me = _getState3$spotify$me === void 0 ? {} : _getState3$spotify$me;
var meId = _getState3$spotify$me.id;
request(dispatch, getState, "users/".concat(meId, "/playlists/"), 'POST', data).then(function (response) {
dispatch(coreActions.itemLoaded(_objectSpread(_objectSpread({}, Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatPlaylist"])(response)), {}, {
can_edit: true,
tracks: []
@ -126511,16 +126540,22 @@ function savePlaylist(uri, name, description, is_public, is_collaborative, image
description: description,
"public": is_public,
collaborative: is_collaborative
}; // Update the playlist fields
};
request(dispatch, getState, "users/".concat(getState().spotify.me.id, "/playlists/").concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri)), 'PUT', data).then(function (response) {
var _getState4 = getState(),
_getState4$spotify$me = _getState4.spotify.me;
_getState4$spotify$me = _getState4$spotify$me === void 0 ? {} : _getState4$spotify$me;
var meId = _getState4$spotify$me.id; // Update the playlist fields
request(dispatch, getState, "users/".concat(meId, "/playlists/").concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri)), 'PUT', data).then(function (response) {
dispatch(uiActions.createNotification({
level: 'warning',
content: 'Playlist saved'
})); // Save the image
if (image) {
request(dispatch, getState, "users/".concat(getState().spotify.me.id, "/playlists/").concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/images"), 'PUT', image).then(function (response) {
request(dispatch, getState, "users/".concat(meId, "/playlists/").concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/images"), 'PUT', image).then(function (response) {
dispatch({
type: 'PLAYLIST_UPDATED',
key: uri,
@ -126551,13 +126586,60 @@ function savePlaylist(uri, name, description, is_public, is_collaborative, image
});
};
}
function getPlaylist(uri) {
function getPlaylistTracks(uri) {
var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
full = _ref7.full,
forceRefetch = _ref7.forceRefetch,
callbackAction = _ref7.callbackAction;
return function (dispatch, getState) {
var initialEndpoint = "playlists/".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri), "/tracks");
initialEndpoint += "?market=".concat(getState().spotify.country);
if (forceRefetch) initialEndpoint += "&refetch=".concat(Date.now());
var tracks = [];
var fetchTracks = function fetchTracks(endpoint) {
return request(dispatch, getState, endpoint).then(function (response) {
tracks = [].concat(_toConsumableArray(tracks), _toConsumableArray(Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatTracks"])(response.items)));
if (response.next) {
fetchTracks(response.next);
} else {
dispatch(coreActions.itemLoaded({
uri: uri,
tracks: Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["injectSortId"])(tracks) // only inject sort_id when we've loaded them all
}));
if (callbackAction) {
switch (callbackAction.name) {
case 'enqueue':
dispatch(mopidyActions.enqueueURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_1__["arrayOf"])('uri', tracks), uri, callbackAction.play_next, callbackAction.at_position, callbackAction.offset));
break;
case 'play':
dispatch(mopidyActions.playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_1__["arrayOf"])('uri', tracks), uri, callbackAction.shuffle));
break;
default:
break;
}
}
}
});
};
fetchTracks(initialEndpoint);
};
}
function getPlaylist(uri, options) {
var full = options.full,
forceRefetch = options.forceRefetch;
return function (dispatch, getState) {
var _getState5 = getState(),
_getState5$spotify$me = _getState5.spotify.me;
_getState5$spotify$me = _getState5$spotify$me === void 0 ? {} : _getState5$spotify$me;
var meId = _getState5$spotify$me.id;
var endpoint = "playlists/".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["getFromUri"])('playlistid', uri));
endpoint += "?market=".concat(getState().spotify.country);
if (forceRefetch) endpoint += "&refetch=".concat(Date.now()); // TODO
@ -126567,8 +126649,6 @@ function getPlaylist(uri) {
// 3. Update process as tracks are loaded and enqueue occurs
request(dispatch, getState, endpoint).then(function (response) {
var tracks = Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["injectSortId"])(Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatTracks"])(response.tracks.items)); // convert links in description
var description = null;
if (response.description) {
@ -126579,46 +126659,16 @@ function getPlaylist(uri) {
}
dispatch(coreActions.itemLoaded(_objectSpread(_objectSpread({}, Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatPlaylist"])(response)), {}, {
can_edit: getState().spotify.me && getState().spotify.me.id === response.owner.id,
description: description
}, full ? {} : {
can_edit: meId === response.owner.id,
description: description,
// Remove tracks. They're handed by another query which allows our detector
// to accurately identify whether we've loaded *ALL* the tracks. Without this, it
// doesn't know if we've loaded all tracks, or just the first page.
tracks: null
})));
if (full) {
var fetchTracks = function fetchTracks(endpoint) {
return request(dispatch, getState, endpoint).then(function (response) {
tracks = [].concat(_toConsumableArray(tracks), _toConsumableArray(Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatTracks"])(response.items)));
if (response.next) {
fetchTracks(response.next);
} else {
dispatch(coreActions.itemLoaded({
uri: uri,
tracks: Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["injectSortId"])(tracks)
}));
if (callbackAction) {
switch (callbackAction.name) {
case 'enqueue':
dispatch(mopidyActions.enqueueURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_1__["arrayOf"])('uri', tracks), uri, callbackAction.play_next, callbackAction.at_position, callbackAction.offset));
break;
case 'play':
dispatch(mopidyActions.playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_1__["arrayOf"])('uri', tracks), uri, callbackAction.shuffle));
break;
default:
break;
}
}
}
});
};
if (response.tracks.next) {
fetchTracks(response.tracks.next);
}
dispatch(getPlaylistTracks(uri, options));
}
;
@ -126694,6 +126744,11 @@ function flushLibrary() {
}
function getLibraryPlaylists(forceRefetch) {
return function (dispatch, getState) {
var _getState6 = getState(),
_getState6$spotify$me = _getState6.spotify.me;
_getState6$spotify$me = _getState6$spotify$me === void 0 ? {} : _getState6$spotify$me;
var meId = _getState6$spotify$me.id;
var processKey = 'SPOTIFY_GET_LIBRARY_PLAYLISTS';
dispatch(uiActions.startProcess(processKey, {
notification: false
@ -126717,7 +126772,7 @@ function getLibraryPlaylists(forceRefetch) {
var items = response.items.map(function (item) {
return _objectSpread(_objectSpread({}, Object(_util_format__WEBPACK_IMPORTED_MODULE_3__["formatPlaylist"])(item)), {}, {
in_library: true,
can_edit: getState().spotify.me && item.owner.id === getState().spotify.me.id
can_edit: meId === item.owner.id
});
});
libraryItems = [].concat(_toConsumableArray(libraryItems), _toConsumableArray(items));
@ -134226,54 +134281,56 @@ var Artist = /*#__PURE__*/function (_React$Component) {
if (prevUri !== uri && artist) _this.setWindowTitle(artist);
});
_defineProperty(_assertThisInitialized(_this), "onResetFilters", function () {
_this.onChangeFilter(null);
_this.onChangeSort(null);
Object(_components_Trackable__WEBPACK_IMPORTED_MODULE_26__["trackEvent"])({
category: 'Artist',
action: 'FilterAlbums',
label: 'Reset'
});
_defineProperty(_assertThisInitialized(_this), "onChangeTracksFilter", function (value) {
_this.onChangeFilter('tracks', value);
});
_defineProperty(_assertThisInitialized(_this), "onChangeFilter", function (value) {
_defineProperty(_assertThisInitialized(_this), "onChangeAlbumsFilter", function (value) {
_this.onChangeFilter('albums', value);
});
_defineProperty(_assertThisInitialized(_this), "onChangeFilter", function (type, value) {
var _this$props$uiActions = _this.props.uiActions,
set = _this$props$uiActions.set,
hideContextMenu = _this$props$uiActions.hideContextMenu;
set({
artist_albums_filter: value
});
set(_defineProperty({}, "artist_".concat(type, "_filter"), value));
hideContextMenu();
Object(_components_Trackable__WEBPACK_IMPORTED_MODULE_26__["trackEvent"])({
category: 'Artist',
action: 'FilterAlbums',
action: "Filter".concat(type),
label: value
});
});
_defineProperty(_assertThisInitialized(_this), "onChangeSort", function (value) {
_defineProperty(_assertThisInitialized(_this), "onChangeTracksSort", function (value) {
_this.onChangeSort('tracks', value);
});
_defineProperty(_assertThisInitialized(_this), "onChangeAlbumsSort", function (value) {
_this.onChangeSort('albums', value);
});
_defineProperty(_assertThisInitialized(_this), "onChangeSort", function (type, value) {
var _set2;
var _this$props2 = _this.props,
sort = _this$props2.sort,
sort_reverse = _this$props2.sort_reverse,
sort = _this$props2["".concat(type, "_sort")],
sort_reverse = _this$props2["".concat(type, "_sort_reverse")],
_this$props2$uiAction = _this$props2.uiActions,
set = _this$props2$uiAction.set,
hideContextMenu = _this$props2$uiAction.hideContextMenu;
var reverse = false;
if (value !== null && sort === value) {
reverse = !sort_reverse;
}
set({
artist_albums_sort_reverse: reverse,
artist_albums_sort: value
});
set((_set2 = {}, _defineProperty(_set2, "artist_".concat(type, "_sort_reverse"), reverse), _defineProperty(_set2, "artist_".concat(type, "_sort"), value), _set2));
hideContextMenu();
Object(_components_Trackable__WEBPACK_IMPORTED_MODULE_26__["trackEvent"])({
category: 'Artist',
action: 'SortAlbums',
action: "Sort".concat(type),
label: "".concat(value, " ").concat(reverse ? 'DESC' : 'ASC')
});
});
@ -134326,10 +134383,10 @@ var Artist = /*#__PURE__*/function (_React$Component) {
uri = _this$props5.uri,
uiActions = _this$props5.uiActions,
artist = _this$props5.artist,
sort = _this$props5.sort,
sort_reverse = _this$props5.sort_reverse,
sort = _this$props5.albums_sort,
sort_reverse = _this$props5.albums_sort_reverse,
filterType = _this$props5.filterType;
var filter = _this.state.filter;
var filter = _this.state.albumsFilter;
var tracks = artist.tracks,
related_artists = artist.related_artists;
var albums = _this.props.albums;
@ -134450,7 +134507,7 @@ var Artist = /*#__PURE__*/function (_React$Component) {
initialValue: filter,
handleChange: function handleChange(value) {
return _this.setState({
filter: value
albumsFilter: value
});
},
onSubmit: function onSubmit() {
@ -134465,7 +134522,7 @@ var Artist = /*#__PURE__*/function (_React$Component) {
valueAsLabel: true,
options: sort_options,
selected_icon: sort ? sort_reverse ? 'keyboard_arrow_up' : 'keyboard_arrow_down' : null,
handleChange: _this.onChangeSort,
handleChange: _this.onChangeAlbumsSort,
"data-qa-node": "DropdownField",
"data-qa-file": "Artist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_14__["default"], {
@ -134474,7 +134531,7 @@ var Artist = /*#__PURE__*/function (_React$Component) {
value: filterType,
valueAsLabel: true,
options: filter_type_options,
handleChange: _this.onChangeFilter,
handleChange: _this.onChangeAlbumsFilter,
"data-qa-node": "DropdownField",
"data-qa-file": "Artist"
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", {
@ -134489,9 +134546,28 @@ var Artist = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "renderTracks", function () {
var _this$props$artist = _this.props.artist,
uri = _this$props$artist.uri,
tracks = _this$props$artist.tracks;
var _this$props6 = _this.props,
uri = _this$props6.artist.uri,
sort = _this$props6.tracks_sort,
sort_reverse = _this$props6.tracks_sort_reverse;
var filter = _this.state.tracksFilter;
var tracks = _this.props.artist.tracks;
if (sort && tracks) {
tracks = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_23__["sortItems"])(tracks, sort, sort_reverse);
}
if (filter && filter !== '') {
tracks = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_23__["applyFilter"])('name', filter, tracks);
}
var sort_options = [{
value: 'disc_track',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_24__["i18n"])('album.tracks.sort.disc_track')
}, {
value: 'name',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_24__["i18n"])('album.tracks.sort.name')
}];
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
className: "body related-artists",
"data-qa-node": "div",
@ -134500,7 +134576,41 @@ var Artist = /*#__PURE__*/function (_React$Component) {
className: "list-wrapper no-top-padding",
"data-qa-node": "section",
"data-qa-file": "Artist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_TrackList__WEBPACK_IMPORTED_MODULE_6__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h4", {
className: "no-bottom-margin",
"data-qa-node": "h4",
"data-qa-file": "Artist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_24__["I18n"], {
path: "artist.tracks.title",
"data-qa-node": "I18n",
"data-qa-file": "Artist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
className: "actions-wrapper",
"data-qa-node": "div",
"data-qa-file": "Artist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_FilterField__WEBPACK_IMPORTED_MODULE_15__["default"], {
initialValue: filter,
handleChange: function handleChange(value) {
return _this.setState({
tracksFilter: value
});
},
onSubmit: function onSubmit() {
return _services_ui_actions__WEBPACK_IMPORTED_MODULE_19__["hideContextMenu"]();
},
"data-qa-node": "FilterField",
"data-qa-file": "Artist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_DropdownField__WEBPACK_IMPORTED_MODULE_14__["default"], {
icon: "swap_vert",
name: "Sort",
value: sort,
valueAsLabel: true,
options: sort_options,
selected_icon: sort ? sort_reverse ? 'keyboard_arrow_up' : 'keyboard_arrow_down' : null,
handleChange: _this.onChangeTracksSort,
"data-qa-node": "DropdownField",
"data-qa-file": "Artist"
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_TrackList__WEBPACK_IMPORTED_MODULE_6__["default"], {
className: "artist-track-list",
uri: uri,
tracks: tracks,
@ -134527,9 +134637,9 @@ var Artist = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "renderAbout", function () {
var _this$props6 = _this.props,
artistProp = _this$props6.artist,
artists = _this$props6.artists;
var _this$props7 = _this.props,
artistProp = _this$props7.artist,
artists = _this$props7.artists;
var artist = Object(_util_format__WEBPACK_IMPORTED_MODULE_22__["collate"])(artistProp, {
artists: artists
});
@ -134676,11 +134786,11 @@ var Artist = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "render", function () {
var _this$props7 = _this.props,
uri = _this$props7.uri,
loading = _this$props7.loading,
artist = _this$props7.artist,
history = _this$props7.history;
var _this$props8 = _this.props,
uri = _this$props8.uri,
loading = _this$props8.loading,
artist = _this$props8.artist,
history = _this$props8.history;
if (loading) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_17__["default"], {
@ -134875,7 +134985,8 @@ var Artist = /*#__PURE__*/function (_React$Component) {
});
_this.state = {
filter: ''
albumsFilter: '',
tracksFilter: ''
};
return _this;
}
@ -134883,9 +134994,9 @@ var Artist = /*#__PURE__*/function (_React$Component) {
_createClass(Artist, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this$props8 = this.props,
uri = _this$props8.uri,
loadItem = _this$props8.coreActions.loadItem;
var _this$props9 = this.props,
uri = _this$props9.uri,
loadItem = _this$props9.coreActions.loadItem;
this.setWindowTitle();
loadItem(uri, {
full: true
@ -134915,9 +135026,11 @@ var mapStateToProps = function mapStateToProps(state, ownProps) {
loading: loadingSelector(state),
theme: state.ui.theme,
slim_mode: state.ui.slim_mode,
filterType: state.ui.artist_albums_filter ? state.ui.artist_albums_filter : null,
sort: state.ui.artist_albums_sort ? state.ui.artist_albums_sort : null,
sort_reverse: !!state.ui.artist_albums_sort_reverse,
filterType: state.ui.artist_albums_filter,
albums_sort: state.ui.artist_albums_sort,
albums_sort_reverse: !!state.ui.artist_albums_sort_reverse,
tracks_sort: state.ui.artist_tracks_sort,
tracks_sort_reverse: !!state.ui.artist_tracks_sort_reverse,
spotify_authorized: state.spotify.authorization
};
};
@ -136182,9 +136295,6 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
var sort_options = [{
value: 'sort_id',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_23__["i18n"])('playlist.tracks.sort.sort_id')
}, {
value: 'added_at',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_23__["i18n"])('playlist.tracks.sort.added_at')
}, {
value: 'name',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_23__["i18n"])('playlist.tracks.sort.name')
@ -137118,7 +137228,7 @@ var QueueHistory = /*#__PURE__*/function (_React$Component) {
type: "material",
"data-qa-node": "Icon",
"data-qa-file": "QueueHistory"
}))), tracks && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", {
}))), tracks.length > 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("section", {
className: "content-wrapper",
"data-qa-node": "section",
"data-qa-file": "QueueHistory"
@ -142769,12 +142879,16 @@ var LibraryBrowseDirectory = /*#__PURE__*/function (_React$Component) {
}));
});
_defineProperty(_assertThisInitialized(_this), "playAll", function (tracks) {
_defineProperty(_assertThisInitialized(_this), "playAll", function () {
var _this$props3 = _this.props,
uri = _this$props3.uri,
playURIs = _this$props3.mopidyActions.playURIs,
hideContextMenu = _this$props3.uiActions.hideContextMenu;
playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_17__["arrayOf"])('uri', tracks), "iris:browse:".concat(uri));
hideContextMenu = _this$props3.uiActions.hideContextMenu,
_this$props3$director = _this$props3.directory;
_this$props3$director = _this$props3$director === void 0 ? {} : _this$props3$director;
var tracks = _this$props3$director.tracks;
if (!tracks || !tracks.length) return;
playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_17__["arrayOf"])('uri', Object(_util_arrays__WEBPACK_IMPORTED_MODULE_17__["sortItems"])(tracks, 'name')), "iris:browse:".concat(uri));
hideContextMenu();
});
@ -142890,8 +143004,8 @@ var LibraryBrowseDirectory = /*#__PURE__*/function (_React$Component) {
var tracks = null;
var limit_remaining = limit - subdirectories.length;
if (limit_remaining > 0) {
all_tracks = directory.tracks && directory.tracks.length > 0 ? directory.tracks : null;
if (limit_remaining > 0 && directory.tracks && directory.tracks.length) {
all_tracks = directory.tracks;
all_tracks = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_17__["sortItems"])(all_tracks, 'name');
tracks = all_tracks.slice(0, limit_remaining);
}
@ -142918,11 +143032,7 @@ var LibraryBrowseDirectory = /*#__PURE__*/function (_React$Component) {
"data-qa-node": "DropdownField",
"data-qa-file": "LibraryBrowseDirectory"
}), tracks && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_19__["default"], {
onClick: function onClick() {
uiActions.hideContextMenu();
_this.playAll(all_tracks);
},
onClick: _this.playAll,
noHover: true,
discrete: true,
tracking: {
@ -143548,6 +143658,9 @@ var LibraryPlaylists = /*#__PURE__*/function (_React$Component) {
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');
@ -143561,7 +143674,7 @@ var mapStateToProps = function mapStateToProps(state) {
playlists: librarySelector(state),
loading_progress: processProgressSelector(state),
source: source,
me_id: state.spotify.me ? state.spotify.me.id : false,
me_id: me_id,
view: state.ui.library_playlists_view,
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
@ -143764,11 +143877,33 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
});
});
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
_defineProperty(_assertThisInitialized(_this), "playAll", function () {
var _this$props5 = _this.props,
sort = _this$props5.sort,
sort_reverse = _this$props5.sort_reverse,
loading_progress = _this$props5.loading_progress;
playURIs = _this$props5.mopidyActions.playURIs,
hideContextMenu = _this$props5.uiActions.hideContextMenu;
var tracks = _this.props.tracks;
var filter = _this.state.filter;
if (!tracks || !tracks.length) return;
if (sort) {
tracks = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_13__["sortItems"])(tracks, sort, sort_reverse);
}
if (filter && filter !== '') {
tracks = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_13__["applyFilter"])('name', filter, tracks);
}
playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_13__["arrayOf"])('uri', tracks));
hideContextMenu();
});
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
var _this$props6 = _this.props,
sort = _this$props6.sort,
sort_reverse = _this$props6.sort_reverse,
loading_progress = _this$props6.loading_progress;
var _this$state2 = _this.state,
limit = _this$state2.limit,
filter = _this$state2.filter;
@ -143813,13 +143948,13 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "render", function () {
var _this$props6 = _this.props,
spotify_available = _this$props6.spotify_available,
sort = _this$props6.sort,
source = _this$props6.source,
sort_reverse = _this$props6.sort_reverse,
uiActions = _this$props6.uiActions,
loading_progress = _this$props6.loading_progress;
var _this$props7 = _this.props,
spotify_available = _this$props7.spotify_available,
sort = _this$props7.sort,
source = _this$props7.source,
sort_reverse = _this$props7.sort_reverse,
uiActions = _this$props7.uiActions,
loading_progress = _this$props7.loading_progress;
var _this$state3 = _this.state,
filter = _this$state3.filter,
per_page = _this$state3.per_page;
@ -143894,6 +144029,24 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
"data-qa-node": "DropdownField",
"data-qa-file": "LibraryTracks"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_14__["default"], {
onClick: _this.playAll,
noHover: true,
discrete: true,
tracking: {
category: 'LibraryTracks',
action: 'Play'
},
"data-qa-node": "Button",
"data-qa-file": "LibraryTracks"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_8__["default"], {
name: "play_circle_filled",
"data-qa-node": "Icon",
"data-qa-file": "LibraryTracks"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_15__["I18n"], {
path: "actions.play_all",
"data-qa-node": "I18n",
"data-qa-file": "LibraryTracks"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_14__["default"], {
noHover: true,
discrete: true,
onClick: loading ? _this.cancelRefresh : _this.refresh,
@ -143952,10 +144105,10 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
_createClass(LibraryTracks, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this$props7 = this.props,
_this$props7$location = _this$props7.location.state,
state = _this$props7$location === void 0 ? {} : _this$props7$location,
setWindowTitle = _this$props7.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({
@ -144222,16 +144375,27 @@ var AddToPlaylist = /*#__PURE__*/function (_React$Component) {
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
var mapStateToProps = function mapStateToProps(state, ownProps) {
var _state$spotify = state.spotify,
_state$spotify$me = _state$spotify.me;
_state$spotify$me = _state$spotify$me === void 0 ? {} : _state$spotify$me;
var me_id = _state$spotify$me.id,
spotify_available = _state$spotify.access_token,
load_queue = state.ui.load_queue,
_state$core = state.core,
playlists = _state$core.playlists,
items = _state$core.items,
libraries = _state$core.libraries,
mopidy_uri_schemes = state.mopidy.uri_schemes;
return {
uris: ownProps.match.params.uris ? decodeURIComponent(ownProps.match.params.uris).split(',') : [],
mopidy_uri_schemes: state.mopidy.uri_schemes,
items: state.core.items,
mopidy_library: state.core.libraries['mopidy:library:playlists'],
spotify_library: state.core.libraries['spotify:library:playlists'],
spotify_available: state.spotify.access_token,
load_queue: state.ui.load_queue,
me_id: state.spotify.me ? state.spotify.me.id : false,
playlists: state.core.playlists
mopidy_uri_schemes: mopidy_uri_schemes,
items: items,
mopidy_library: libraries['mopidy:library:playlists'],
spotify_library: libraries['spotify:library:playlists'],
spotify_available: spotify_available,
load_queue: load_queue,
me_id: me_id,
playlists: playlists
};
};
@ -147977,7 +148141,7 @@ var ShareConfiguration = /*#__PURE__*/function (_React$Component) {
return ShareConfiguration;
}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);
var mapStateToProps = function mapStateToProps(state, ownProps) {
var mapStateToProps = function mapStateToProps(state) {
return {
spotify_authorization: state.spotify.authorization,
spotify_me: state.spotify.me,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -106,7 +106,11 @@
// Release details
// These are automatically injected to built HTML
<<<<<<< HEAD
var build = "1605168574";
=======
var build = "1605167537";
>>>>>>> develop
var version = "3.54.0";
// Construct the script tag