Browse Source

Fixed issues with station mode updating and station sidebar.

KrisVos130 7 years ago
parent
commit
5ac02ce264
2 changed files with 33 additions and 7 deletions
  1. 6 5
      frontend/app/js/ducks/stationInfo.js
  2. 27 2
      frontend/app/js/views/Station/index.jsx

+ 6 - 5
frontend/app/js/ducks/stationInfo.js

@@ -63,10 +63,11 @@ function descriptionUpdate(description) {
 	}
 }
 
-function modeUpdate(mode) {
+function modeUpdate(partyMode, locked) {
 	return {
 		type: MODE_UPDATE,
-		mode,
+		partyMode,
+		locked,
 	}
 }
 
@@ -200,10 +201,10 @@ function reducer(state = initialState, action) {
 		});
 	case MODE_UPDATE:
 		return state.merge({
-			mode: action.mode,
+			mode: getModeTemp(action.partyMode, action.locked),
 		});
 	case QUEUE_INDEX:
-		songList = fromJS(action.station.songList.map((song) => {
+		songList = fromJS(action.songList.map((song) => {
 			song.songId = song._id;
 			delete song._id;
 			return song;
@@ -213,7 +214,7 @@ function reducer(state = initialState, action) {
 			songList,
 		});
 	case QUEUE_UPDATE:
-		songList = fromJS(action.station.songList.map((song) => {
+		songList = fromJS(action.songList.map((song) => {
 			song.songId = song._id;
 			delete song._id;
 			return song;

+ 27 - 2
frontend/app/js/views/Station/index.jsx

@@ -55,6 +55,7 @@ import config from "config";
 		songList: state.station.info.get("songList"),
 		paused: state.station.info.get("paused"),
 		ownerId: state.station.info.get("ownerId"),
+		mode: state.station.info.get("mode"),
 		privatePlaylistQueue: state.station.info.get("privatePlaylistQueue"),
 	},/*
 	selectedPlaylistObject: {
@@ -74,6 +75,7 @@ import config from "config";
 	onResume: bindActionCreators(stationInfoActionCreators.resume, dispatch),
 	onQueueIndex: bindActionCreators(stationInfoActionCreators.queueIndex, dispatch),
 	onQueueUpdate: bindActionCreators(stationInfoActionCreators.queueUpdate, dispatch),
+	onModeUpdate: bindActionCreators(stationInfoActionCreators.modeUpdate, dispatch),
 	onTimeElapsedUpdate: bindActionCreators(stationCurrentSongActionCreators.timeElapsedUpdate, dispatch),
 	onPlaylistsUpdate: bindActionCreators(stationPlaylistsActionCreators.update, dispatch),
 	onPlaylistsAddSong: bindActionCreators(stationPlaylistsActionCreators.addSong, dispatch),
@@ -233,6 +235,20 @@ export default class Station extends Component {
 					socket.on("event:playlist.removeSong", data => {
 						this.props.onPlaylistsRemoveSong(data.playlistId, data.songId);
 					});
+					socket.on("event:partyMode.updated", partyEnabled => {
+						this.setState({
+							...this.state,
+							partyEnabled,
+						});
+						this.props.onModeUpdate(partyEnabled, this.state.queueLocked);
+					});
+					socket.on("event:queueLockToggled", queueLocked => {
+						this.setState({
+							...this.state,
+							queueLocked,
+						});
+						this.props.onModeUpdate(this.state.partyEnabled, queueLocked);
+					});
 
 					if (this.props.station.type === "community") {
 						socket.emit("stations.getQueue", this.props.station.stationId, data => {
@@ -387,8 +403,17 @@ export default class Station extends Component {
 
 				<div id="sidebar">
 					<button onClick={ () => { this.props.openOverlay1("users") } }><i className="material-icons">people</i></button>
-					<button onClick={ () => { this.props.openOverlay1("queueList") } }><i className="material-icons">queue_music</i></button>
-					<button onClick={ () => { this.props.openOverlay1("playlists") } }><i className="material-icons">library_music</i></button>
+					{
+						(this.props.station.type === "community" && this.props.station.mode !== "normal")
+						? <button onClick={ () => { this.props.openOverlay1("queueList") } }><i className="material-icons">queue_music</i></button>
+						: null
+					}
+					{
+						(this.props.station.type === "community")
+						? <button onClick={ () => { this.props.openOverlay1("playlists") } }><i className="material-icons">library_music</i></button>
+						: null
+					}
+
 					<hr/>
 					{
 						(this.isOwner())