mirror of
https://github.com/captbaritone/webamp.git
synced 2026-01-24 02:36:00 +00:00
201 lines
4.4 KiB
TypeScript
201 lines
4.4 KiB
TypeScript
import {
|
|
CLOSE_WINAMP,
|
|
OPEN_WINAMP,
|
|
STOP,
|
|
TOGGLE_VISUALIZER_STYLE,
|
|
CLOSE_REQUESTED,
|
|
MINIMIZE_WINAMP,
|
|
SET_FOCUS,
|
|
UNSET_FOCUS,
|
|
LOAD_SERIALIZED_STATE,
|
|
LOAD_DEFAULT_SKIN,
|
|
SET_MILKDROP_DESKTOP,
|
|
SET_MILKDROP_FULLSCREEN,
|
|
TOGGLE_PRESET_OVERLAY,
|
|
} from "../actionTypes";
|
|
import { WINDOWS } from "../constants";
|
|
import { Thunk, Action } from "../types";
|
|
import { SerializedStateV1 } from "../serializedStates/v1Types";
|
|
import * as Selectors from "../selectors";
|
|
import {
|
|
ensureWindowsAreOnScreen,
|
|
showWindow,
|
|
hideWindow,
|
|
setFocusedWindow,
|
|
} from "./windows";
|
|
|
|
export {
|
|
toggleDoubleSizeMode,
|
|
toggleEqualizerShadeMode,
|
|
togglePlaylistShadeMode,
|
|
closeWindow,
|
|
hideWindow,
|
|
showWindow,
|
|
setWindowSize,
|
|
toggleWindow,
|
|
updateWindowPositions,
|
|
toggleMainWindowShadeMode,
|
|
centerWindowsInContainer,
|
|
centerWindowsInView,
|
|
resetWindowSizes,
|
|
browserWindowSizeChanged,
|
|
ensureWindowsAreOnScreen,
|
|
stackWindows,
|
|
toggleLlamaMode,
|
|
setFocusedWindow,
|
|
} from "./windows";
|
|
export {
|
|
play,
|
|
pause,
|
|
stop,
|
|
nextN,
|
|
next,
|
|
previous,
|
|
seekToTime,
|
|
seekForward,
|
|
seekBackward,
|
|
setVolume,
|
|
playTrack,
|
|
adjustVolume,
|
|
scrollVolume,
|
|
setBalance,
|
|
toggleRepeat,
|
|
toggleShuffle,
|
|
toggleTimeMode,
|
|
} from "./media";
|
|
export {
|
|
setEqBand,
|
|
setEqToMax,
|
|
setEqToMid,
|
|
setEqToMin,
|
|
setPreamp,
|
|
toggleEq,
|
|
toggleEqAuto,
|
|
} from "./equalizer";
|
|
export {
|
|
addTracksFromReferences,
|
|
loadFilesFromReferences,
|
|
setSkinFromUrl,
|
|
openEqfFileDialog,
|
|
openMediaFileDialog,
|
|
openSkinFileDialog,
|
|
fetchMediaDuration,
|
|
loadMedia,
|
|
loadMediaFiles,
|
|
loadMediaFile,
|
|
fetchMediaTags,
|
|
setEqFromFileReference,
|
|
downloadPreset,
|
|
setEqFromObject,
|
|
downloadHtmlPlaylist,
|
|
} from "./files";
|
|
export {
|
|
cropPlaylist,
|
|
removeSelectedTracks,
|
|
removeAllTracks,
|
|
reverseList,
|
|
randomizeList,
|
|
sortListByTitle,
|
|
setPlaylistScrollPosition,
|
|
scrollNTracks,
|
|
scrollPlaylistByDelta,
|
|
scrollUpFourTracks,
|
|
scrollDownFourTracks,
|
|
dragSelected,
|
|
} from "./playlist";
|
|
export {
|
|
initializePresets,
|
|
requestPresetAtIndex,
|
|
selectRandomPreset,
|
|
selectNextPreset,
|
|
selectPreviousPreset,
|
|
appendPresetFileList,
|
|
handlePresetDrop,
|
|
loadPresets,
|
|
toggleRandomizePresets,
|
|
togglePresetCycling,
|
|
scheduleMilkdropMessage,
|
|
} from "./milkdrop";
|
|
|
|
export function close(): Thunk {
|
|
return dispatch => {
|
|
// TODO: This could probably be improved by adding a "PREVENT_CLOSE" action
|
|
// or something, but this works okay for now.
|
|
let defaultPrevented = false;
|
|
const cancel = () => {
|
|
defaultPrevented = true;
|
|
};
|
|
dispatch({ type: CLOSE_REQUESTED, cancel });
|
|
if (!defaultPrevented) {
|
|
dispatch({ type: STOP });
|
|
dispatch({ type: CLOSE_WINAMP });
|
|
}
|
|
};
|
|
}
|
|
|
|
export function open(): Action {
|
|
return { type: OPEN_WINAMP };
|
|
}
|
|
|
|
export function toggleVisualizerStyle(): Action {
|
|
return { type: TOGGLE_VISUALIZER_STYLE };
|
|
}
|
|
|
|
export function minimize(): Action {
|
|
return { type: MINIMIZE_WINAMP };
|
|
}
|
|
|
|
export function setFocus(input: string): Action {
|
|
return { type: SET_FOCUS, input };
|
|
}
|
|
|
|
export function unsetFocus(): Action {
|
|
return { type: UNSET_FOCUS };
|
|
}
|
|
|
|
export function loadSerializedState(
|
|
// In the future this type should be the union of all versioned types.
|
|
serializedState: SerializedStateV1
|
|
): Thunk {
|
|
return dispatch => {
|
|
dispatch({ type: LOAD_SERIALIZED_STATE, serializedState });
|
|
dispatch(ensureWindowsAreOnScreen());
|
|
};
|
|
}
|
|
|
|
export function loadDefaultSkin(): Action {
|
|
return { type: LOAD_DEFAULT_SKIN };
|
|
}
|
|
|
|
export function toggleMilkdropDesktop(): Thunk {
|
|
return (dispatch, getState) => {
|
|
if (Selectors.getMilkdropDesktopEnabled(getState())) {
|
|
dispatch(showWindow(WINDOWS.MILKDROP));
|
|
dispatch({ type: SET_MILKDROP_DESKTOP, enabled: false });
|
|
} else {
|
|
dispatch(hideWindow(WINDOWS.MILKDROP));
|
|
dispatch({ type: SET_MILKDROP_DESKTOP, enabled: true });
|
|
}
|
|
};
|
|
}
|
|
|
|
export function setMilkdropFullscreen(enabled: boolean): Action {
|
|
return { type: SET_MILKDROP_FULLSCREEN, enabled };
|
|
}
|
|
export function toggleMilkdropFullscreen(): Thunk {
|
|
return (dispatch, getState) => {
|
|
dispatch(
|
|
setMilkdropFullscreen(!Selectors.getMilkdropFullscreenEnabled(getState()))
|
|
);
|
|
};
|
|
}
|
|
|
|
export function togglePresetOverlay(): Thunk {
|
|
return (dispatch, getState) => {
|
|
if (Selectors.getPresetOverlayOpen(getState())) {
|
|
dispatch(setFocusedWindow(WINDOWS.MILKDROP));
|
|
}
|
|
|
|
dispatch({ type: TOGGLE_PRESET_OVERLAY });
|
|
};
|
|
}
|