Merge branch 'develop'

This commit is contained in:
James Barnsley
2020-11-03 06:40:31 +13:00
14 changed files with 118 additions and 88 deletions

View File

@ -1 +1 @@
3.53.0
3.53.1

View File

@ -3,7 +3,7 @@ import pathlib
from mopidy import config, ext
__version__ = "3.53.0"
__version__ = "3.53.1"
logger = logging.getLogger(__name__)

View File

@ -108200,12 +108200,15 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
_defineProperty(_assertThisInitialized(_this), "renderSecondary", function (_ref) {
var uri = _ref.uri,
_ref$tracks_total = _ref.tracks_total,
tracks_total = _ref$tracks_total === void 0 ? 0 : _ref$tracks_total,
tracks = _ref.tracks,
tracks_total = _ref.tracks_total,
_ref$tracks = _ref.tracks,
tracks = _ref$tracks === void 0 ? [] : _ref$tracks,
followers = _ref.followers,
albums_uris = _ref.albums_uris,
artists = _ref.artists;
var trackCount = 0;
if (tracks) trackCount = tracks.length;
if (tracks_total) trackCount = tracks_total;
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["uriType"])(uri)) {
case 'playlist':
@ -108215,7 +108218,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "GridItem"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_7__["I18n"], {
path: "specs.tracks",
count: tracks.length || tracks_total,
count: trackCount,
"data-qa-node": "I18n",
"data-qa-file": "GridItem"
}));
@ -112627,29 +112630,47 @@ var Services = /*#__PURE__*/function (_React$Component) {
_this$props2$snapcast = _this$props2.snapcast,
snapcastEnabled = _this$props2$snapcast.enabled,
snapcastConnected = _this$props2$snapcast.connected;
var spotify_icon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
var spotify_icon = spotifyUser ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
className: "menu-item__thumbnail",
circle: true,
size: "small",
images: spotifyUser.images,
"data-qa-node": "Thumbnail",
"data-qa-file": "Services"
}) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
className: "menu-item__thumbnail",
circle: true,
size: "small",
images: spotifyUser ? spotifyUser.images : null,
"data-qa-node": "Thumbnail",
"data-qa-file": "Services"
});
var lastfm_icon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
var lastfm_icon = lastfmUser ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
className: "menu-item__thumbnail",
circle: true,
size: "small",
images: lastfmUser ? lastfmUser.images : null,
images: lastfmUser.images,
"data-qa-node": "Thumbnail",
"data-qa-file": "Services"
}) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_5__["default"], {
type: "fontawesome",
name: "lastfm",
className: "menu-item__icon",
"data-qa-node": "Icon",
"data-qa-file": "Services"
});
var genius_icon = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
var genius_icon = geniusUser ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Thumbnail__WEBPACK_IMPORTED_MODULE_4__["default"], {
className: "menu-item__thumbnail",
circle: true,
size: "small",
images: geniusUser ? geniusUser.images : null,
images: geniusUser.images,
"data-qa-node": "Thumbnail",
"data-qa-file": "Services"
}) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_5__["default"], {
name: "genius",
type: "svg",
className: "menu-item__icon",
"data-qa-node": "Icon",
"data-qa-file": "Services"
});
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
className: "sub-tabs__menu menu",
@ -135454,19 +135475,19 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _components_Fields_PinButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../components/Fields/PinButton */ "./src/js/components/Fields/PinButton.js");
/* harmony import */ var _components_NiceNumber__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../components/NiceNumber */ "./src/js/components/NiceNumber.js");
/* harmony import */ var _components_Dater__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../components/Dater */ "./src/js/components/Dater.js");
/* harmony import */ var _components_LazyLoadListener__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../components/LazyLoadListener */ "./src/js/components/LazyLoadListener.js");
/* harmony import */ var _components_Fields_FollowButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../components/Fields/FollowButton */ "./src/js/components/Fields/FollowButton.js");
/* harmony import */ var _components_Loader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/Loader */ "./src/js/components/Loader.js");
/* harmony import */ var _components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/ContextMenuTrigger */ "./src/js/components/ContextMenuTrigger.js");
/* harmony import */ var _components_URILink__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../components/URILink */ "./src/js/components/URILink.js");
/* harmony import */ var _components_Icon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../components/Icon */ "./src/js/components/Icon.js");
/* harmony import */ var _services_core_actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../services/core/actions */ "./src/js/services/core/actions.js");
/* harmony import */ var _services_ui_actions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../services/ui/actions */ "./src/js/services/ui/actions.js");
/* harmony import */ var _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../services/mopidy/actions */ "./src/js/services/mopidy/actions.js");
/* harmony import */ var _services_spotify_actions__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../services/spotify/actions */ "./src/js/services/spotify/actions.js");
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../util/helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../locale */ "./src/js/locale/index.js");
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../util/selectors */ "./src/js/util/selectors.js");
/* harmony import */ var _components_Fields_FollowButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../components/Fields/FollowButton */ "./src/js/components/Fields/FollowButton.js");
/* harmony import */ var _components_Loader__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../components/Loader */ "./src/js/components/Loader.js");
/* harmony import */ var _components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../components/ContextMenuTrigger */ "./src/js/components/ContextMenuTrigger.js");
/* harmony import */ var _components_URILink__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../components/URILink */ "./src/js/components/URILink.js");
/* harmony import */ var _components_Icon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../components/Icon */ "./src/js/components/Icon.js");
/* harmony import */ var _services_core_actions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../services/core/actions */ "./src/js/services/core/actions.js");
/* harmony import */ var _services_ui_actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../services/ui/actions */ "./src/js/services/ui/actions.js");
/* harmony import */ var _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../services/mopidy/actions */ "./src/js/services/mopidy/actions.js");
/* harmony import */ var _services_spotify_actions__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../services/spotify/actions */ "./src/js/services/spotify/actions.js");
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../util/helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../locale */ "./src/js/locale/index.js");
/* harmony import */ var _util_selectors__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../util/selectors */ "./src/js/util/selectors.js");
/* harmony import */ var _util_arrays__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../util/arrays */ "./src/js/util/arrays.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 _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
@ -135553,9 +135574,9 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
_defineProperty(_assertThisInitialized(_this), "setWindowTitle", function () {
var playlist = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.props.playlist;
var setWindowTitle = _this.props.uiActions.setWindowTitle;
setWindowTitle(playlist ? Object(_locale__WEBPACK_IMPORTED_MODULE_21__["i18n"])('playlist.title_window', {
setWindowTitle(playlist ? Object(_locale__WEBPACK_IMPORTED_MODULE_20__["i18n"])('playlist.title_window', {
name: playlist.name
}) : Object(_locale__WEBPACK_IMPORTED_MODULE_21__["i18n"])('playlist.title'));
}) : Object(_locale__WEBPACK_IMPORTED_MODULE_20__["i18n"])('playlist.title'));
});
_defineProperty(_assertThisInitialized(_this), "handleContextMenu", function (e) {
@ -135603,7 +135624,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
_defineProperty(_assertThisInitialized(_this), "inLibrary", function () {
var uri = _this.props.uri;
var libraryName = "".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["uriSource"])(uri), "_library_playlists");
var libraryName = "".concat(Object(_util_helpers__WEBPACK_IMPORTED_MODULE_19__["uriSource"])(uri), "_library_playlists");
var library = _this.props[libraryName];
if (!library) return false;
return library.indexOf(uri) > -1;
@ -135631,7 +135652,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
name = _this$props8$playlist.name,
in_library = _this$props8$playlist.in_library;
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["uriSource"])(uri)) {
switch (Object(_util_helpers__WEBPACK_IMPORTED_MODULE_19__["uriSource"])(uri)) {
case 'm3u':
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
className: "actions",
@ -135646,7 +135667,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.play",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
@ -135658,7 +135679,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.edit",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
@ -135669,7 +135690,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "PinButton",
"data-qa-file": "Playlist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_13__["default"], {
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_12__["default"], {
onTrigger: _this.handleContextMenu,
"data-qa-node": "ContextMenuTrigger",
"data-qa-file": "Playlist"
@ -135690,7 +135711,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.play",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
@ -135702,7 +135723,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.edit",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
@ -135713,7 +135734,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "PinButton",
"data-qa-file": "Playlist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_13__["default"], {
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_12__["default"], {
onTrigger: _this.handleContextMenu,
"data-qa-node": "ContextMenuTrigger",
"data-qa-file": "Playlist"
@ -135733,11 +135754,11 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.play",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_FollowButton__WEBPACK_IMPORTED_MODULE_11__["default"], {
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Fields_FollowButton__WEBPACK_IMPORTED_MODULE_10__["default"], {
uri: uri,
is_following: in_library,
"data-qa-node": "FollowButton",
@ -135749,7 +135770,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "PinButton",
"data-qa-file": "Playlist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_13__["default"], {
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_12__["default"], {
onTrigger: _this.handleContextMenu,
"data-qa-node": "ContextMenuTrigger",
"data-qa-file": "Playlist"
@ -135769,7 +135790,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "Button",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "actions.play",
"data-qa-node": "I18n",
"data-qa-file": "Playlist"
@ -135780,7 +135801,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
},
"data-qa-node": "PinButton",
"data-qa-file": "Playlist"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_13__["default"], {
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_ContextMenuTrigger__WEBPACK_IMPORTED_MODULE_12__["default"], {
onTrigger: _this.handleContextMenu,
"data-qa-node": "ContextMenuTrigger",
"data-qa-file": "Playlist"
@ -135797,7 +135818,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
if (!playlist) {
if (loading) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_12__["default"], {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_11__["default"], {
body: true,
loading: true,
"data-qa-node": "Loader",
@ -135813,7 +135834,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", {
"data-qa-node": "p",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "errors.uri_not_found",
uri: uri,
"data-qa-node": "I18n",
@ -135865,15 +135886,15 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
className: "source",
"data-qa-node": "li",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_15__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Icon__WEBPACK_IMPORTED_MODULE_14__["default"], {
type: "fontawesome",
name: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["sourceIcon"])(playlist.uri),
name: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_19__["sourceIcon"])(playlist.uri),
"data-qa-node": "Icon",
"data-qa-file": "Playlist"
})), playlist.user && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
"data-qa-node": "li",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_14__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_13__["default"], {
type: "user",
uri: playlist.user.uri,
"data-qa-node": "URILink",
@ -135881,7 +135902,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
}, playlist.user.name)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
"data-qa-node": "li",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "specs.tracks",
count: playlist.tracks ? playlist.tracks.length : 0,
"data-qa-node": "I18n",
@ -135897,7 +135918,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
})), !slim_mode && playlist.followers !== undefined && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
"data-qa-node": "li",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "specs.followers",
count: Object(_components_NiceNumber__WEBPACK_IMPORTED_MODULE_8__["nice_number"])(playlist.followers),
"data-qa-node": "I18n",
@ -135905,7 +135926,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
})), !slim_mode && playlist.last_modified_date && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
"data-qa-node": "li",
"data-qa-file": "Playlist"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_21__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_20__["I18n"], {
path: "specs.edited",
date: Object(_components_Dater__WEBPACK_IMPORTED_MODULE_9__["dater"])('ago', playlist.last_modified_date),
"data-qa-node": "I18n",
@ -135923,7 +135944,7 @@ var Playlist = /*#__PURE__*/function (_React$Component) {
reorderTracks: _this.reorderTracks,
"data-qa-node": "TrackList",
"data-qa-file": "Playlist"
})), loading && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_12__["default"], {
})), loading && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Loader__WEBPACK_IMPORTED_MODULE_11__["default"], {
body: true,
loading: true,
"data-qa-node": "Loader",
@ -135973,10 +135994,10 @@ var mapStateToProps = function mapStateToProps(state, ownProps) {
_state$mopidy = state.mopidy;
_state$mopidy = _state$mopidy === void 0 ? {} : _state$mopidy;
var local_library_playlists = _state$mopidy.library_playlists;
var uri = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["decodeMopidyUri"])(ownProps.match.params.uri);
var playlistId = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_20__["getFromUri"])('playlistid', uri);
var itemSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_22__["makeItemSelector"])(uri);
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_22__["makeLoadingSelector"])(["(.*)".concat(playlistId, "(?!.*(following))(.*)")]);
var uri = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_19__["decodeMopidyUri"])(ownProps.match.params.uri);
var playlistId = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_19__["getFromUri"])('playlistid', uri);
var itemSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_21__["makeItemSelector"])(uri);
var loadingSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_21__["makeLoadingSelector"])(["(.*)".concat(playlistId, "(?!.*(following))(.*)")]);
return {
uri: uri,
allow_reporting: allow_reporting,
@ -135993,10 +136014,10 @@ var mapStateToProps = function mapStateToProps(state, ownProps) {
var mapDispatchToProps = function mapDispatchToProps(dispatch) {
return {
coreActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_core_actions__WEBPACK_IMPORTED_MODULE_16__, dispatch),
uiActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_ui_actions__WEBPACK_IMPORTED_MODULE_17__, dispatch),
mopidyActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_18__, dispatch),
spotifyActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_spotify_actions__WEBPACK_IMPORTED_MODULE_19__, dispatch)
coreActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_core_actions__WEBPACK_IMPORTED_MODULE_15__, dispatch),
uiActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_ui_actions__WEBPACK_IMPORTED_MODULE_16__, dispatch),
mopidyActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_17__, dispatch),
spotifyActions: Object(redux__WEBPACK_IMPORTED_MODULE_2__["bindActionCreators"])(_services_spotify_actions__WEBPACK_IMPORTED_MODULE_18__, dispatch)
};
};

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,8 +106,8 @@
// Release details
// These are automatically injected to built HTML
var build = "1603873501";
var version = "3.53.0";
var build = "1604338606";
var version = "3.53.1";
// Construct the script tag
var js = document.createElement("script");

View File

@ -1,5 +1,5 @@
{
"manifest_version": "3.53.0",
"manifest_version": "3.53.1",
"short_name": "Iris",
"name": "Iris",
"icons": [

View File

@ -1,6 +1,6 @@
{
"name": "mopidy-iris",
"version": "3.53.0",
"version": "3.53.1",
"description": "Mopidy HTTP interface",
"repository": "https://github.com/jaedb/iris",
"author": "James Barnsley <james@barnsley.nz>",

View File

@ -1,6 +1,6 @@
[metadata]
name = Mopidy-Iris
version = 3.53.0
version = 3.53.1
url = https://github.com/jaedb/iris
author = James Barnsley
author_email = james@barnsley.nz

View File

@ -55,17 +55,21 @@ class GridItem extends React.Component {
renderSecondary = ({
uri,
tracks_total = 0,
tracks,
tracks_total,
tracks = [],
followers,
albums_uris,
artists,
}) => {
let trackCount = 0;
if (tracks) trackCount = tracks.length;
if (tracks_total) trackCount = tracks_total;
switch (uriType(uri)) {
case 'playlist':
return (
<span className="grid__item__secondary__content">
<I18n path="specs.tracks" count={tracks.length || tracks_total} />
<I18n path="specs.tracks" count={trackCount} />
</span>
);

View File

@ -299,31 +299,37 @@ class Services extends React.Component {
}
} = this.props;
const spotify_icon = (
const spotify_icon = spotifyUser ? (
<Thumbnail
className="menu-item__thumbnail"
circle
size="small"
images={spotifyUser ? spotifyUser.images : null}
images={spotifyUser.images}
/>
) : (
<Thumbnail className="menu-item__thumbnail" circle size="small" />
);
const lastfm_icon = (
const lastfm_icon = lastfmUser ? (
<Thumbnail
className="menu-item__thumbnail"
circle
size="small"
images={lastfmUser ? lastfmUser.images : null}
images={lastfmUser.images}
/>
) : (
<Icon type="fontawesome" name="lastfm" className="menu-item__icon" />
);
const genius_icon = (
const genius_icon = geniusUser ? (
<Thumbnail
className="menu-item__thumbnail"
circle
size="small"
images={geniusUser ? geniusUser.images : null}
images={geniusUser.images}
/>
) : (
<Icon name="genius" type="svg" className="menu-item__icon" />
);
return (

View File

@ -77,27 +77,27 @@ fields:
followers: Followers
popularity: Popularity
time:
seconds:
seconds:
short: secs
singular: second
plural: seconds
minutes:
minutes:
short: mins
singular: minute
plural: minutes
hours:
hours:
short: hrs
singular: hour
plural: hours
days:
days:
short: days
singular: day
plural: days
weeks:
weeks:
short: wks
singular: week
plural: weeks
years:
years:
short: yrs
singular: year
plural: years

View File

@ -9,7 +9,6 @@ import Thumbnail from '../components/Thumbnail';
import PinButton from '../components/Fields/PinButton';
import { nice_number } from '../components/NiceNumber';
import { Dater, dater } from '../components/Dater';
import LazyLoadListener from '../components/LazyLoadListener';
import FollowButton from '../components/Fields/FollowButton';
import Loader from '../components/Loader';
import ContextMenuTrigger from '../components/ContextMenuTrigger';
@ -22,12 +21,12 @@ import * as spotifyActions from '../services/spotify/actions';
import {
uriSource,
getFromUri,
isLoading,
sourceIcon,
decodeMopidyUri,
} from '../util/helpers';
import { i18n, I18n } from '../locale';
import { makeItemSelector, makeLoadingSelector } from '../util/selectors';
import { sortItems } from '../util/arrays';
class Playlist extends React.Component {
constructor(props) {

View File

@ -247,7 +247,7 @@ class Settings extends React.Component {
<I18n path="settings.interface.title" />
<a name="interface" />
</h4>
<div className="field dropdown">
<div className="name"><I18n path="settings.interface.language.label" /></div>
<div className="input">