From bd923e4b8bdd4f2863ed3e9bea6a011a13cc59cf Mon Sep 17 00:00:00 2001 From: Jordan Eldredge Date: Sat, 6 Oct 2018 22:55:33 -0700 Subject: [PATCH] Refactor preset loading --- js/components/MilkdropWindow/index.js | 78 +++++++++++---------------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/js/components/MilkdropWindow/index.js b/js/components/MilkdropWindow/index.js index c3a48b66..128f7ac8 100644 --- a/js/components/MilkdropWindow/index.js +++ b/js/components/MilkdropWindow/index.js @@ -164,61 +164,47 @@ function presetNameFromURL(url) { } 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 (!("URLSearchParams" in window)) { + return null; } - - if (presetUrl) { - try { - const response = await fetch(presetUrl); - if (!response.ok) { - throw new Error(response.statusText); - } - const responseBody = await response.json(); - const presetName = presetNameFromURL(presetUrl); - return { [presetName]: responseBody }; - } catch (e) { - console.error(e); - - if (e instanceof TypeError) { - // handle URL not existing - alert(`Failed to load MilkDrop preset from ${milkdropPresetUrl}`); - } else if (e instanceof Error) { - // handle URL bad response - alert(`Unable to load MilkDrop preset from ${milkdropPresetUrl}`); - } - - return null; - } + const params = new URLSearchParams(location.search); + const butterchurnPresetUrl = params.get("butterchurnPresetUrl"); + const milkdropPresetUrl = params.get("milkdropPresetUrl"); + if (butterchurnPresetUrl && milkdropPresetUrl) { + alert( + "Unable to handle both milkdropPresetUrl and butterchurnPresetUrl. Please specify one or the other." + ); + } else if (butterchurnPresetUrl) { + return fetchPreset(butterchurnPresetUrl, { isButterchurn: true }); } else if (milkdropPresetUrl) { + return fetchPreset(milkdropPresetUrl, { isButterchurn: false }); + } + return null; +} + +async function fetchPreset(presetUrl, { isButterchurn }) { + const response = await fetch(presetUrl); + if (!response.ok) { + console.error(response.statusText); + alert(`Unable to load MilkDrop preset from ${presetUrl}`); + return null; + } + const presetName = presetNameFromURL(presetUrl); + + let preset = null; + if (isButterchurn) { 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 } }; + preset = await response.json(); } catch (e) { console.error(e); - - if (e instanceof TypeError) { - // handle URL not existing - alert(`Failed to load MilkDrop preset from ${milkdropPresetUrl}`); - } else if (e instanceof Error) { - // handle URL bad response - alert(`Unable to load MilkDrop preset from ${milkdropPresetUrl}`); - } - + alert(`Failed to parse MilkDrop preset from ${presetUrl}`); return null; } + } else { + preset = { file: await response.blob() }; } - return null; + return { [presetName]: preset }; } async function loadInitialDependencies() {