Inheriting added_at with last_updated for better cross-platform support;, fixes #523; Adding 'Shuffle' to queue, fixes #522

This commit is contained in:
James Barnsley
2020-04-19 20:57:43 +12:00
parent 67855d207d
commit 233ce9b207
24 changed files with 267 additions and 115 deletions

View File

@ -1,4 +1,5 @@
import React from 'react';
import ReactGA from 'react-ga';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
@ -29,6 +30,7 @@ class Hotkeys extends React.Component {
history,
modal,
dragging,
allow_reporting,
} = this.props;
let { volume } = this.props;
const key = e.key.toLowerCase();
@ -55,9 +57,11 @@ class Hotkeys extends React.Component {
if (play_state == 'playing') {
mopidyActions.pause();
uiActions.createNotification({ content: 'pause', type: 'shortcut' });
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Pause' });
} else {
mopidyActions.play();
uiActions.createNotification({ content: 'play_arrow', type: 'shortcut' });
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Play' });
}
prevent = true;
break;
@ -66,35 +70,42 @@ class Hotkeys extends React.Component {
if (dragging) {
uiActions.dragEnd();
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Dragging' });
} else if (modal) {
window.history.back();
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Modal' });
}
break;
case 's':
history.push('/search');
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Search' });
break;
case 'q':
history.push('/queue');
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Queue' });
break;
case 'k':
history.push('/kiosk-mode');
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Kiosk mode' });
break;
case ',':
window.history.back();
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Back' });
break;
case '.':
window.history.forward();
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Forward' });
break;
case '=':
@ -110,6 +121,7 @@ class Hotkeys extends React.Component {
uiActions.createNotification({ content: 'volume_up', type: 'shortcut' });
}
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Volume up' });
break;
case '-':
@ -125,15 +137,18 @@ class Hotkeys extends React.Component {
}
uiActions.createNotification({ content: 'volume_down', type: 'shortcut' });
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Volume down' });
break;
case '0':
if (mute) {
mopidyActions.setMute(false);
uiActions.createNotification({ content: 'volume_up', type: 'shortcut' });
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Unmute' });
} else {
mopidyActions.setMute(true);
uiActions.createNotification({ content: 'volume_off', type: 'shortcut' });
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Mute' });
}
prevent = true;
break;
@ -146,24 +161,28 @@ class Hotkeys extends React.Component {
mopidyActions.setTimePosition(new_position);
uiActions.createNotification({ content: 'fast_rewind', type: 'shortcut' });
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Rewind' });
break;
case "'":
mopidyActions.setTimePosition(play_time_position + 30000);
uiActions.createNotification({ content: 'fast_forward', type: 'shortcut' });
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Fastforward' });
break;
case '[':
mopidyActions.previous();
uiActions.createNotification({ content: 'skip_previous', type: 'shortcut' });
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Previous' });
break;
case ']':
mopidyActions.next();
uiActions.createNotification({ content: 'skip_next', type: 'shortcut' });
prevent = true;
if (allow_reporting) ReactGA.event({ category: 'Hotkey', action: key, label: 'Next' });
break;
default:
@ -186,6 +205,7 @@ const mapStateToProps = (state, ownProps) => ({
play_state: state.mopidy.play_state,
play_time_position: parseInt(state.mopidy.time_position),
dragging: state.ui.dragger && state.ui.dragger.dragging,
allow_reporting: state.ui.allow_reporting,
});
const mapDispatchToProps = (dispatch) => ({