diff --git a/examples/minimalMilkdrop/index.html b/examples/minimalMilkdrop/index.html index c2112c44..e7d0d865 100755 --- a/examples/minimalMilkdrop/index.html +++ b/examples/minimalMilkdrop/index.html @@ -75,6 +75,7 @@ return { name, butterchurnPresetObject: preset }; }); }, + butterchurnOpen: true, }, windowLayout: { main: { position: { top: 0, left: 0 } }, diff --git a/packages/webamp/demo/js/butterchurnOptions.ts b/packages/webamp/demo/js/butterchurnOptions.ts index db2966b2..47473759 100644 --- a/packages/webamp/demo/js/butterchurnOptions.ts +++ b/packages/webamp/demo/js/butterchurnOptions.ts @@ -99,5 +99,6 @@ export function getButterchurnOptions( return { name, butterchurnPresetObject: preset as Object }; }); }, + butterchurnOpen: !startWithMilkdropHidden, }; } diff --git a/packages/webamp/demo/js/eventLogger.ts b/packages/webamp/demo/js/eventLogger.ts index 65d2c047..cc590e7a 100644 --- a/packages/webamp/demo/js/eventLogger.ts +++ b/packages/webamp/demo/js/eventLogger.ts @@ -59,6 +59,8 @@ function logEventFromAction(action: Action): GoogleAnalyticsEvent | null { return { category: "Playlist", action: "ReverseList" }; case "RANDOMIZE_LIST": return { category: "Playlist", action: "RandomizeList" }; + case "ENABLE_MILKDROP": + return { category: "Windows", action: "EnableMilkdrop" }; case "TOGGLE_WINDOW_SHADE_MODE": return { category: "Windows", diff --git a/packages/webamp/js/actionTypes.ts b/packages/webamp/js/actionTypes.ts index 0f3a8ee6..a0fca6f3 100644 --- a/packages/webamp/js/actionTypes.ts +++ b/packages/webamp/js/actionTypes.ts @@ -72,6 +72,7 @@ export const LOAD_SERIALIZED_STATE = "LOAD_SERIALIZED_STATE"; export const RESET_WINDOW_SIZES = "RESET_WINDOW_SIZES"; export const BROWSER_WINDOW_SIZE_CHANGED = "BROWSER_WINDOW_SIZE_CHANGED"; export const LOAD_DEFAULT_SKIN = "LOAD_DEFAULT_SKIN"; +export const ENABLE_MILKDROP = "ENABLE_MILKDROP"; export const SET_MILKDROP_DESKTOP = "SET_MILKDROP_DESKTOP"; export const SET_VISUALIZER_STYLE = "SET_VISUALIZER_STYLE"; export const GOT_BUTTERCHURN_PRESETS = "GOT_BUTTERCHURN_PRESETS"; diff --git a/packages/webamp/js/reducers/windows.ts b/packages/webamp/js/reducers/windows.ts index 16fe35f9..faaae023 100644 --- a/packages/webamp/js/reducers/windows.ts +++ b/packages/webamp/js/reducers/windows.ts @@ -10,6 +10,7 @@ import { LOAD_SERIALIZED_STATE, BROWSER_WINDOW_SIZE_CHANGED, RESET_WINDOW_SIZES, + ENABLE_MILKDROP, } from "../actionTypes"; import * as Utils from "../utils"; import { WindowsSerializedStateV1 } from "../serializedStates/v1Types"; @@ -82,7 +83,7 @@ const defaultWindowsState: WindowsState = { [WINDOWS.MILKDROP]: { title: "Milkdrop", size: [0, 0], - open: true, + open: false, shade: false, canResize: true, canShade: false, @@ -104,6 +105,17 @@ const windows = ( action: Action ): WindowsState => { switch (action.type) { + case ENABLE_MILKDROP: + return { + ...state, + genWindows: { + ...state.genWindows, + [WINDOWS.MILKDROP]: { + ...state.genWindows[WINDOWS.MILKDROP], + open: action.open, + }, + }, + }; case SET_FOCUSED_WINDOW: let windowOrder = state.windowOrder; if (action.window != null) { diff --git a/packages/webamp/js/types.ts b/packages/webamp/js/types.ts index aa4f7747..e0d41fa9 100644 --- a/packages/webamp/js/types.ts +++ b/packages/webamp/js/types.ts @@ -193,6 +193,7 @@ export interface ButterchurnOptions { convertPreset(file: string, endpoint: string): Promise; }>; presetConverterEndpoint?: string; + butterchurnOpen: boolean; } export interface EqfPreset { @@ -509,6 +510,7 @@ export type Action = | { type: "RESET_WINDOW_SIZES" } | { type: "BROWSER_WINDOW_SIZE_CHANGED"; height: number; width: number } | { type: "LOAD_DEFAULT_SKIN" } + | { type: "ENABLE_MILKDROP"; open: boolean } | { type: "SCHEDULE_MILKDROP_MESSAGE"; message: string } | { type: "SET_MILKDROP_DESKTOP"; diff --git a/packages/webamp/js/webampLazy.tsx b/packages/webamp/js/webampLazy.tsx index 0d85dfa5..4d9cb0ec 100644 --- a/packages/webamp/js/webampLazy.tsx +++ b/packages/webamp/js/webampLazy.tsx @@ -33,6 +33,7 @@ import { LOADED, SET_Z_INDEX, CLOSE_REQUESTED, + ENABLE_MILKDROP, } from "./actionTypes"; import Emitter from "./emitter"; @@ -151,6 +152,10 @@ class Webamp { } if (options.__butterchurnOptions) { + this.store.dispatch({ + type: ENABLE_MILKDROP, + open: options.__butterchurnOptions.butterchurnOpen, + }); this.store.dispatch( Actions.initializePresets(options.__butterchurnOptions) );