Merge branch 'feat/decoupling-uri-type' into develop

This commit is contained in:
James Barnsley
2021-01-09 22:55:27 +13:00
22 changed files with 152 additions and 127 deletions

View File

@ -98931,7 +98931,8 @@ var Button = function Button(_ref) {
if (noHover) classNames.push('no-hover');
var Element = 'button';
if (to) Element = _Link__WEBPACK_IMPORTED_MODULE_1__["default"];
if (uri) Element = _URILink__WEBPACK_IMPORTED_MODULE_2__["default"];
if (uri) Element = _URILink__WEBPACK_IMPORTED_MODULE_2__["default"]; // MISSING URI TYPE
if (href) Element = 'a';
var onClick = function onClick(e) {
@ -101533,6 +101534,7 @@ var AddSeedField = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "AddSeedField"
}, ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_3__["default"], {
items: item.artists,
type: "artist",
nolinks: true,
"data-qa-node": "LinksSentence",
"data-qa-file": "AddSeedField"
@ -105386,6 +105388,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
}, artists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
nolinks: true,
items: artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "GridItem"
}));
@ -105398,6 +105401,7 @@ var GridItem = /*#__PURE__*/function (_React$Component) {
}, artists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
nolinks: true,
items: item.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "GridItem"
}), followers && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_7__["I18n"], {
@ -106273,7 +106277,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _URILink__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./URILink */ "./src/js/components/URILink.js");
/* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(function (_ref) {
var LinksSentence = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(function (_ref) {
var items = _ref.items,
className = _ref.className,
nolinks = _ref.nolinks;
@ -106288,7 +106292,8 @@ __webpack_require__.r(__webpack_exports__);
"data-qa-file": "LinksSentence"
}, items.map(function (_ref2, index) {
var name = _ref2.name,
uri = _ref2.uri;
uri = _ref2.uri,
type = _ref2.type;
if (!name) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "LinksSentence"
@ -106315,6 +106320,7 @@ __webpack_require__.r(__webpack_exports__);
var 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,
"data-qa-node": "URILink",
"data-qa-file": "LinksSentence"
}, name);
@ -106326,7 +106332,8 @@ __webpack_require__.r(__webpack_exports__);
"data-qa-file": "LinksSentence"
}, content, separator);
}));
}));
});
/* harmony default export */ __webpack_exports__["default"] = (LinksSentence);
/***/ }),
@ -106609,6 +106616,7 @@ var ListItem = /*#__PURE__*/function (_React$Component) {
array = item.artists_uris;
if (Array.isArray(value)) return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_1__["default"], {
items: value,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "ListItem"
});
@ -108360,6 +108368,7 @@ var PlaybackControls = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "PlaybackControls"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_9__["default"], {
items: transition_track.artists,
type: "artist",
nolinks: true,
"data-qa-node": "LinksSentence",
"data-qa-file": "PlaybackControls"
@ -108407,6 +108416,7 @@ var PlaybackControls = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "PlaybackControls"
}, current_track && current_track.artists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_9__["default"], {
items: current_track.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "PlaybackControls"
}) || stream_title && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
@ -109169,6 +109179,7 @@ var SearchResults = function SearchResults(_ref) {
"data-qa-file": "SearchResults"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_3__["default"], {
uri: "iris:search:all:".concat(encodedTerm),
type: "search",
"data-qa-node": "URILink",
"data-qa-file": "SearchResults"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
@ -109186,6 +109197,7 @@ var SearchResults = function SearchResults(_ref) {
"data-qa-file": "SearchResults"
})), all && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_3__["default"], {
uri: "iris:search:".concat(type, ":").concat(encodedTerm),
type: "search",
"data-qa-node": "URILink",
"data-qa-file": "SearchResults"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
@ -109272,23 +109284,14 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js");
/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js");
/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Link */ "./src/js/components/Link.js");
/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Icon */ "./src/js/components/Icon.js");
/* harmony import */ var _URILink__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./URILink */ "./src/js/components/URILink.js");
/* harmony import */ var _Fields_TextField__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Fields/TextField */ "./src/js/components/Fields/TextField.js");
/* harmony import */ var _util_arrays__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/arrays */ "./src/js/util/arrays.js");
/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Button */ "./src/js/components/Button.js");
/* harmony import */ var _services_ui_actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../services/ui/actions */ "./src/js/services/ui/actions.js");
/* harmony import */ var _services_core_actions__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../services/core/actions */ "./src/js/services/core/actions.js");
/* harmony import */ var _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../services/mopidy/actions */ "./src/js/services/mopidy/actions.js");
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../util/helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../locale */ "./src/js/locale/index.js");
/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Link */ "./src/js/components/Link.js");
/* harmony import */ var _Icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Icon */ "./src/js/components/Icon.js");
/* harmony import */ var _Fields_TextField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Fields/TextField */ "./src/js/components/Fields/TextField.js");
/* harmony import */ var _util_arrays__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/arrays */ "./src/js/util/arrays.js");
/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Button */ "./src/js/components/Button.js");
/* harmony import */ var _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../services/mopidy/actions */ "./src/js/services/mopidy/actions.js");
/* harmony import */ var _util_helpers__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../util/helpers */ "./src/js/util/helpers.js");
/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../locale */ "./src/js/locale/index.js");
@ -109318,7 +109321,7 @@ var Servers = function Servers(_ref) {
pusherConnecting = _store$getState$pushe.connecting;
var addServer = function addServer() {
var action = _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["addServer"]();
var action = _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["addServer"]();
dispatch(action);
history.push("/settings/servers/".concat(action.server.id));
};
@ -109333,12 +109336,12 @@ var Servers = function Servers(_ref) {
className: "menu__inner",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["indexToArray"])(servers).map(function (server) {
}, Object(_util_arrays__WEBPACK_IMPORTED_MODULE_5__["indexToArray"])(servers).map(function (server) {
var status = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
className: "status mid_grey-text",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.inactive",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109350,7 +109353,7 @@ var Servers = function Servers(_ref) {
className: "status mid_grey-text",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.connecting",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109360,7 +109363,7 @@ var Servers = function Servers(_ref) {
className: "status red-text",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.disconnected",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109370,7 +109373,7 @@ var Servers = function Servers(_ref) {
className: "status green-text",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.connected",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109378,7 +109381,7 @@ var Servers = function Servers(_ref) {
}
}
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Link__WEBPACK_IMPORTED_MODULE_3__["default"], {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Link__WEBPACK_IMPORTED_MODULE_2__["default"], {
history: history,
className: "menu-item",
activeClassName: "menu-item--active",
@ -109391,9 +109394,9 @@ var Servers = function Servers(_ref) {
className: "menu-item__inner",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_4__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_3__["default"], {
className: "menu-item__icon",
name: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__["iconFromKeyword"])(server.name) || 'dns',
name: Object(_util_helpers__WEBPACK_IMPORTED_MODULE_8__["iconFromKeyword"])(server.name) || 'dns',
"data-qa-node": "Icon",
"data-qa-file": "Servers"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
@ -109410,7 +109413,7 @@ var Servers = function Servers(_ref) {
className: "menu-item__inner",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_4__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Icon__WEBPACK_IMPORTED_MODULE_3__["default"], {
className: "menu-item__icon",
name: "add",
"data-qa-node": "Icon",
@ -109419,7 +109422,7 @@ var Servers = function Servers(_ref) {
className: "menu-item__title",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "actions.add",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109427,7 +109430,7 @@ var Servers = function Servers(_ref) {
className: "status mid_grey-text",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.new_server",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109440,11 +109443,11 @@ var Servers = function Servers(_ref) {
if (!server) return null;
var remove = function remove() {
dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["removeServer"](server.id));
dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["removeServer"](server.id));
};
var setAsCurrent = function setAsCurrent() {
dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["setCurrentServer"](server));
dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["setCurrentServer"](server));
};
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
@ -109459,7 +109462,7 @@ var Servers = function Servers(_ref) {
className: "name",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.name",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109467,11 +109470,11 @@ var Servers = function Servers(_ref) {
className: "input",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_6__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: "text",
value: server.name,
onChange: function onChange(value) {
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["updateServer"]({
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["updateServer"]({
id: server.id,
name: value
}));
@ -109487,7 +109490,7 @@ var Servers = function Servers(_ref) {
className: "name",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.host",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109495,10 +109498,10 @@ var Servers = function Servers(_ref) {
className: "input",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_6__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_4__["default"], {
value: server.host,
onChange: function onChange(value) {
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["updateServer"]({
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["updateServer"]({
id: server.id,
host: value
}));
@ -109514,7 +109517,7 @@ var Servers = function Servers(_ref) {
className: "name",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.port",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109522,11 +109525,11 @@ var Servers = function Servers(_ref) {
className: "input",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_6__["default"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_TextField__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: "text",
value: server.port,
onChange: function onChange(value) {
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["updateServer"]({
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["updateServer"]({
id: server.id,
port: value
}));
@ -109542,7 +109545,7 @@ var Servers = function Servers(_ref) {
className: "name",
"data-qa-node": "div",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.encryption.label",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109559,7 +109562,7 @@ var Servers = function Servers(_ref) {
value: server.ssl,
checked: server.ssl,
onChange: function onChange() {
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_11__["updateServer"]({
return dispatch(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_7__["updateServer"]({
id: server.id,
ssl: !server.ssl
}));
@ -109570,7 +109573,7 @@ var Servers = function Servers(_ref) {
className: "label tooltip",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.encryption.sublabel",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -109578,11 +109581,11 @@ var Servers = function Servers(_ref) {
className: "tooltip__content",
"data-qa-node": "span",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.encryption.description",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
})))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_8__["Button"], {
})))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_6__["Button"], {
type: "primary",
onClick: setAsCurrent,
tracking: {
@ -109592,11 +109595,11 @@ var Servers = function Servers(_ref) {
},
"data-qa-node": "Button",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "settings.servers.".concat(server.id === current_server ? 'reconnect' : 'switch'),
"data-qa-node": "I18n",
"data-qa-file": "Servers"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_8__["Button"], {
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_6__["Button"], {
type: "destructive",
disabled: server.id === current_server,
onClick: remove,
@ -109606,7 +109609,7 @@ var Servers = function Servers(_ref) {
},
"data-qa-node": "Button",
"data-qa-file": "Servers"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_13__["I18n"], {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_9__["I18n"], {
path: "actions.remove",
"data-qa-node": "I18n",
"data-qa-file": "Servers"
@ -113399,6 +113402,7 @@ var Track = /*#__PURE__*/function (_React$Component) {
case 'browse':
var link = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: type,
uri: added_from,
"data-qa-node": "URILink",
"data-qa-file": "Track"
@ -113411,6 +113415,7 @@ var Track = /*#__PURE__*/function (_React$Component) {
case 'search':
var link = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: type,
uri: added_from,
"data-qa-node": "URILink",
"data-qa-file": "Track"
@ -113508,6 +113513,7 @@ var Track = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Track"
}, track.artists ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_LinksSentence__WEBPACK_IMPORTED_MODULE_2__["default"], {
items: track.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "Track"
}) : '-'));
@ -114337,8 +114343,9 @@ __webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = (/*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_0__["memo"])(function (props) {
var to = null;
var uri = props.uri;
var uriType = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["uriType"])(uri);
var uri = props.uri,
type = props.type;
var uriType = type || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_2__["uriType"])(uri);
if (!props.unencoded) {
uri = encodeURIComponent(uri);
@ -115610,6 +115617,7 @@ var CoreMiddleware = function () {
"data-qa-node": "I18n",
"data-qa-file": "middleware"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_5__["default"], {
type: "playlist",
uri: key,
"data-qa-node": "URILink",
"data-qa-file": "middleware"
@ -117308,6 +117316,7 @@ function loveTrack(uri) {
"data-qa-node": "span",
"data-qa-file": "actions"
}, "Loved ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: "track",
uri: uri,
"data-qa-node": "URILink",
"data-qa-file": "actions"
@ -123127,6 +123136,7 @@ function following(uri) {
"data-qa-node": "span",
"data-qa-file": "actions"
}, "Removed ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: type,
uri: uri,
"data-qa-node": "URILink",
"data-qa-file": "actions"
@ -123139,6 +123149,7 @@ function following(uri) {
"data-qa-node": "span",
"data-qa-file": "actions"
}, "Added ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
type: type,
uri: uri,
"data-qa-node": "URILink",
"data-qa-file": "actions"
@ -126392,7 +126403,9 @@ var decodeUri = function decodeUri(rawUri) {
var formatAlbum = function formatAlbum(data) {
var album = {};
var album = {
type: 'album'
};
var fields = ['uri', 'in_library', 'provider', 'name', 'type', 'last_modified', 'added_at', 'release_date', 'listeners', 'play_count', 'wiki', 'wiki_publish_date', 'popularity', 'images', 'tracks', 'tracks_total', 'artists']; // Nested album object (eg in spotify library)
if (data && data.album && Object(_helpers__WEBPACK_IMPORTED_MODULE_1__["isObject"])(data.album)) {
@ -126459,7 +126472,9 @@ var formatAlbum = function formatAlbum(data) {
var formatArtist = function formatArtist(data) {
var artist = {};
var artist = {
type: 'artist'
};
var fields = ['uri', 'in_library', 'provider', 'mbid', 'name', 'type', 'popularity', 'followers', 'listeners', 'added_at', 'biography', 'biography_link', 'biography_publish_date', 'related_artists', 'albums_uris', 'tracks']; // Loop fields and import from data
for (var _i3 = 0, _fields3 = fields; _i3 < _fields3.length; _i3++) {
@ -126507,7 +126522,9 @@ var formatArtist = function formatArtist(data) {
var formatPlaylist = function formatPlaylist(data) {
var playlist = {};
var playlist = {
type: 'playlist'
};
var fields = ['uri', 'in_library', 'snapshot_id', 'provider', 'type', 'collaborative', 'public', 'name', 'description', 'images', 'popularity', 'followers', 'last_modified', 'can_edit', 'user', 'tracks', 'tracks_total']; // Loop fields and import from data
for (var _i4 = 0, _fields4 = fields; _i4 < _fields4.length; _i4++) {
@ -126580,7 +126597,9 @@ var formatPlaylist = function formatPlaylist(data) {
var formatUser = function formatUser(data) {
var user = {};
var user = {
type: 'user'
};
var fields = ['id', 'in_library', 'uri', 'provider', 'name', 'images', 'followers', 'playlists_uris', 'playlists_total', 'playlists_more']; // Loop fields and import from data
for (var _i5 = 0, _fields5 = fields; _i5 < _fields5.length; _i5++) {
@ -126630,7 +126649,9 @@ var formatUser = function formatUser(data) {
var formatTrack = function formatTrack(data) {
var track = {};
var track = {
type: 'track'
};
var fields = ['uri', 'in_library', 'tlid', 'provider', 'name', 'images', 'release_date', 'disc_number', 'track_number', 'disc_track', 'duration', 'followers', 'popularity', 'userloved', 'last_modified', 'added_at', 'is_explicit', 'is_local', 'lyrics', 'lyrics_path', 'lyrics_results', 'artists', // Array of simple records
'album' // Array of simple records
]; // Nested track object (eg in spotify playlist)
@ -126727,7 +126748,9 @@ var formatTrack = function formatTrack(data) {
var formatClient = function formatClient(data) {
var client = {};
var client = {
type: 'client'
};
var fields = ['id', 'connected', 'name', 'host_name', 'volume', 'mute', 'latency', 'power_on_command', 'power_off_command'];
for (var _i7 = 0, _fields7 = fields; _i7 < _fields7.length; _i7++) {
@ -126787,7 +126810,9 @@ var formatClient = function formatClient(data) {
var formatCategory = function formatCategory(data) {
var category = {};
var category = {
type: 'category'
};
var fields = ['id', 'uri', 'name', 'playlists_uris'];
for (var _i8 = 0, _fields8 = fields; _i8 < _fields8.length; _i8++) {
@ -126817,7 +126842,9 @@ var formatCategory = function formatCategory(data) {
var formatGroup = function formatGroup(data) {
var group = {};
var group = {
type: 'group'
};
var fields = ['id', 'name', 'mute', 'stream_id', 'clients_ids'];
for (var _i9 = 0, _fields9 = fields; _i9 < _fields9.length; _i9++) {
@ -131076,6 +131103,7 @@ var Album = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Album"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
items: album.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "Album"
})) : null, album.release_date ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", {
@ -133755,6 +133783,7 @@ var Artwork = function Artwork(_ref) {
"data-qa-node": "Icon",
"data-qa-file": "Queue"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_11__["default"], {
type: "album",
uri: album_uri,
className: "thumbnail__actions__item",
"data-qa-node": "URILink",
@ -133878,6 +133907,7 @@ var Queue = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Queue"
}, addedFromItems[0].images && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_11__["default"], {
uri: addedFromItems[0].uri,
type: addedFromItems[0].type,
className: "current-track__added-from__thumbnail",
"data-qa-node": "URILink",
"data-qa-file": "Queue"
@ -133894,6 +133924,7 @@ var Queue = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Queue"
}, 'Playing from ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_8__["default"], {
items: addedFromItems,
type: addedFromItems[0].type,
"data-qa-node": "LinksSentence",
"data-qa-file": "Queue"
}), uri_type === 'radio' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
@ -134024,13 +134055,9 @@ var Queue = /*#__PURE__*/function (_React$Component) {
}, current_track.name), !stream_title && !current_track && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "Queue"
}, "-")), current_track && current_track.artists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_8__["default"], {
className: "current-track__artists",
items: current_track.artists,
"data-qa-node": "LinksSentence",
"data-qa-file": "Queue"
}) || /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_8__["default"], {
}, "-")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_8__["default"], {
className: "current-track__artists",
items: current_track ? current_track.artists : null,
"data-qa-node": "LinksSentence",
"data-qa-file": "Queue"
}), _this.renderAddedFrom(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
@ -136281,6 +136308,7 @@ var Track = /*#__PURE__*/function (_React$Component) {
"data-qa-file": "Track"
}), track.artists && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_7__["default"], {
items: track.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "Track"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("ul", {
@ -141518,6 +141546,7 @@ var UriListItem = function UriListItem(_ref) {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_12__["default"], {
nolinks: true,
items: item.artists,
type: "artist",
"data-qa-node": "LinksSentence",
"data-qa-file": "AddToQueue"
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
@ -144440,12 +144469,10 @@ var KioskMode = /*#__PURE__*/function (_React$Component) {
}, current_track.name), !stream_title && !current_track && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "KioskMode"
}, "-")), current_track ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
}, "-")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
items: current_track ? current_track.artists : null,
type: "artist",
nolinks: true,
items: current_track.artists,
"data-qa-node": "LinksSentence",
"data-qa-file": "KioskMode"
}) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_6__["default"], {
"data-qa-node": "LinksSentence",
"data-qa-file": "KioskMode"
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {

File diff suppressed because one or more lines are too long

View File

@ -46,7 +46,7 @@ const Button = ({
let Element = 'button';
if (to) Element = Link;
if (uri) Element = URILink;
if (uri) Element = URILink; // MISSING URI TYPE
if (href) Element = 'a';
const onClick = (e) => {

View File

@ -118,7 +118,7 @@ class AddSeedField extends React.Component {
{type === 'tracks' && (
<span className="mid_grey-text">
{' '}
<LinksSentence items={item.artists} nolinks />
<LinksSentence items={item.artists} type="artist" nolinks />
</span>
)}
</div>

View File

@ -99,7 +99,7 @@ class AddSeedField extends React.Component {
{type == 'tracks' ? (
<span className="mid_grey-text">
{' '}
<LinksSentence items={item.artists} nolinks />
<LinksSentence items={item.artists} type="artist" nolinks />
</span>
) : null}
</div>

View File

@ -84,14 +84,14 @@ class GridItem extends React.Component {
case 'album':
return (
<span className="grid__item__secondary__content">
{artists && <LinksSentence nolinks items={artists} />}
{artists && <LinksSentence nolinks items={artists} type="artist" />}
</span>
);
default:
return (
<span className="grid__item__secondary__content">
{artists && <LinksSentence nolinks items={item.artists} /> }
{artists && <LinksSentence nolinks items={item.artists} type="artist" /> }
{followers && <I18n path="specs.followers" count={followers.toLocaleString()} />}
</span>
);

View File

@ -1,14 +1,13 @@
import React, { memo } from 'react';
import URILink from './URILink';
export default memo(({ items, className, nolinks }) => {
const LinksSentence = memo(({ items, className, nolinks }) => {
if (!items) return <span className={`${className} links-sentence`}>-</span>;
return (
<span className={`${className} links-sentence`}>
{
items.map(({ name, uri }, index) => {
items.map(({ name, uri, type }, index) => {
if (!name) return <span>-</span>;
let separator = null;
@ -27,6 +26,7 @@ export default memo(({ items, className, nolinks }) => {
<URILink
className="links-sentence__item links-sentence__item--link"
uri={uri}
type={type}
>
{name}
</URILink>
@ -44,3 +44,5 @@ export default memo(({ items, className, nolinks }) => {
</span>
);
});
export default LinksSentence;

View File

@ -107,7 +107,7 @@ export default class ListItem extends React.Component {
artists_total: total,
artists_uris: array,
} = item;
if (Array.isArray(value)) return <LinksSentence items={value} />;
if (Array.isArray(value)) return <LinksSentence items={value} type="artist" />;
if (!total && !array) return null;
return <I18n path="specs.artists" count={nice_number(total || array.length)} />;
}

View File

@ -237,7 +237,7 @@ class PlaybackControls extends React.Component {
{transition_track.name}
</div>
<div className="artist">
<LinksSentence items={transition_track.artists} nolinks />
<LinksSentence items={transition_track.artists} type="artist" nolinks />
</div>
</div>
</div>
@ -264,7 +264,7 @@ class PlaybackControls extends React.Component {
<div className="artist">
{
(current_track && current_track.artists
&& <LinksSentence items={current_track.artists} />)
&& <LinksSentence items={current_track.artists} type="artist" />)
|| (stream_title && <span className="links-sentence">{stream_title}</span>)
|| <LinksSentence />
}

View File

@ -58,7 +58,7 @@ const SearchResults = ({
<h4>
{!all && (
<span>
<URILink uri={`iris:search:all:${encodedTerm}`}>
<URILink uri={`iris:search:all:${encodedTerm}`} type="search">
<I18n path="search.title" />
</URILink>
{' '}
@ -68,7 +68,7 @@ const SearchResults = ({
</span>
)}
{all && (
<URILink uri={`iris:search:${type}:${encodedTerm}`}>
<URILink uri={`iris:search:${type}:${encodedTerm}`} type="search">
<I18n path={`search.${type}.title`} />
</URILink>
)}

View File

@ -1,17 +1,10 @@
import React, { memo, useCallback } from 'react';
import React from 'react';
import { useStore, useDispatch } from 'react-redux'
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import Link from './Link';
import Icon from './Icon';
import URILink from './URILink';
import TextField from './Fields/TextField';
import { indexToArray } from '../util/arrays';
import { Button } from './Button';
import * as uiActions from '../services/ui/actions';
import * as coreActions from '../services/core/actions';
import * as mopidyActions from '../services/mopidy/actions';
import { iconFromKeyword } from '../util/helpers';
import { I18n } from '../locale';

View File

@ -232,7 +232,7 @@ export default class Track extends React.Component {
case 'browse':
var link = (
<URILink uri={added_from}>
<URILink type={type} uri={added_from}>
<I18n path="library.browse.title" />
</URILink>
);
@ -240,7 +240,7 @@ export default class Track extends React.Component {
case 'search':
var link = (
<URILink uri={added_from}>
<URILink type={type} uri={added_from}>
<I18n path="search.title" />
</URILink>
);
@ -312,7 +312,7 @@ export default class Track extends React.Component {
if (track.artists) {
track_details.push(
<li className="details__item details__item--artists" key="artists">
{track.artists ? <LinksSentence items={track.artists} /> : '-'}
{track.artists ? <LinksSentence items={track.artists} type="artist" /> : '-'}
</li>,
);
} else if (track.playing && stream_title) {

View File

@ -4,8 +4,8 @@ import { uriType as uriTypeHelper } from '../util/helpers';
export default memo((props) => {
let to = null;
let { uri } = props;
const uriType = uriTypeHelper(uri);
let { uri, type } = props;
const uriType = type || uriTypeHelper(uri);
if (!props.unencoded) {
uri = encodeURIComponent(uri);
}

View File

@ -267,7 +267,7 @@ const CoreMiddleware = (function () {
store.dispatch(uiActions.createNotification({
content: (
<I18n path="actions.added_tracks_to" count={tracks_uris.length} contentAfter>
<URILink uri={key}>{asset ? asset.name : 'playlist'}</URILink>
<URILink type="playlist" uri={key}>{asset ? asset.name : 'playlist'}</URILink>
</I18n>
),
}));

View File

@ -387,7 +387,7 @@ export function loveTrack(uri) {
userloved: true,
}));
dispatch(uiActions.createNotification({
content: <span>Loved <URILink uri={uri}>{asset ? asset.name : type}</URILink></span>,
content: <span>Loved <URILink type="track" uri={uri}>{asset ? asset.name : type}</URILink></span>,
}));
},
);

View File

@ -779,12 +779,12 @@ export function following(uri, method = 'GET') {
if (method === 'DELETE') {
dispatch(coreActions.removeFromLibrary(`spotify:library:${type}s`, uri));
dispatch(uiActions.createNotification({
content: <span>Removed <URILink uri={uri}>{asset ? asset.name : type}</URILink> from library</span>,
content: <span>Removed <URILink type={type} uri={uri}>{asset ? asset.name : type}</URILink> from library</span>,
}));
} else if (method === 'PUT' || method === 'POST') {
dispatch(coreActions.addToLibrary(`spotify:library:${type}s`, asset));
dispatch(uiActions.createNotification({
content: <span>Added <URILink uri={uri}>{asset ? asset.name : type}</URILink> to library</span>,
content: <span>Added <URILink type={type} uri={uri}>{asset ? asset.name : type}</URILink> to library</span>,
}));
}
},

View File

@ -335,7 +335,7 @@ const decodeUri = (rawUri) => {
* @return obj
* */
const formatAlbum = function (data) {
const album = {};
const album = { type: 'album' };
const fields = [
'uri',
'in_library',
@ -412,7 +412,7 @@ const formatAlbum = function (data) {
* @return obj
* */
const formatArtist = function (data) {
const artist = {};
const artist = { type: 'artist' };
const fields = [
'uri',
'in_library',
@ -474,7 +474,7 @@ const formatArtist = function (data) {
* @return obj
* */
const formatPlaylist = function (data) {
const playlist = {};
const playlist = { type: 'playlist' };
const fields = [
'uri',
'in_library',
@ -563,7 +563,7 @@ const formatPlaylist = function (data) {
* @return obj
* */
const formatUser = function (data) {
const user = {};
const user = { type: 'user' };
const fields = [
'id',
'in_library',
@ -619,7 +619,7 @@ const formatUser = function (data) {
* @return obj
* */
const formatTrack = function (data) {
const track = {};
const track = { type: 'track' };
const fields = [
'uri',
'in_library',
@ -734,7 +734,7 @@ const formatTrack = function (data) {
* @return obj
* */
const formatClient = function (data) {
const client = {};
const client = { type: 'client' };
const fields = [
'id',
'connected',
@ -798,7 +798,7 @@ const formatClient = function (data) {
* @return obj
* */
const formatCategory = function (data) {
const category = {};
const category = { type: 'category' };
const fields = [
'id',
'uri',
@ -830,7 +830,7 @@ const formatCategory = function (data) {
* @return obj
* */
const formatGroup = function (data) {
const group = {};
const group = { type: 'group' };
const fields = [
'id',
'name',

View File

@ -260,7 +260,7 @@ class Album extends React.Component {
) : null}
{album.artists && album.artists.length > 0 ? (
<li>
<LinksSentence items={album.artists} />
<LinksSentence items={album.artists} type="artist" />
</li>
) : null}
{album.release_date ? (

View File

@ -42,7 +42,7 @@ const Artwork = ({
<Link to="/kiosk-mode" className="thumbnail__actions__item">
<Icon name="expand" type="fontawesome" />
</Link>
<URILink uri={album_uri} className="thumbnail__actions__item">
<URILink type="album" uri={album_uri} className="thumbnail__actions__item">
<Icon name="album" />
</URILink>
</Thumbnail>
@ -176,6 +176,7 @@ class Queue extends React.Component {
{addedFromItems[0].images && (
<URILink
uri={addedFromItems[0].uri}
type={addedFromItems[0].type}
className="current-track__added-from__thumbnail"
>
<Thumbnail
@ -188,7 +189,10 @@ class Queue extends React.Component {
)}
<div className="current-track__added-from__text">
{'Playing from '}
<LinksSentence items={addedFromItems} />
<LinksSentence
items={addedFromItems}
type={addedFromItems[0].type}
/>
{uri_type === 'radio' && (
<span className="flag flag--blue">
{i18n('now_playing.current_track.radio')}
@ -270,15 +274,10 @@ class Queue extends React.Component {
{!stream_title && !current_track && (<span>-</span>)}
</div>
{
(current_track && current_track.artists && (
<LinksSentence
className="current-track__artists"
items={current_track.artists}
/>
))
|| <LinksSentence className="current-track__artists" />
}
<LinksSentence
className="current-track__artists"
items={current_track ? current_track.artists : null}
/>
{this.renderAddedFrom()}

View File

@ -240,7 +240,7 @@ class Track extends React.Component {
{track.album && !track.album.uri ? track.album.name : null}
{!track.album && <I18n path="track.unknown_album" />}
<I18n path="common.by" />
{track.artists && <LinksSentence items={track.artists} />}
{track.artists && <LinksSentence items={track.artists} type="artist" />}
</h2>
<ul className="details">

View File

@ -30,7 +30,7 @@ const UriListItem = ({
{item ? item.name : <span className="mid_grey-text">{uri}</span>}
{item && item.artists && (
<I18n path="common.by" contentAfter>
<LinksSentence nolinks items={item.artists} />
<LinksSentence nolinks items={item.artists} type="artist" />
</I18n>
)}
<span className="mid_grey-text">{` (${type})`}</span>

View File

@ -210,7 +210,11 @@ class KioskMode extends React.Component {
{!stream_title && current_track && <span>{current_track.name}</span>}
{!stream_title && !current_track && <span>-</span>}
</div>
{ current_track ? <LinksSentence nolinks items={current_track.artists} /> : <LinksSentence /> }
<LinksSentence
items={current_track ? current_track.artists : null}
type="artist"
nolinks
/>
</div>
</div>