mirror of
https://github.com/captbaritone/webamp.git
synced 2026-08-01 22:45:18 +00:00
Add butterchurnPresetUrl param (#625)
* Add butterchurnPresetUrl param * handle failed preset load, dont pass url around
This commit is contained in:
parent
2f0d20bbc8
commit
0f31d07400
2 changed files with 38 additions and 7 deletions
|
|
@ -31,7 +31,11 @@ export default class Milkdrop extends React.Component {
|
|||
);
|
||||
this.visualizer.connectAudio(this.props.analyser);
|
||||
this.presetCycle = true;
|
||||
this.selectPreset(this.props.presets.getCurrent(), 0);
|
||||
if (this.props.initialPreset) {
|
||||
this.visualizer.loadPreset(this.props.initialPreset, 0);
|
||||
} else {
|
||||
this.selectPreset(this.props.presets.getCurrent(), 0);
|
||||
}
|
||||
|
||||
// Kick off the animation loop
|
||||
const loop = () => {
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ class PresetsLoader extends React.Component {
|
|||
super();
|
||||
this.state = {
|
||||
presets: null,
|
||||
initialPreset: null,
|
||||
butterchurn: null,
|
||||
isFullscreen: false,
|
||||
desktop: false
|
||||
|
|
@ -35,14 +36,14 @@ class PresetsLoader extends React.Component {
|
|||
}
|
||||
|
||||
async componentDidMount() {
|
||||
const {
|
||||
butterchurn,
|
||||
presetKeys,
|
||||
minimalPresets
|
||||
} = await loadInitialDependencies();
|
||||
const [
|
||||
{ butterchurn, presetKeys, minimalPresets },
|
||||
initialPreset
|
||||
] = await Promise.all([loadInitialDependencies(), loadInitialPreset()]);
|
||||
|
||||
this.setState({
|
||||
butterchurn,
|
||||
initialPreset,
|
||||
presets: new Presets({
|
||||
keys: presetKeys,
|
||||
initialPresets: minimalPresets,
|
||||
|
|
@ -81,7 +82,7 @@ class PresetsLoader extends React.Component {
|
|||
}
|
||||
|
||||
_renderMilkdrop(size) {
|
||||
const { butterchurn, presets } = this.state;
|
||||
const { butterchurn, presets, initialPreset } = this.state;
|
||||
const loaded = butterchurn != null && presets != null;
|
||||
const { width, height } = this.state.isFullscreen
|
||||
? { width: screen.width, height: screen.height }
|
||||
|
|
@ -98,6 +99,7 @@ class PresetsLoader extends React.Component {
|
|||
height={height}
|
||||
isFullscreen={this.state.isFullscreen}
|
||||
presets={presets}
|
||||
initialPreset={initialPreset}
|
||||
butterchurn={butterchurn}
|
||||
/>
|
||||
)}
|
||||
|
|
@ -151,6 +153,31 @@ class PresetsLoader extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
async function loadInitialPreset() {
|
||||
let presetUrl = null;
|
||||
if ("URLSearchParams" in window) {
|
||||
const params = new URLSearchParams(location.search);
|
||||
presetUrl = params.get("butterchurnPresetUrl");
|
||||
}
|
||||
|
||||
if (presetUrl) {
|
||||
try {
|
||||
const response = await fetch(presetUrl);
|
||||
if (!response.ok) {
|
||||
throw new Error(response.statusText);
|
||||
}
|
||||
const responseBody = await response.json();
|
||||
return responseBody;
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
alert(`Failed to load MilkDrop preset from ${presetUrl}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
async function loadInitialDependencies() {
|
||||
return new Promise((resolve, reject) => {
|
||||
require.ensure(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue