mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-24 02:27:37 +00:00
Revert "Serialize media state, and apply equalizer state to on deserialize"
This reverts commit 94e105b104.
This commit is contained in:
parent
66002cb8f0
commit
86c2c663bb
4 changed files with 10 additions and 68 deletions
|
|
@ -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);
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue