Adding enqueuing and shuffle-add; Correctly adding 'from' for playlist and album context menu actions'

This commit is contained in:
James Barnsley
2021-12-24 22:58:03 +13:00
parent 99f8ad5a7e
commit c66d84cdaf
11 changed files with 348 additions and 155 deletions

View File

@ -144731,7 +144731,6 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var ContextMenuItems = function ContextMenuItems(_ref) {
var context_menu = _ref.context_menu,
onSubmenu = _ref.onSubmenu;
@ -144740,7 +144739,7 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
items = context_menu.items,
context = context_menu.context;
var can_edit = (context === null || context === void 0 ? void 0 : context.can_edit) || (item === null || item === void 0 ? void 0 : item.can_edit);
var provider = (context === null || context === void 0 ? void 0 : context.provider) || (item === null || item === void 0 ? void 0 : item.provider);
var provider = (context === null || context === void 0 ? void 0 : context.provider) || (item === null || item === void 0 ? void 0 : item.provider) || Object(_util_helpers__WEBPACK_IMPORTED_MODULE_12__["uriSource"])(item === null || item === void 0 ? void 0 : item.uri);
switch (type) {
case 'album':
@ -144748,19 +144747,22 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
var _item$artists;
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Play, {
uris: [item.uri],
context: context,
uri: item.uri,
context: item,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["playAlbum"],
"data-qa-node": "Play",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Enqueue, {
uris: [item.uri],
context: context,
uri: item.uri,
context: item,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueueAlbum"],
next: true,
"data-qa-node": "Enqueue",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Enqueue, {
uris: [item.uri],
context: context,
uri: item.uri,
context: item,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueueAlbum"],
"data-qa-node": "Enqueue",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Divider, {
@ -144848,19 +144850,29 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
case 'playlist':
{
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Play, {
uris: [item.uri],
context: context,
uri: item.uri,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["playPlaylist"],
context: item,
"data-qa-node": "Play",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Play, {
uri: item.uri,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["playPlaylist"],
context: item,
shuffle: true,
"data-qa-node": "Play",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Enqueue, {
uris: [item.uri],
context: context,
uri: item.uri,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueuePlaylist"],
context: item,
next: true,
"data-qa-node": "Enqueue",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Enqueue, {
uris: [item.uri],
context: context,
uri: item.uri,
action: _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueuePlaylist"],
context: item,
"data-qa-node": "Enqueue",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Library, {
@ -144940,7 +144952,7 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
"data-qa-node": "Library",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Love, {
uri: item.uri,
item: item,
"data-qa-node": "Love",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Divider, {
@ -144982,6 +144994,12 @@ var ContextMenuItems = function ContextMenuItems(_ref) {
context: context,
"data-qa-node": "Play",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Play, {
uris: uris,
context: context,
shuffle: true,
"data-qa-node": "Play",
"data-qa-file": "ContextMenuItems"
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Enqueue, {
uris: uris,
context: context,
@ -145190,11 +145208,12 @@ var Library = function Library(_ref4) {
};
var Love = function Love(_ref5) {
var uri = _ref5.uri,
isLovedProp = _ref5.isLoved;
var item = _ref5.item;
var uri = item.uri,
is_loved = item.is_loved;
var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(isLovedProp),
var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(item.is_loved),
_useState6 = _slicedToArray(_useState5, 2),
isLoved = _useState6[0],
setIsLoved = _useState6[1];
@ -145205,12 +145224,12 @@ var Love = function Love(_ref5) {
setLoading = _useState8[1];
Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
if (isLovedProp === undefined) {
if (is_loved === undefined) {
setLoading(true);
dispatch(Object(_services_lastfm_actions__WEBPACK_IMPORTED_MODULE_10__["getTrack"])(uri, function (result) {
setLoading(false);
setIsLoved(result);
}));
setIsLoved(result === null || result === void 0 ? void 0 : result.is_loved);
}, item));
}
}, [uri]);
@ -145359,12 +145378,16 @@ var Delete = function Delete(_ref9) {
};
var Play = function Play(_ref10) {
var uris = _ref10.uris,
context = _ref10.context;
var uri = _ref10.uri,
uris = _ref10.uris,
context = _ref10.context,
shuffle = _ref10.shuffle,
_ref10$action = _ref10.action,
action = _ref10$action === void 0 ? _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["playURIs"] : _ref10$action;
var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
var onClick = function onClick() {
dispatch(Object(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["playURIs"])(uris, context));
dispatch(action(uri || uris, context, shuffle));
dispatch(Object(_services_ui_actions__WEBPACK_IMPORTED_MODULE_7__["hideContextMenu"])());
};
@ -145382,20 +145405,23 @@ var Play = function Play(_ref10) {
"data-qa-node": "span",
"data-qa-file": "ContextMenuItems"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_locale__WEBPACK_IMPORTED_MODULE_3__["I18n"], {
path: "actions.play",
path: "actions.".concat(shuffle ? 'shuffle_' : '', "play"),
"data-qa-node": "I18n",
"data-qa-file": "ContextMenuItems"
}))));
};
var Enqueue = function Enqueue(_ref11) {
var uris = _ref11.uris,
var uri = _ref11.uri,
uris = _ref11.uris,
next = _ref11.next,
context = _ref11.context;
context = _ref11.context,
_ref11$action = _ref11.action,
action = _ref11$action === void 0 ? _services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueueURIs"] : _ref11$action;
var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
var onClick = function onClick() {
dispatch(Object(_services_mopidy_actions__WEBPACK_IMPORTED_MODULE_8__["enqueueURIs"])(uris, context, next));
dispatch(action(uri || uris, context, next));
dispatch(Object(_services_ui_actions__WEBPACK_IMPORTED_MODULE_7__["hideContextMenu"])());
};
@ -149424,14 +149450,13 @@ __webpack_require__.r(__webpack_exports__);
var ProgressSlider = function ProgressSlider(_ref) {
var size = _ref.size;
var size = _ref.size,
_ref$playbackPosition = _ref.playbackPosition,
playbackPosition = _ref$playbackPosition === void 0 ? 0 : _ref$playbackPosition;
var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
var connected = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.connected;
});
var time_position = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.time_position;
});
var play_state = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.play_state;
});
@ -149447,8 +149472,8 @@ var ProgressSlider = function ProgressSlider(_ref) {
var onChange = Object(_util_helpers__WEBPACK_IMPORTED_MODULE_3__["throttle"])(onChangeThrottled, 250);
var percent = 0;
if (connected && time_position && current_track && current_track.duration) {
percent = time_position / current_track.duration;
if (connected && playbackPosition && current_track && current_track.duration) {
percent = playbackPosition / current_track.duration;
percent *= 100;
if (percent > 1000) {
@ -152901,12 +152926,10 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var PlaybackControls = function PlaybackControls() {
var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(),
_useState2 = _slicedToArray(_useState, 2),
expanded = _useState2[0],
setExpanded = _useState2[1];
var dispatch = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useDispatch"])();
var time_position = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.time_position;
});
var touch_enabled = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.ui.touch_enabled;
});
@ -152922,9 +152945,6 @@ var PlaybackControls = function PlaybackControls() {
var mute = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.mute;
});
var time_position = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.time_position;
});
var play_state = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(function (state) {
return state.mopidy.play_state;
});
@ -152953,6 +152973,30 @@ var PlaybackControls = function PlaybackControls() {
var nextTrackSelector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_16__["makeItemSelector"])(nextTrackUri);
var nextTrack = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__["useSelector"])(nextTrackSelector);
var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(),
_useState2 = _slicedToArray(_useState, 2),
expanded = _useState2[0],
setExpanded = _useState2[1];
var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(time_position),
_useState4 = _slicedToArray(_useState3, 2),
playbackPosition = _useState4[0],
setPlaybackPosition = _useState4[1];
Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
var playbackPositionTimer = setInterval(function () {
setPlaybackPosition(function (prev) {
return prev + 1000;
});
}, 1000);
return function () {
return clearInterval(playbackPositionTimer);
};
}, []);
Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () {
setPlaybackPosition(time_position);
}, [time_position]);
var handleContextMenu = function handleContextMenu(e) {
e.preventDefault();
dispatch(Object(_services_ui_actions__WEBPACK_IMPORTED_MODULE_13__["showContextMenu"])({
@ -153126,12 +153170,13 @@ var PlaybackControls = function PlaybackControls() {
className: "time time--current",
"data-qa-node": "div",
"data-qa-file": "PlaybackControls"
}, time_position ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Dater__WEBPACK_IMPORTED_MODULE_8__["Dater"], {
}, playbackPosition ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Dater__WEBPACK_IMPORTED_MODULE_8__["Dater"], {
type: "length",
data: time_position,
data: playbackPosition,
"data-qa-node": "Dater",
"data-qa-file": "PlaybackControls"
}) : '-'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Fields_ProgressSlider__WEBPACK_IMPORTED_MODULE_4__["default"], {
playbackPosition: playbackPosition,
size: slim_mode && 'small',
"data-qa-node": "ProgressSlider",
"data-qa-file": "PlaybackControls"
@ -161850,10 +161895,10 @@ function getMe() {
});
};
}
function getTrack(uri, callback) {
function getTrack(uri, callback, alreadyLoadedTrack) {
return function (dispatch, getState) {
var selector = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_3__["makeItemSelector"])(uri);
var track = selector(getState());
var track = alreadyLoadedTrack || selector(getState());
if (!track || !track.artists) {
dispatch(coreActions.handleException('Could not get LastFM track', {}, 'Not in index or has no artists'));
@ -162051,7 +162096,7 @@ function loveTrack(uri) {
content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"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"], {
}, '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",
@ -162086,7 +162131,7 @@ function unloveTrack(uri) {
content: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", {
"data-qa-node": "span",
"data-qa-file": "actions"
}, "Unloved", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
}, 'Unloved ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_components_URILink__WEBPACK_IMPORTED_MODULE_4__["default"], {
uri: uri,
"data-qa-node": "URILink",
"data-qa-file": "actions"
@ -162658,10 +162703,11 @@ function playURIs() {
shuffle: shuffle
};
}
function playAlbum(uri) {
function playAlbum(uri, from) {
return {
type: 'MOPIDY_PLAY_ALBUM',
uri: uri
uri: uri,
from: from
};
}
function playPlaylist(uri) {
@ -162676,32 +162722,36 @@ function enqueueURIs() {
var uris = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
var play_next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var at_position = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
var shuffle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var at_position = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
var offset = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
return {
type: 'MOPIDY_ENQUEUE_URIS',
uris: uris,
from: from,
at_position: at_position,
play_next: play_next,
shuffle: shuffle,
at_position: at_position,
offset: offset
};
}
function enqueueAlbum(uri) {
var next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var at_position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
function enqueueAlbum(uri, from) {
var play_next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var at_position = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
return {
type: 'MOPIDY_ENQUEUE_ALBUM',
uri: uri,
next: next,
from: from,
play_next: play_next,
at_position: at_position
};
}
function enqueuePlaylist(uri) {
var play_next = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var at_position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
function enqueuePlaylist(uri, from) {
var play_next = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var at_position = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
return {
type: 'MOPIDY_ENQUEUE_PLAYLIST',
from: from,
uri: uri,
play_next: play_next,
at_position: at_position
@ -162969,8 +163019,7 @@ var MopidyMiddleware = function () {
// container for the actual Mopidy socket
var socket = null; // play position timer
var progress_interval = null;
var progress_interval_counter = 0; // handle all manner of socket messages
var progress_interval = null; // handle all manner of socket messages
var handleMessage = function handleMessage(ws, store, type, data) {
// if debug enabled
@ -162993,20 +163042,13 @@ var MopidyMiddleware = function () {
store.dispatch(mopidyActions.getQueue());
store.dispatch(mopidyActions.getTimePosition());
store.dispatch(mopidyActions.getUriSchemes());
store.dispatch(mopidyActions.getStreamTitle()); // Every 1s update our play position (when playing)
store.dispatch(mopidyActions.getStreamTitle()); // Every 10s update our play position (when playing)
progress_interval = setInterval(function () {
if (store.getState().mopidy.play_state === 'playing') {
// Every 10s get real position from server, provided we're in-focus
if (progress_interval_counter % 5 === 0 && store.getState().ui.window_focus === true) {
store.dispatch(mopidyActions.getTimePosition()); // Otherwise we just assume to add 1000ms every 1000ms of play time
} else {
store.dispatch(mopidyActions.timePosition(store.getState().mopidy.time_position + 1000));
}
progress_interval_counter += 1;
if (store.getState().mopidy.play_state === 'playing' && store.getState().ui.window_focus === true) {
store.dispatch(mopidyActions.getTimePosition());
}
}, 1000);
}, 10000);
break;
case 'state:offline':
@ -163016,7 +163058,6 @@ var MopidyMiddleware = function () {
store.dispatch(mopidyActions.clearCurrentTrack()); // reset our playback interval timer
clearInterval(progress_interval);
progress_interval_counter = 0;
break;
case 'event:tracklistChanged':
@ -163733,18 +163774,68 @@ var MopidyMiddleware = function () {
break;
}
case 'MOPIDY_PLAY_ALBUM':
{
var album = store.getState().core.items[action.uri];
var _getSortSelector2 = Object(_util_selectors__WEBPACK_IMPORTED_MODULE_8__["getSortSelector"])(store.getState(), 'playlist_tracks'),
_sortField = _getSortSelector2.sortField,
_sortReverse = _getSortSelector2.sortReverse;
if (album && album.tracks) {
store.dispatch(mopidyActions.playURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["sortItems"])(album.tracks.filter(function (t) {
return (t === null || t === void 0 ? void 0 : t.is_playable) !== false;
}), _sortField, _sortReverse)), {
uri: album === null || album === void 0 ? void 0 : album.uri,
name: album === null || album === void 0 ? void 0 : album.name,
type: 'album'
}, action.shuffle));
break;
}
store.dispatch(coreActions.loadAlbum(action.uri, {
full: true,
callbackAction: {
name: 'play',
shuffle: action.shuffle
}
}));
break;
}
case 'MOPIDY_ENQUEUE_PLAYLIST':
{
var _playlist = store.getState().core.items[action.uri];
if (_playlist && _playlist.tracks) {
store.dispatch(mopidyActions.enqueueURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', _playlist.tracks), action.uri, action.shuffle));
store.dispatch(mopidyActions.enqueueURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', _playlist.tracks), action.from, action.play_next, action.shuffle));
break;
}
store.dispatch(coreActions.loadPlaylist(action.uri, false, {
name: 'enqueue',
shuffle: action.shuffle,
from: action.from,
play_next: action.play_next,
at_position: action.at_position,
offset: action.offset
}));
break;
}
case 'MOPIDY_ENQUEUE_ALBUM':
{
var _album = store.getState().core.items[action.uri];
if (_album && _album.tracks) {
store.dispatch(mopidyActions.enqueueURIs(Object(_util_arrays__WEBPACK_IMPORTED_MODULE_7__["arrayOf"])('uri', _album.tracks), action.from, action.play_next, action.shuffle));
break;
}
store.dispatch(coreActions.loadAlbum(action.uri, false, {
name: 'enqueue',
shuffle: action.shuffle,
from: action.from,
play_next: action.play_next,
at_position: action.at_position,
offset: action.offset
@ -171958,7 +172049,7 @@ var formatTrack = function formatTrack(data) {
var track = {
type: 'track'
};
var fields = ['uri', 'loading', 'in_library', 'is_playable', '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
var fields = ['uri', 'loading', 'in_library', 'is_playable', 'is_loved', 'is_explicit', 'is_local', 'tlid', 'provider', 'name', 'images', 'release_date', 'disc_number', 'track_number', 'disc_track', 'duration', 'followers', 'popularity', 'last_modified', 'added_at', 'lyrics', 'lyrics_path', 'lyrics_results', 'artists', // Array of simple records
'album' // Array of simple records
]; // Nested track object (eg in spotify playlist)
@ -172019,6 +172110,10 @@ var formatTrack = function formatTrack(data) {
if (track.explicit === undefined && data.explicit !== undefined) {
track.is_explicit = data.explicit;
}
if (track.userloved === undefined && data.userloved !== undefined) {
track.is_loved = data.userloved === '1';
} // Copy images from albums (if applicable)
// TOOD: Identify if we stil need this...

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -140,7 +140,7 @@
// Release details
// These are automatically injected to built HTML
var build = "1639791409";
var build = "1640339845";
var version = "3.60.1";
// Construct the script tag