Dynamic library sources working; Need to expand and test other providers

This commit is contained in:
James Barnsley
2021-04-22 21:16:21 +12:00
parent c1493f1a3c
commit faf5f53692
10 changed files with 381 additions and 362 deletions

View File

@ -158779,6 +158779,7 @@ __webpack_require__.r(__webpack_exports__);
var LinksSentence = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(function (_ref) {
var items = _ref.items,
itemType = _ref.itemType,
className = _ref.className,
nolinks = _ref.nolinks;
if (!items) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
@ -158800,27 +158801,29 @@ var LinksSentence = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo
}, "-");
var separator = null;
if (index == items.length - 2) {
if (index === items.length - 2) {
separator = ' and ';
} else if (index < items.length - 2) {
separator = ', ';
}
var content = null;
if (!name) {
var content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "LinksSentence"
}, "-");
} else if (!uri || nolinks) {
var content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "LinksSentence"
}, name);
} else {
var content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_1__["default"], {
content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_1__["default"], {
className: "links-sentence__item links-sentence__item--link",
uri: uri,
type: type,
type: itemType || type,
"data-qa-node": "URILink",
"data-qa-file": "LinksSentence"
}, name);
@ -172534,6 +172537,10 @@ var MopidyMiddleware = function () {
request(store, 'library.browse', {
uri: action.uri
}).then(function (browseResponse) {
console.debug({
action: action,
browseResponse: browseResponse
});
var allUris = Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', browseResponse);
store.dispatch(uiActions.updateProcess(action.type, {
remaining: allUris.length,
@ -180960,7 +180967,7 @@ var ensureLoaded = function ensureLoaded(_ref3) {
/*!**********************************!*\
!*** ./src/js/util/selectors.js ***!
\**********************************/
/*! exports provided: getItem, getLibrary, getGridGlowEnabled, getLibrarySource, getDragger, makeItemSelector, makeArtistSelector, makeLibrarySelector, makeLoadingSelector, makeSearchResultsSelector, makeProcessProgressSelector, queueHistorySelector */
/*! exports provided: getItem, getLibrary, getGridGlowEnabled, getLibrarySource, getDragger, makeItemSelector, makeArtistSelector, makeLibrarySelector, makeLoadingSelector, makeSearchResultsSelector, makeProcessProgressSelector, queueHistorySelector, makeProvidersSelector */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
@ -180977,9 +180984,11 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeSearchResultsSelector", function() { return makeSearchResultsSelector; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeProcessProgressSelector", function() { return makeProcessProgressSelector; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queueHistorySelector", function() { return queueHistorySelector; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeProvidersSelector", function() { return makeProvidersSelector; });
/* harmony import */ var reselect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! reselect */ "./node_modules/reselect/es/index.js");
/* harmony import */ var _arrays__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrays */ "./src/js/util/arrays.js");
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../locale */ "./src/js/locale/index.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."); }
@ -181002,6 +181011,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
var getItem = function getItem(state, uri) {
return state.core.items[uri];
};
@ -181120,6 +181130,66 @@ var makeProcessProgressSelector = function makeProcessProgressSelector(keys) {
});
};
var providers = {
albums: [{
scheme: 'local:',
uri: 'local:directory?type=album',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.mopidy.local')
}, {
scheme: 'gmusic:',
uri: 'gmusic:album',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.google.title')
}, {
scheme: 'spotify:',
uri: 'spotify:library:albums',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.spotify.title')
}, {
scheme: 'ytmusic:',
uri: 'ytmusic:album',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.youtube.title')
}],
artists: [{
scheme: 'local:',
uri: 'local:directory?type=artist&role=albumartist',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.mopidy.local')
}, {
scheme: 'gmusic:',
uri: 'gmusic:artist',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.google.title')
}, {
scheme: 'spotify:',
uri: 'spotify:library:artists',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.spotify.title')
}, {
scheme: 'ytmusic:',
uri: 'ytmusic:artist',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.youtube.title')
}],
tracks: [{
scheme: 'local:',
uri: 'local:directory?type=track',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.mopidy.local')
}, {
scheme: 'spotify:',
uri: 'spotify:library:tracks',
title: Object(_locale__WEBPACK_IMPORTED_MODULE_3__["i18n"])('services.spotify.title')
}]
};
var getUriSchemes = function getUriSchemes(state) {
return state.mopidy.uri_schemes;
};
var makeProvidersSelector = function makeProvidersSelector(context) {
return Object(reselect__WEBPACK_IMPORTED_MODULE_0__["createSelector"])([getUriSchemes], function (schemes) {
var _providers$context;
return (_providers$context = providers[context]) === null || _providers$context === void 0 ? void 0 : _providers$context.filter(function (p) {
return schemes.indexOf(p.scheme) > -1;
});
});
};
/***/ }),
@ -189155,6 +189225,18 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/selectors */ "./src/js/util/selectors.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); }
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."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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 _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); } }
@ -189237,14 +189319,13 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var _this$props = _this.props,
source = _this$props.source,
providers = _this$props.providers,
loadLibrary = _this$props.coreActions.loadLibrary;
var uris = [];
if (source === 'all') {
uris = _this.sourceOptions().map(function (o) {
return o.value;
}).filter(function (u) {
return u !== 'all';
uris = providers.map(function (p) {
return p.uri;
});
} else {
uris.push(source);
@ -189333,51 +189414,15 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
}));
});
_defineProperty(_assertThisInitialized(_this), "sourceOptions", function () {
var _this$props4 = _this.props,
spotify_available = _this$props4.spotify_available,
google_available = _this$props4.google_available,
youtube_available = _this$props4.youtube_available;
var options = [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.filters.all')
}, {
value: 'local:directory?type=album',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.mopidy.local')
}];
if (youtube_available) {
options.push({
value: 'ytmusic:album',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.youtube.title')
});
}
if (google_available) {
options.push({
value: 'gmusic:album',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.google.title')
});
}
if (spotify_available) {
options.push({
value: 'spotify:library:albums',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.spotify.title')
});
}
return options;
});
_defineProperty(_assertThisInitialized(_this), "render", function () {
var _this$props5 = _this.props,
sort = _this$props5.sort,
view = _this$props5.view,
source = _this$props5.source,
sort_reverse = _this$props5.sort_reverse,
uiActions = _this$props5.uiActions,
loading_progress = _this$props5.loading_progress;
var _this$props4 = _this.props,
sort = _this$props4.sort,
view = _this$props4.view,
source = _this$props4.source,
providers = _this$props4.providers,
sort_reverse = _this$props4.sort_reverse,
uiActions = _this$props4.uiActions,
loading_progress = _this$props4.loading_progress;
var _this$state = _this.state,
filter = _this$state.filter,
per_page = _this$state.per_page;
@ -189453,7 +189498,15 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
name: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.source'),
value: source,
valueAsLabel: true,
options: _this.sourceOptions(),
options: [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.filters.all')
}].concat(_toConsumableArray(providers.map(function (p) {
return {
value: p.uri,
label: p.title
};
}))),
handleChange: function handleChange(val) {
uiActions.set({
library_albums_source: val
@ -189530,17 +189583,14 @@ var LibraryAlbums = /*#__PURE__*/function (_React$Component) {
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])('albums');
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
var providersSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProvidersSelector"])('albums');
var mapStateToProps = function mapStateToProps(state) {
var _state$mopidy, _state$mopidy$uri_sch, _state$mopidy2, _state$mopidy2$uri_sc;
return {
loading_progress: processProgressSelector(state),
uri_schemes: state.mopidy.uri_schemes,
albums: librarySelector(state, 'albums'),
spotify_available: state.spotify.access_token,
google_available: (_state$mopidy = state.mopidy) === null || _state$mopidy === void 0 ? void 0 : (_state$mopidy$uri_sch = _state$mopidy.uri_schemes) === null || _state$mopidy$uri_sch === void 0 ? void 0 : _state$mopidy$uri_sch.includes('gmusic:'),
youtube_available: (_state$mopidy2 = state.mopidy) === null || _state$mopidy2 === void 0 ? void 0 : (_state$mopidy2$uri_sc = _state$mopidy2.uri_schemes) === null || _state$mopidy2$uri_sc === void 0 ? void 0 : _state$mopidy2$uri_sc.includes('ytmusic:'),
providers: providersSelector(state),
view: state.ui.library_albums_view,
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["getLibrarySource"])(state, 'albums'),
sort: state.ui.library_albums_sort,
@ -189589,6 +189639,18 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../util/selectors */ "./src/js/util/selectors.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); }
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."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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 _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); } }
@ -189692,14 +189754,13 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var _this$props2 = _this.props,
source = _this$props2.source,
providers = _this$props2.providers,
loadLibrary = _this$props2.coreActions.loadLibrary;
var uris = [];
if (source === 'all') {
uris = _this.sourceOptions().map(function (o) {
return o.value;
}).filter(function (u) {
return u !== 'all';
uris = providers.map(function (p) {
return p.uri;
});
} else {
uris.push(source);
@ -189712,49 +189773,12 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
});
});
_defineProperty(_assertThisInitialized(_this), "sourceOptions", function () {
var _this$props3 = _this.props,
spotify_available = _this$props3.spotify_available,
youtube_available = _this$props3.youtube_available,
google_available = _this$props3.google_available;
var options = [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('fields.filters.all')
}, {
value: 'local:directory?type=artist&role=albumartist',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('services.mopidy.local')
}];
if (youtube_available) {
options.push({
value: 'ytmusic:artist',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('services.youtube.title')
});
}
if (google_available) {
options.push({
value: 'gmusic:artist',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('services.google.title')
});
}
if (spotify_available) {
options.push({
value: 'spotify:library:artists',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('services.spotify.title')
});
}
return options;
});
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
var _this$props4 = _this.props,
sort = _this$props4.sort,
sort_reverse = _this$props4.sort_reverse,
view = _this$props4.view,
loading_progress = _this$props4.loading_progress;
var _this$props3 = _this.props,
sort = _this$props3.sort,
sort_reverse = _this$props3.sort_reverse,
view = _this$props3.view,
loading_progress = _this$props3.loading_progress;
var filter = _this.state.filter;
var artists = _this.props.artists;
@ -189803,7 +189827,9 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "render", function () {
var loading_progress = _this.props.loading_progress;
var _this$props4 = _this.props,
loading_progress = _this$props4.loading_progress,
providers = _this$props4.providers;
var view_options = [{
value: 'thumbnails',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('fields.filters.thumbnails')
@ -189871,7 +189897,15 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
name: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('fields.source'),
value: _this.props.source,
valueAsLabel: true,
options: _this.sourceOptions(),
options: [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_12__["i18n"])('fields.filters.all')
}].concat(_toConsumableArray(providers.map(function (p) {
return {
value: p.uri,
label: p.title
};
}))),
handleChange: function handleChange(value) {
_this.props.uiActions.set({
library_artists_source: value
@ -189949,16 +189983,13 @@ var LibraryArtists = /*#__PURE__*/function (_React$Component) {
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeLibrarySelector"])('artists');
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeProcessProgressSelector"])(processKeys);
var providersSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["makeProvidersSelector"])('artists');
var mapStateToProps = function mapStateToProps(state) {
var _state$mopidy, _state$mopidy$uri_sch, _state$mopidy2, _state$mopidy2$uri_sc;
return {
loading_progress: processProgressSelector(state),
uri_schemes: state.mopidy.uri_schemes,
spotify_available: state.spotify.access_token,
google_available: (_state$mopidy = state.mopidy) === null || _state$mopidy === void 0 ? void 0 : (_state$mopidy$uri_sch = _state$mopidy.uri_schemes) === null || _state$mopidy$uri_sch === void 0 ? void 0 : _state$mopidy$uri_sch.includes('gmusic:'),
youtube_available: (_state$mopidy2 = state.mopidy) === null || _state$mopidy2 === void 0 ? void 0 : (_state$mopidy2$uri_sc = _state$mopidy2.uri_schemes) === null || _state$mopidy2$uri_sc === void 0 ? void 0 : _state$mopidy2$uri_sc.includes('ytmusic:'),
providers: providersSelector(state),
artists: librarySelector(state, 'artists'),
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_15__["getLibrarySource"])(state, 'artists'),
sort: state.ui.library_artists_sort ? state.ui.library_artists_sort : null,
@ -191097,6 +191128,18 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../util/selectors */ "./src/js/util/selectors.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); }
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."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
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 _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); } }
@ -191156,9 +191199,7 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
var source = _this.props.source;
if (source !== prevSource) {
_this.getMopidyLibrary();
_this.getSpotifyLibrary();
_this.getLibraries();
}
});
@ -191166,9 +191207,7 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
var hideContextMenu = _this.props.uiActions.hideContextMenu;
hideContextMenu();
_this.getMopidyLibrary(true);
_this.getSpotifyLibrary(true);
_this.getLibraries(true);
});
_defineProperty(_assertThisInitialized(_this), "cancelRefresh", function () {
@ -191179,27 +191218,26 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
cancelProcess(processKeys);
});
_defineProperty(_assertThisInitialized(_this), "getMopidyLibrary", function () {
_defineProperty(_assertThisInitialized(_this), "getLibraries", function () {
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var _this$props = _this.props,
source = _this$props.source,
providers = _this$props.providers,
loadLibrary = _this$props.coreActions.loadLibrary;
if (source !== 'local' && source !== 'all') return;
loadLibrary('mopidy:library:tracks', 'tracks', {
forceRefetch: forceRefetch
});
});
var uris = [];
_defineProperty(_assertThisInitialized(_this), "getSpotifyLibrary", function () {
var forceRefetch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var _this$props2 = _this.props,
source = _this$props2.source,
spotify_available = _this$props2.spotify_available,
loadLibrary = _this$props2.coreActions.loadLibrary;
if (!spotify_available) return;
if (source !== 'spotify' && source !== 'all') return;
loadLibrary('spotify:library:tracks', 'tracks', {
forceRefetch: forceRefetch
if (source === 'all') {
uris = providers.map(function (p) {
return p.uri;
});
} else {
uris.push(source);
}
uris.forEach(function (uri) {
return loadLibrary(uri, 'tracks', {
forceRefetch: forceRefetch
});
});
});
@ -191214,10 +191252,10 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "setSort", function (value) {
var _this$props3 = _this.props,
sort = _this$props3.sort,
sort_reverse = _this$props3.sort_reverse,
set = _this$props3.uiActions.set;
var _this$props2 = _this.props,
sort = _this$props2.sort,
sort_reverse = _this$props2.sort_reverse,
set = _this$props2.uiActions.set;
var reverse = false;
if (sort === value) reverse = !sort_reverse;
set({
@ -191227,11 +191265,11 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "playAll", function () {
var _this$props4 = _this.props,
sort = _this$props4.sort,
sort_reverse = _this$props4.sort_reverse,
playURIs = _this$props4.mopidyActions.playURIs,
hideContextMenu = _this$props4.uiActions.hideContextMenu;
var _this$props3 = _this.props,
sort = _this$props3.sort,
sort_reverse = _this$props3.sort_reverse,
playURIs = _this$props3.mopidyActions.playURIs,
hideContextMenu = _this$props3.uiActions.hideContextMenu;
var tracks = _this.props.tracks;
var filter = _this.state.filter;
if (!tracks || !tracks.length) return;
@ -191249,10 +191287,10 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
});
_defineProperty(_assertThisInitialized(_this), "renderView", function () {
var _this$props5 = _this.props,
sort = _this$props5.sort,
sort_reverse = _this$props5.sort_reverse,
loading_progress = _this$props5.loading_progress;
var _this$props4 = _this.props,
sort = _this$props4.sort,
sort_reverse = _this$props4.sort_reverse,
loading_progress = _this$props4.loading_progress;
var filter = _this.state.filter;
var tracks = _this.props.tracks;
@ -191286,29 +191324,14 @@ 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$props5 = _this.props,
sort = _this$props5.sort,
source = _this$props5.source,
providers = _this$props5.providers,
sort_reverse = _this$props5.sort_reverse,
uiActions = _this$props5.uiActions,
loading_progress = _this$props5.loading_progress;
var filter = _this.state.filter;
var source_options = [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.filters.all')
}, {
value: 'local',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.mopidy.local')
}];
if (spotify_available) {
source_options.push({
value: 'spotify',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('services.spotify.title')
});
}
var sort_options = [{
value: null,
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.filters.as_loaded')
@ -191353,7 +191376,15 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
name: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.source'),
value: source,
valueAsLabel: true,
options: source_options,
options: [{
value: 'all',
label: Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('fields.filters.all')
}].concat(_toConsumableArray(providers.map(function (p) {
return {
value: p.uri,
label: p.title
};
}))),
handleChange: function handleChange(val) {
uiActions.set({
library_tracks_source: val
@ -191439,8 +191470,7 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
value: function componentDidMount() {
var setWindowTitle = this.props.uiActions.setWindowTitle;
setWindowTitle(Object(_locale__WEBPACK_IMPORTED_MODULE_15__["i18n"])('library.tracks.title'));
this.getMopidyLibrary();
this.getSpotifyLibrary();
this.getLibraries();
}
}]);
@ -191449,15 +191479,16 @@ var LibraryTracks = /*#__PURE__*/function (_React$Component) {
var librarySelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeLibrarySelector"])('tracks');
var processProgressSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProcessProgressSelector"])(processKeys);
var providersSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["makeProvidersSelector"])('tracks');
var mapStateToProps = function mapStateToProps(state) {
return {
loading_progress: processProgressSelector(state),
mopidy_uri_schemes: state.mopidy.uri_schemes,
tracks: librarySelector(state),
spotify_available: state.spotify.access_token,
tracks: librarySelector(state, 'tracks'),
view: state.ui.library_tracks_view,
source: Object(_util_selectors__WEBPACK_IMPORTED_MODULE_17__["getLibrarySource"])(state, 'tracks'),
providers: providersSelector(state),
sort: state.ui.library_tracks_sort,
sort_reverse: state.ui.library_tracks_sort_reverse
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -115,7 +115,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1618625262";
var build = "1619082454";
var version = "3.57.6";
// Construct the script tag