loadUris to handle type-agnostic URIs

This commit is contained in:
James Barnsley
2021-01-17 20:55:15 +13:00
parent b0d14561fd
commit 499a4800b0
12 changed files with 253 additions and 33 deletions

View File

@ -114741,7 +114741,7 @@ module.exports = JSON.parse("{\"name\":\"Svenska\",\"errors\":{\"uri_not_found\"
/*!*****************************************!*\
!*** ./src/js/services/core/actions.js ***!
\*****************************************/
/*! exports provided: handleException, debugResponse, set, resetState, clearCurrentTrack, clearStorage, restoreItemsFromColdStore, restoreLibraryFromColdStore, updateColdStore, startSearch, searchResultsLoaded, loadItems, loadItem, loadTrack, loadAlbum, loadArtist, loadPlaylist, loadUser, loadUserPlaylists, loadLibrary, addToLibrary, removeFromLibrary, libraryLoaded, unloadLibrary, itemsLoaded, itemLoaded, tracksLoaded, trackLoaded, artistsLoaded, albumsLoaded, albumLoaded, playlistsLoaded, playlistLoaded, usersLoaded, userLoaded, userPlaylistsLoaded, loadedMore, removeItem, streamTitleLoaded, streamTitleChanged, viewDataLoaded, reorderPlaylistTracks, savePlaylist, createPlaylist, deletePlaylist, removeTracksFromPlaylist, addTracksToPlaylist, getLibraryPlaylists, getLibraryAlbums, getLibraryArtists, addPinned, removePinned, updatePinned, updatePinnedUri */
/*! exports provided: handleException, debugResponse, set, resetState, clearCurrentTrack, clearStorage, restoreItemsFromColdStore, restoreLibraryFromColdStore, updateColdStore, startSearch, searchResultsLoaded, loadUris, loadUri, loadItems, loadItem, loadTrack, loadAlbum, loadArtist, loadPlaylist, loadUser, loadUserPlaylists, loadLibrary, addToLibrary, removeFromLibrary, libraryLoaded, unloadLibrary, itemsLoaded, itemLoaded, tracksLoaded, trackLoaded, artistsLoaded, albumsLoaded, albumLoaded, playlistsLoaded, playlistLoaded, usersLoaded, userLoaded, userPlaylistsLoaded, loadedMore, removeItem, streamTitleLoaded, streamTitleChanged, viewDataLoaded, reorderPlaylistTracks, savePlaylist, createPlaylist, deletePlaylist, removeTracksFromPlaylist, addTracksToPlaylist, getLibraryPlaylists, getLibraryAlbums, getLibraryArtists, addPinned, removePinned, updatePinned, updatePinnedUri */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@ -114757,6 +114757,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "updateColdStore", function() { return updateColdStore; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startSearch", function() { return startSearch; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "searchResultsLoaded", function() { return searchResultsLoaded; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadUris", function() { return loadUris; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadUri", function() { return loadUri; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadItems", function() { return loadItems; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadItem", function() { return loadItem; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadTrack", function() { return loadTrack; });
@ -114915,6 +114917,19 @@ function searchResultsLoaded(query, resultType, results) {
* relevant service to load the record - all from one neat package.
* */
function loadUris() {
var uris = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
type: 'LOAD_URIS',
uris: uris,
options: options
};
}
function loadUri(uri) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return loadUris([uri], options);
}
function loadItems(itemType) {
var uris = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@ -115740,8 +115755,6 @@ var CoreMiddleware = function () {
case 'LOAD_ITEMS':
{
console.log(action);
var _action$uris = action.uris,
_uris = _action$uris === void 0 ? [] : _action$uris,
options = action.options,
@ -133916,13 +133929,11 @@ var Queue = /*#__PURE__*/function (_React$Component) {
_defineProperty(_assertThisInitialized(_this), "componentDidUpdate", function (_ref2) {
var prev_added_from_uri = _ref2.added_from_uri;
var _this$props = _this.props,
loadItem = _this$props.coreActions.loadItem,
loadUri = _this$props.coreActions.loadUri,
added_from_uri = _this$props.added_from_uri;
if (added_from_uri && added_from_uri !== prev_added_from_uri) {
loadItem(added_from_uri, {
full: false
});
loadUri(added_from_uri);
}
});
@ -136656,10 +136667,10 @@ var UriRedirect = /*#__PURE__*/function (_React$Component) {
var _this$props = _this.props,
uri = _this$props.uri,
item = _this$props.item,
loadItem = _this$props.coreActions.loadItem;
loadUri = _this$props.coreActions.loadUri;
if (prevUri !== uri) {
loadItem(uri);
loadUri(uri);
_this.setWindowTitle();
}
@ -136702,12 +136713,12 @@ var UriRedirect = /*#__PURE__*/function (_React$Component) {
var _this$props4 = this.props,
uri = _this$props4.uri,
item = _this$props4.item,
loadItem = _this$props4.coreActions.loadItem;
loadUri = _this$props4.coreActions.loadUri;
if (item) {
this.redirect();
} else {
loadItem(uri);
loadUri(uri);
}
this.setWindowTitle();
@ -138115,13 +138126,13 @@ var Discover = /*#__PURE__*/function (_React$Component) {
_defineProperty(_assertThisInitialized(_this), "handleURLSeeds", function () {
var _this$props2 = _this.props,
loadItems = _this$props2.coreActions.loadItems,
loadUris = _this$props2.coreActions.loadUris,
seedsProp = _this$props2.match.params.seeds; // Rejoin if we've had to uri-encode these as strings
// We'd need to do this if our URL has been encoded so the whole URL can become
// it's own URI (eg iris:discover:spotify_artist_1234) where we can't use ":"
var seeds = seedsProp.split('_').join(':').split(',');
loadItems(seeds);
loadUris(seeds);
_this.setState({
seeds: seeds
@ -141893,14 +141904,15 @@ var AddToQueue = /*#__PURE__*/function (_React$Component) {
_this$props2$view$uri = _this$props2.view.uris,
prevUris = _this$props2$view$uri === void 0 ? [] : _this$props2$view$uri,
_this$props2$coreActi = _this$props2.coreActions,
loadItem = _this$props2$coreActi.loadItem,
loadUri = _this$props2$coreActi.loadUri,
viewDataLoaded = _this$props2$coreActi.viewDataLoaded;
var uris = text.split(',');
var uris = text.split(','); // TODO: Remove validation
var validatedUris = uris.filter(function (uri) {
return Object(_util_helpers__WEBPACK_IMPORTED_MODULE_9__["uriType"])(uri);
});
validatedUris.forEach(function (uri) {
loadItem(uri);
loadUri(uri);
});
_this.setState({
@ -143579,7 +143591,7 @@ var EditRadio = /*#__PURE__*/function (_React$Component) {
var _this$state = _this.state,
uri = _this$state.uri,
seeds = _this$state.seeds;
var loadItem = _this.props.coreActions.loadItem;
var loadUri = _this.props.coreActions.loadUri;
e.preventDefault();
if (uri === '') {
@ -143620,7 +143632,7 @@ var EditRadio = /*#__PURE__*/function (_React$Component) {
});
} else {
validatedSeeds.push(uris[i]);
loadItem(uris[i]);
loadUri(uris[i]);
}
}

File diff suppressed because one or more lines are too long

85
mopidy_iris/static/app.min.css vendored Normal file

File diff suppressed because one or more lines are too long

111
mopidy_iris/static/app.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -106,7 +106,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1610478481";
var build = "1610772376";
var version = "3.55.5";
// Construct the script tag

View File

@ -119,6 +119,18 @@ export function searchResultsLoaded(query, resultType, results) {
* relevant service to load the record - all from one neat package.
* */
export function loadUris(uris = [], options = {}) {
return {
type: 'LOAD_URIS',
uris,
options,
};
}
export function loadUri(uri, options = {}) {
return loadUris([uri], options);
}
export function loadItems(itemType, uris = [], options = {}) {
return {
type: 'LOAD_ITEMS',

View File

@ -351,7 +351,6 @@ const CoreMiddleware = (function () {
* we need to LOAD_URI to ascertain this first.
* */
case 'LOAD_ITEMS': {
console.log(action);
const { uris = [], options, itemType = 'uri' } = action;
uris.forEach((uri) => {

View File

@ -83,13 +83,13 @@ class Queue extends React.Component {
}) => {
const {
coreActions: {
loadItem,
loadUri,
},
added_from_uri,
} = this.props;
if (added_from_uri && added_from_uri !== prev_added_from_uri) {
loadItem(added_from_uri, { full: false });
loadUri(added_from_uri);
}
}

View File

@ -14,14 +14,14 @@ class UriRedirect extends React.Component {
uri,
item,
coreActions: {
loadItem,
loadUri,
},
} = this.props;
if (item) {
this.redirect();
} else {
loadItem(uri);
loadUri(uri);
}
this.setWindowTitle();
@ -34,12 +34,12 @@ class UriRedirect extends React.Component {
uri,
item,
coreActions: {
loadItem,
loadUri,
},
} = this.props;
if (prevUri !== uri) {
loadItem(uri);
loadUri(uri);
this.setWindowTitle();
}

View File

@ -213,7 +213,7 @@ class Discover extends React.Component {
handleURLSeeds = () => {
const {
coreActions: {
loadItems,
loadUris,
},
match: {
params: {
@ -226,7 +226,7 @@ class Discover extends React.Component {
// We'd need to do this if our URL has been encoded so the whole URL can become
// it's own URI (eg iris:discover:spotify_artist_1234) where we can't use ":"
const seeds = seedsProp.split('_').join(':').split(',');
loadItems(seeds);
loadUris(seeds);
this.setState(
{ seeds },

View File

@ -121,15 +121,16 @@ class AddToQueue extends React.Component {
uris: prevUris = [],
},
coreActions: {
loadItem,
loadUri,
viewDataLoaded,
},
} = this.props;
const uris = text.split(',');
// TODO: Remove validation
const validatedUris = uris.filter((uri) => uriType(uri));
validatedUris.forEach((uri) => {
loadItem(uri);
loadUri(uri);
});
this.setState({ text: '' });

View File

@ -136,7 +136,7 @@ class EditRadio extends React.Component {
} = this.state;
const {
coreActions: {
loadItem,
loadUri,
},
} = this.props;
@ -165,7 +165,7 @@ class EditRadio extends React.Component {
this.setState({ error_message: i18n('modal.edit_radio.too_many_seeds') });
} else {
validatedSeeds.push(uris[i]);
loadItem(uris[i]);
loadUri(uris[i]);
}
}