Merge branch 'master' into develop
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -17,6 +17,7 @@ docker/mopidy.conf
|
||||
docker/data/
|
||||
docker/jellyfin/
|
||||
docker/icecast2.xml
|
||||
docker/meta_mopidy.py
|
||||
docker-compose.yml
|
||||
/.tox/
|
||||
/__tests__/__pycache__/
|
||||
|
||||
@ -1 +1 @@
|
||||
3.64.0
|
||||
3.64.1
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
exports[`<GridItem /> should handle album 1`] = `
|
||||
<div
|
||||
className="grid__item grid__item--album"
|
||||
className="grid__item grid__item--album "
|
||||
data-qa-file="GridItem"
|
||||
data-qa-node="div"
|
||||
>
|
||||
@ -96,7 +96,7 @@ exports[`<GridItem /> should handle album 1`] = `
|
||||
|
||||
exports[`<GridItem /> should handle artist 1`] = `
|
||||
<div
|
||||
className="grid__item grid__item--artist"
|
||||
className="grid__item grid__item--artist "
|
||||
data-qa-file="GridItem"
|
||||
data-qa-node="div"
|
||||
>
|
||||
@ -174,7 +174,7 @@ exports[`<GridItem /> should handle artist 1`] = `
|
||||
|
||||
exports[`<GridItem /> should handle playlist 1`] = `
|
||||
<div
|
||||
className="grid__item grid__item--playlist"
|
||||
className="grid__item grid__item--playlist "
|
||||
data-qa-file="GridItem"
|
||||
data-qa-node="div"
|
||||
>
|
||||
|
||||
@ -3,7 +3,7 @@ import pathlib
|
||||
|
||||
from mopidy import config, ext
|
||||
|
||||
__version__ = "3.64.0"
|
||||
__version__ = "3.64.1"
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@ -154771,7 +154771,12 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Divider, {
|
||||
"data-qa-node": "Divider",
|
||||
"data-qa-file": "ContextMenuItems"
|
||||
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Copy, {
|
||||
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Refresh, {
|
||||
uri: item.uri,
|
||||
action: _services_core_actions__WEBPACK_IMPORTED_MODULE_7__["loadTrack"],
|
||||
"data-qa-node": "Refresh",
|
||||
"data-qa-file": "ContextMenuItems"
|
||||
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Copy, {
|
||||
uris: [item.uri],
|
||||
"data-qa-node": "Copy",
|
||||
"data-qa-file": "ContextMenuItems"
|
||||
@ -166686,7 +166691,6 @@ var Snapcast = function Snapcast(props) {
|
||||
uiActions = props.uiActions,
|
||||
match = props.match,
|
||||
history = props.history,
|
||||
config = props.config,
|
||||
_props$snapcast = props.snapcast,
|
||||
host = _props$snapcast.host,
|
||||
port = _props$snapcast.port,
|
||||
@ -166694,26 +166698,6 @@ var Snapcast = function Snapcast(props) {
|
||||
enabled = _props$snapcast.enabled,
|
||||
streaming_enabled = _props$snapcast.streaming_enabled,
|
||||
connected = _props$snapcast.connected;
|
||||
|
||||
var restoreDefaults = function restoreDefaults() {
|
||||
var _ref = config || {},
|
||||
_ref$snapcast_enabled = _ref.snapcast_enabled,
|
||||
snapcast_enabled = _ref$snapcast_enabled === void 0 ? false : _ref$snapcast_enabled,
|
||||
_ref$snapcast_host = _ref.snapcast_host,
|
||||
snapcast_host = _ref$snapcast_host === void 0 ? 'localhost' : _ref$snapcast_host,
|
||||
_ref$snapcast_port = _ref.snapcast_port,
|
||||
snapcast_port = _ref$snapcast_port === void 0 ? '1780' : _ref$snapcast_port,
|
||||
_ref$snapcast_ssl = _ref.snapcast_ssl,
|
||||
snapcast_ssl = _ref$snapcast_ssl === void 0 ? false : _ref$snapcast_ssl;
|
||||
|
||||
actions.setEnabled(snapcast_enabled);
|
||||
actions.setConnection({
|
||||
host: snapcast_host,
|
||||
port: snapcast_port,
|
||||
ssl: snapcast_ssl
|
||||
});
|
||||
};
|
||||
|
||||
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "snapcast",
|
||||
"data-qa-node": "div",
|
||||
@ -166797,17 +166781,7 @@ var Snapcast = function Snapcast(props) {
|
||||
path: "snapcast.show_disconnected_clients",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "Snapcast"
|
||||
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
||||
onClick: restoreDefaults,
|
||||
size: "small",
|
||||
className: "no-margin",
|
||||
"data-qa-node": "Button",
|
||||
"data-qa-file": "Snapcast"
|
||||
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_7__["I18n"], {
|
||||
path: "services.restore_defaults",
|
||||
"data-qa-node": "I18n",
|
||||
"data-qa-file": "Snapcast"
|
||||
})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
}))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", {
|
||||
className: "field",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "Snapcast"
|
||||
@ -166926,7 +166900,6 @@ var Snapcast = function Snapcast(props) {
|
||||
var mapStateToProps = function mapStateToProps(state) {
|
||||
return {
|
||||
snapcast: state.snapcast,
|
||||
config: state.pusher.config,
|
||||
show_disconnected_clients: state.ui.snapcast_show_disconnected_clients !== undefined ? state.ui.snapcast_show_disconnected_clients : false
|
||||
};
|
||||
};
|
||||
@ -196158,6 +196131,7 @@ var Queue = function Queue(_ref5) {
|
||||
}
|
||||
}
|
||||
|
||||
var current_track_name = (current_track === null || current_track === void 0 ? void 0 : current_track.name) || stream_title || '-';
|
||||
var options = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, spotify_enabled && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_Button__WEBPACK_IMPORTED_MODULE_18__["default"], {
|
||||
noHover: true,
|
||||
discrete: true,
|
||||
@ -196245,18 +196219,15 @@ var Queue = function Queue(_ref5) {
|
||||
className: "current-track__title",
|
||||
"data-qa-node": "div",
|
||||
"data-qa-file": "Queue"
|
||||
}, stream_title && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
|
||||
"data-qa-node": "span",
|
||||
"data-qa-file": "Queue"
|
||||
}, stream_title), !stream_title && current_track && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
||||
}, (current_track === null || current_track === void 0 ? void 0 : current_track.uri) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
||||
type: "track",
|
||||
uri: current_track.uri,
|
||||
"data-qa-node": "URILink",
|
||||
"data-qa-file": "Queue"
|
||||
}, current_track.name), !stream_title && !current_track && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
|
||||
}, current_track_name) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
|
||||
"data-qa-node": "span",
|
||||
"data-qa-file": "Queue"
|
||||
}, "-")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_LinksSentence__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
||||
}, current_track_name)), /*#__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",
|
||||
@ -196362,7 +196333,7 @@ var mapStateToProps = function mapStateToProps(state) {
|
||||
|
||||
|
||||
if (queue_metadata["tlid_".concat(track.tlid)] !== undefined) {
|
||||
track = _objectSpread(_objectSpread({}, track), queue_metadata["tlid_".concat(track.tlid)]);
|
||||
track = _objectSpread(_objectSpread({}, queue_metadata["tlid_".concat(track.tlid)]), track);
|
||||
} // Siphon off this track if it's a full representation of our current track
|
||||
|
||||
|
||||
|
||||
File diff suppressed because one or more lines are too long
10
mopidy_iris/static/app.min.js
vendored
10
mopidy_iris/static/app.min.js
vendored
File diff suppressed because one or more lines are too long
@ -140,8 +140,8 @@
|
||||
|
||||
// Release details
|
||||
// These are automatically injected to built HTML
|
||||
var build = "1655543382";
|
||||
var version = "3.64.0";
|
||||
var build = "1659229755";
|
||||
var version = "3.64.1";
|
||||
|
||||
// Construct the script tag
|
||||
var js = document.createElement("script");
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"manifest_version": "3.64.0",
|
||||
"manifest_version": "3.64.1",
|
||||
"short_name": "Iris",
|
||||
"name": "Iris",
|
||||
"icons": [
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mopidy-iris",
|
||||
"version": "3.64.0",
|
||||
"version": "3.64.1",
|
||||
"description": "Mopidy HTTP interface",
|
||||
"repository": "https://github.com/jaedb/iris",
|
||||
"author": "James Barnsley <james@barnsley.nz>",
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
[metadata]
|
||||
name = Mopidy-Iris
|
||||
version = 3.64.0
|
||||
version = 3.64.1
|
||||
url = https://github.com/jaedb/iris
|
||||
author = James Barnsley
|
||||
author_email = james@barnsley.nz
|
||||
|
||||
@ -6,6 +6,7 @@ import { I18n } from '../../locale';
|
||||
import Link from '../Link';
|
||||
import Icon from '../Icon';
|
||||
import {
|
||||
loadTrack,
|
||||
loadAlbum,
|
||||
loadArtist,
|
||||
loadPlaylist,
|
||||
@ -163,6 +164,7 @@ const ContextMenuItems = ({
|
||||
<Divider />
|
||||
</>
|
||||
)}
|
||||
<Refresh uri={item.uri} action={loadTrack} />
|
||||
<Copy uris={[item.uri]} />
|
||||
{can_edit && (
|
||||
<>
|
||||
|
||||
@ -167,6 +167,10 @@ const Group = ({
|
||||
|
||||
const Outputs = () => {
|
||||
const snapcastEnabled = useSelector((state) => state.snapcast.enabled);
|
||||
const allGroups = indexToArray(useSelector((state) => state.snapcast.groups || {}));
|
||||
const allStreams = useSelector((state) => state.snapcast.streams || {});
|
||||
const allServers = indexToArray(useSelector((state) => state.mopidy.servers || {}));
|
||||
const groupsByStream = groupBy(allGroups, 'stream_id');
|
||||
if (!snapcastEnabled) {
|
||||
return (
|
||||
<p className="no-results">
|
||||
@ -175,11 +179,6 @@ const Outputs = () => {
|
||||
);
|
||||
}
|
||||
|
||||
const allGroups = indexToArray(useSelector((state) => state.snapcast.groups || {}));
|
||||
const allStreams = useSelector((state) => state.snapcast.streams || {});
|
||||
const allServers = indexToArray(useSelector((state) => state.mopidy.servers || {}));
|
||||
const groupsByStream = groupBy(allGroups, 'stream_id');
|
||||
|
||||
return (
|
||||
<ErrorBoundary>
|
||||
{map(groupsByStream, (groups, id) => {
|
||||
|
||||
@ -15,7 +15,6 @@ const Snapcast = (props) => {
|
||||
uiActions,
|
||||
match,
|
||||
history,
|
||||
config,
|
||||
snapcast: {
|
||||
host,
|
||||
port,
|
||||
@ -26,18 +25,6 @@ const Snapcast = (props) => {
|
||||
},
|
||||
} = props;
|
||||
|
||||
const restoreDefaults = () => {
|
||||
const {
|
||||
snapcast_enabled = false,
|
||||
snapcast_host = 'localhost',
|
||||
snapcast_port = '1780',
|
||||
snapcast_ssl = false,
|
||||
} = config || {};
|
||||
|
||||
actions.setEnabled(snapcast_enabled);
|
||||
actions.setConnection({ host: snapcast_host, port: snapcast_port, ssl: snapcast_ssl });
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="snapcast">
|
||||
|
||||
@ -80,9 +67,6 @@ const Snapcast = (props) => {
|
||||
<I18n path="snapcast.show_disconnected_clients" />
|
||||
</span>
|
||||
</label>
|
||||
<Button onClick={restoreDefaults} size="small" className="no-margin">
|
||||
<I18n path="services.restore_defaults" />
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -148,7 +132,6 @@ const Snapcast = (props) => {
|
||||
|
||||
const mapStateToProps = (state) => ({
|
||||
snapcast: state.snapcast,
|
||||
config: state.pusher.config,
|
||||
show_disconnected_clients: (
|
||||
state.ui.snapcast_show_disconnected_clients !== undefined
|
||||
? state.ui.snapcast_show_disconnected_clients
|
||||
|
||||
@ -277,7 +277,7 @@ class Tracks extends React.Component {
|
||||
return (
|
||||
<div className="view library-tracks-view">
|
||||
<Header options={options} uiActions={uiActions}>
|
||||
<Icon name="album" type="material" />
|
||||
<Icon name="music_note" type="material" />
|
||||
<I18n path="library.tracks.title" />
|
||||
</Header>
|
||||
{this.renderView()}
|
||||
|
||||
@ -151,6 +151,7 @@ const Queue = ({
|
||||
current_track_image = current_track.images.large;
|
||||
}
|
||||
}
|
||||
const current_track_name = current_track?.name || stream_title || '-'
|
||||
|
||||
const options = (
|
||||
<>
|
||||
@ -186,15 +187,14 @@ const Queue = ({
|
||||
/>
|
||||
<div className="current-track__details">
|
||||
<div className="current-track__title">
|
||||
{stream_title && (
|
||||
<span>{stream_title}</span>
|
||||
)}
|
||||
{!stream_title && current_track && (
|
||||
{current_track?.uri ? (
|
||||
<URILink type="track" uri={current_track.uri}>
|
||||
{current_track.name}
|
||||
{current_track_name}
|
||||
</URILink>
|
||||
) : (
|
||||
<span>{current_track_name}</span>
|
||||
)}
|
||||
{!stream_title && !current_track && (<span>-</span>)}
|
||||
|
||||
</div>
|
||||
|
||||
<LinksSentence
|
||||
@ -282,8 +282,8 @@ const mapStateToProps = (state) => {
|
||||
// Now merge in our queue metadata
|
||||
if (queue_metadata[`tlid_${track.tlid}`] !== undefined) {
|
||||
track = {
|
||||
...track,
|
||||
...queue_metadata[`tlid_${track.tlid}`],
|
||||
...track,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user