From 33abe4af8eef7deadfe1fea32d62f09c267f54a9 Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Mon, 17 Sep 2018 08:32:52 -0700 Subject: [PATCH] Type the media middleware --- js/{mediaMiddleware.js => mediaMiddleware.ts} | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) rename js/{mediaMiddleware.js => mediaMiddleware.ts} (88%) diff --git a/js/mediaMiddleware.js b/js/mediaMiddleware.ts similarity index 88% rename from js/mediaMiddleware.js rename to js/mediaMiddleware.ts index 59a31e94..d002bc4a 100644 --- a/js/mediaMiddleware.js +++ b/js/mediaMiddleware.ts @@ -1,3 +1,4 @@ +import Media from "./media"; import { IS_PLAYING, IS_STOPPED, @@ -20,8 +21,9 @@ import { } from "./actionTypes"; import { next as nextTrack } from "./actionCreators"; import { getCurrentTrackId } from "./selectors"; +import { MiddlewareStore, Dispatchable, Action, Dispatch } from "./types"; -export default media => store => { +export default (media: Media) => (store: MiddlewareStore) => { const { media: { volume, balance } } = store.getState(); @@ -56,13 +58,17 @@ export default media => store => { }); media.on("fileLoaded", () => { + const id = getCurrentTrackId(store.getState()); + if (id == null) { + throw new Error("WAT"); + } store.dispatch({ + id, type: SET_MEDIA, kbps: "128", khz: Math.round(media.sampleRate() / 1000).toString(), channels: media.channels(), - length: media.duration(), - id: getCurrentTrackId(store.getState()) + length: media.duration() }); }); @@ -73,7 +79,7 @@ export default media => store => { }); }); - return next => action => { + return (next: Dispatch) => (action: Action) => { // TODO: Consider doing this after the action, and using the state as the source of truth. switch (action.type) { case PLAY: