diff --git a/js/index.js b/js/index.js index c9ef4520..5934a83b 100644 --- a/js/index.js +++ b/js/index.js @@ -17,6 +17,7 @@ import { SET_BALANCE, SET_BAND_VALUE } from "./actionTypes"; +import analyticsMiddleware from "./analyticsMiddleware"; import { hideAbout, @@ -51,6 +52,20 @@ Raven.config(sentryDsn, { release: typeof COMMITHASH !== "undefined" ? COMMITHASH : "DEV" }).install(); +const ravenMiddleware = createMiddleware(Raven, { + filterBreadcrumbActions, + stateTransformer: state => ({ + ...state, + display: { + ...state.display, + skinGenLetterWidths: "[[REDACTED]]", + skinImages: "[[REDACTED]]", + skinCursors: "[[REDACTED]]", + skinRegion: "[[REDACTED]]" + } + }) +}); + // Don't prompt user to install Winamp2-js. It's probably not // what they want. window.addEventListener("beforeinstallprompt", e => { @@ -114,19 +129,7 @@ Raven.context(() => { ], enableHotkeys: true, __initialState: initialState, - __customMiddleware: createMiddleware(Raven, { - filterBreadcrumbActions, - stateTransformer: state => ({ - ...state, - display: { - ...state.display, - skinGenLetterWidths: "[[REDACTED]]", - skinImages: "[[REDACTED]]", - skinCursors: "[[REDACTED]]", - skinRegion: "[[REDACTED]]" - } - }) - }) + __customMiddlewares: [analyticsMiddleware, ravenMiddleware] }); winamp.renderWhenReady(document.getElementById("app")); diff --git a/js/store.js b/js/store.js index 6d898f1c..74f5f4ff 100644 --- a/js/store.js +++ b/js/store.js @@ -3,15 +3,20 @@ import thunk from "redux-thunk"; import { composeWithDevTools } from "redux-devtools-extension"; import reducer from "./reducers"; import mediaMiddleware from "./mediaMiddleware"; -import analyticsMiddleware from "./analyticsMiddleware"; import { merge } from "./utils"; import { UPDATE_TIME_ELAPSED, STEP_MARQUEE } from "./actionTypes"; +import analyticsMiddleware from "./analyticsMiddleware"; const compose = composeWithDevTools({ actionsBlacklist: [UPDATE_TIME_ELAPSED, STEP_MARQUEE] }); -const getStore = (media, actionEmitter, customMiddleware, stateOverrides) => { +const getStore = ( + media, + actionEmitter, + customMiddlewares = [], + stateOverrides +) => { let initialState; if (stateOverrides) { initialState = merge( @@ -35,7 +40,7 @@ const getStore = (media, actionEmitter, customMiddleware, stateOverrides) => { thunk, mediaMiddleware(media), emitterMiddleware, - customMiddleware, + ...customMiddlewares, analyticsMiddleware ].filter(Boolean) ) diff --git a/js/winamp.js b/js/winamp.js index cc873ba2..b81a45bf 100644 --- a/js/winamp.js +++ b/js/winamp.js @@ -57,7 +57,7 @@ class Winamp { this.store = getStore( this.media, this._actionEmitter, - this.options.__customMiddleware, + this.options.__customMiddlewares, this.options.__initialState ); this.store.dispatch({