Dynamic library sources working; Need to expand and test other providers
This commit is contained in:
@ -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
26
mopidy_iris/static/app.min.js
vendored
26
mopidy_iris/static/app.min.js
vendored
File diff suppressed because one or more lines are too long
@ -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
|
||||
|
||||
Reference in New Issue
Block a user