From f8559f0b028406c466066b641a45b641abd186e7 Mon Sep 17 00:00:00 2001 From: Fathony Date: Fri, 18 Mar 2022 13:18:47 +0700 Subject: [PATCH] allow external *.wal sample: http://localhost:8080/?skin=/assets/extracted/skins/MMD3.wal --- packages/webamp-modern-2/src/index.ts | 7 +++---- packages/webamp-modern-2/src/utils.ts | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/packages/webamp-modern-2/src/index.ts b/packages/webamp-modern-2/src/index.ts index efb64840..f15d0f6b 100644 --- a/packages/webamp-modern-2/src/index.ts +++ b/packages/webamp-modern-2/src/index.ts @@ -3,7 +3,7 @@ import JSZip from "jszip"; import { classResolver } from "./skin/resolver"; import SkinParser from "./skin/parse"; import UI_ROOT from "./UIRoot"; -import { removeAllChildNodes } from "./utils"; +import { getUrlQuery, removeAllChildNodes } from "./utils"; import { addDropHandler } from "./dropTarget"; function hack() { @@ -22,9 +22,8 @@ function setStatus(status: string) { async function main() { setStatus("Downloading skin..."); - // const response = await fetch("assets/CornerAmp_Redux.wal"); - // const response = await fetch("assets/Default_winamp3_build499.wal"); - const response = await fetch("assets/MMD3.wal"); + const skinPath = getUrlQuery(window.location, 'skin') || "assets/MMD3.wal"; + const response = await fetch(skinPath); const data = await response.blob(); await loadSkin(data); } diff --git a/packages/webamp-modern-2/src/utils.ts b/packages/webamp-modern-2/src/utils.ts index 1ceb3078..5e0918fb 100644 --- a/packages/webamp-modern-2/src/utils.ts +++ b/packages/webamp-modern-2/src/utils.ts @@ -80,6 +80,20 @@ export function findLast( } } + +export function getUrlQuery(location:Location, variable:string):string { + var query = location.search.substring(1); + var vars = query.split('&'); + for (var i = 0; i < vars.length; i++) { + var pair = vars[i].split('='); + if (decodeURIComponent(pair[0]) == variable) { + return decodeURIComponent(pair[1]); + } + } + console.log('Query variable %s not found', variable); + return null; +} + export class Emitter { _cbs: { [event: string]: Array<() => void> } = {}; on(event: string, cb: () => void) {