diff --git a/js/mediaMiddleware.ts b/js/mediaMiddleware.ts index a2848790..7023c6b4 100644 --- a/js/mediaMiddleware.ts +++ b/js/mediaMiddleware.ts @@ -17,19 +17,11 @@ import { SET_EQ_ON, PLAY_TRACK, BUFFER_TRACK, - CHANNEL_COUNT_CHANGED, - LOAD_SERIALIZED_STATE + CHANNEL_COUNT_CHANGED } from "./actionTypes"; import { next as nextTrack } from "./actionCreators"; -import * as Selectors from "./selectors"; -import { - MiddlewareStore, - Dispatchable, - Action, - Dispatch, - Slider -} from "./types"; -import { objectForEach } from "./utils"; +import { getCurrentTrackId } from "./selectors"; +import { MiddlewareStore, Dispatchable, Action, Dispatch } from "./types"; export default (media: Media) => (store: MiddlewareStore) => { const { @@ -66,7 +58,7 @@ export default (media: Media) => (store: MiddlewareStore) => { }); media.on("fileLoaded", () => { - const id = Selectors.getCurrentTrackId(store.getState()); + const id = getCurrentTrackId(store.getState()); if (id == null) { // Attempted to set the metadata for a track that was already removed. // Really, the media should have been stopped when the track was removed. @@ -90,8 +82,7 @@ export default (media: Media) => (store: MiddlewareStore) => { }); return (next: Dispatch) => (action: Action) => { - const returnValue = next(action); - const state = store.getState(); + // TODO: Consider doing this after the action, and using the state as the source of truth. switch (action.type) { case PLAY: media.play(); @@ -103,10 +94,10 @@ export default (media: Media) => (store: MiddlewareStore) => { media.stop(); break; case SET_VOLUME: - media.setVolume(Selectors.getVolume(state)); + media.setVolume(action.volume); break; case SET_BALANCE: - media.setBalance(Selectors.getBalance(state)); + media.setBalance(action.balance); break; case SEEK_TO_PERCENT_COMPLETE: media.seekToPercentComplete(action.percent); @@ -138,27 +129,7 @@ export default (media: Media) => (store: MiddlewareStore) => { case SET_EQ_ON: media.enableEq(); break; - case LOAD_SERIALIZED_STATE: { - // Set ALL THE THINGS! - if (Selectors.getEqualizerEnabled(state)) { - media.enableEq(); - } else { - media.disableEq(); - } - media.setVolume(Selectors.getVolume(state)); - media.setBalance(Selectors.getBalance(state)); - objectForEach(state.equalizer.sliders, (value, slider) => { - if (slider === "preamp") { - media.setPreamp(value); - } else { - // @ts-ignore I don't know how to teach TypeScript about objects - // that use Slider as keys - media.setEqBand(slider, value); - } - }); - break; - } } - return returnValue; + return next(action); }; }; diff --git a/js/reducers/media.ts b/js/reducers/media.ts index da9db2f9..b9347c81 100644 --- a/js/reducers/media.ts +++ b/js/reducers/media.ts @@ -13,8 +13,7 @@ import { TOGGLE_TIME_MODE, UPDATE_TIME_ELAPSED, ADD_TRACK_FROM_URL, - CHANNEL_COUNT_CHANGED, - LOAD_SERIALIZED_STATE + CHANNEL_COUNT_CHANGED } from "../actionTypes"; import { TIME_MODE, MEDIA_STATUS } from "../constants"; @@ -32,13 +31,6 @@ export interface MediaState { status: string | null; // TODO: Convert this to an enum } -export interface MediaSerializedStateV1 { - volume: number; - balance: number; - shuffle: boolean; - repeat: boolean; -} - const defaultState = { timeMode: TIME_MODE.ELAPSED, timeElapsed: 0, @@ -106,16 +98,9 @@ const media = ( return { ...state, repeat: !state.repeat }; case TOGGLE_SHUFFLE: return { ...state, shuffle: !state.shuffle }; - case LOAD_SERIALIZED_STATE: - return { ...state, ...action.serializedState.media }; default: return state; } }; -export function getSerializedState(state: MediaState): MediaSerializedStateV1 { - const { volume, balance, shuffle, repeat } = state; - return { volume, balance, shuffle, repeat }; -} - export default media; diff --git a/js/selectors.ts b/js/selectors.ts index ee8d1a98..59ab3bd5 100644 --- a/js/selectors.ts +++ b/js/selectors.ts @@ -28,7 +28,6 @@ import { createPlaylistURL } from "./playlistHtml"; import * as fromPlaylist from "./reducers/playlist"; import * as fromDisplay from "./reducers/display"; import * as fromEqualizer from "./reducers/equalizer"; -import * as fromMedia from "./reducers/media"; import { generateGraph } from "./resizeUtils"; export const getSliders = (state: AppState) => state.equalizer.sliders; @@ -409,19 +408,7 @@ export const getChannels = (state: AppState) => state.media.channels; export function getSerlializedState(state: AppState): SerializedStateV1 { return { version: 1, - media: fromMedia.getSerializedState(state.media), equalizer: fromEqualizer.getSerializedState(state.equalizer), display: fromDisplay.getSerializedState(state.display) }; } - -export function getVolume(state: AppState): number { - return state.media.volume; -} - -export function getBalance(state: AppState): number { - return state.media.balance; -} -export function getEqualizerEnabled(state: AppState): boolean { - return state.equalizer.on; -} diff --git a/js/types.ts b/js/types.ts index 8afd82da..49391db9 100644 --- a/js/types.ts +++ b/js/types.ts @@ -1,7 +1,7 @@ import { PlaylistState } from "./reducers/playlist"; import { SettingsState } from "./reducers/settings"; import { UserInputState } from "./reducers/userInput"; -import { MediaState, MediaSerializedStateV1 } from "./reducers/media"; +import { MediaState } from "./reducers/media"; import { DisplayState, DisplaySerializedStateV1 } from "./reducers/display"; import { WindowState } from "./reducers/windows"; import { @@ -505,7 +505,6 @@ export interface SerializedStateV1 { windows: WindowSerializedState; settings: SettingsSerializedState; */ - media: MediaSerializedStateV1; display: DisplaySerializedStateV1; equalizer: EqualizerSerializedStateV1; }