mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-27 12:03:52 +00:00
Allow passing in normal milkdrop preset url
This commit is contained in:
parent
9eedbe6609
commit
2a5747b84c
2 changed files with 32 additions and 2 deletions
|
|
@ -32,7 +32,13 @@ class Milkdrop extends React.Component {
|
|||
this.visualizer.connectAudio(this.props.analyser);
|
||||
this.presetCycle = true;
|
||||
if (this.props.initialPreset) {
|
||||
this.visualizer.loadPreset(this.props.initialPreset, 0);
|
||||
const presetIndices = this.props.presets.addPresets(
|
||||
this.props.initialPreset
|
||||
);
|
||||
this.selectPreset(
|
||||
await this.props.presets.selectIndex(presetIndices[0]),
|
||||
0
|
||||
);
|
||||
} else {
|
||||
this.selectPreset(this.props.presets.getCurrent(), 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -150,11 +150,20 @@ class PresetsLoader extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
function presetNameFromURL(url) {
|
||||
const urlParts = url.split("/");
|
||||
const lastPart = urlParts[urlParts.length - 1];
|
||||
const presetName = lastPart.substring(0, lastPart.length - 5); // remove .milk or .json
|
||||
return decodeURIComponent(presetName);
|
||||
}
|
||||
|
||||
async function loadInitialPreset() {
|
||||
let presetUrl = null;
|
||||
let milkdropPresetUrl = null;
|
||||
if ("URLSearchParams" in window) {
|
||||
const params = new URLSearchParams(location.search);
|
||||
presetUrl = params.get("butterchurnPresetUrl");
|
||||
milkdropPresetUrl = params.get("milkdropPresetUrl");
|
||||
}
|
||||
|
||||
if (presetUrl) {
|
||||
|
|
@ -164,12 +173,27 @@ async function loadInitialPreset() {
|
|||
throw new Error(response.statusText);
|
||||
}
|
||||
const responseBody = await response.json();
|
||||
return responseBody;
|
||||
const presetName = presetNameFromURL(presetUrl);
|
||||
return { [presetName]: responseBody };
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
alert(`Failed to load MilkDrop preset from ${presetUrl}`);
|
||||
return null;
|
||||
}
|
||||
} else if (milkdropPresetUrl) {
|
||||
try {
|
||||
const response = await fetch(milkdropPresetUrl);
|
||||
if (!response.ok) {
|
||||
throw new Error(response.statusText);
|
||||
}
|
||||
const fileBlob = await response.blob();
|
||||
const presetName = presetNameFromURL(milkdropPresetUrl);
|
||||
return { [presetName]: { file: fileBlob } };
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
alert(`Failed to load MilkDrop preset from ${milkdropPresetUrl}`);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue