diff --git a/src/packager/SelectProject.svelte b/src/packager/SelectProject.svelte index 5b0ff08..6a9cdc8 100644 --- a/src/packager/SelectProject.svelte +++ b/src/packager/SelectProject.svelte @@ -9,7 +9,7 @@ export let projectData = null; const type = writablePersistentStore('SelectProject.type', 'id'); - const projectId = writablePersistentStore('SelectProject.id', 'https://scratch.mit.edu/projects/60917032/'); + const projectId = writablePersistentStore('SelectProject.id', '60917032'); let files = null; const reset = () => { @@ -19,10 +19,10 @@ // Reset project whenever an input changes $: files, $projectId, $type, reset(); - const getId = () => { - const match = $projectId.match(/\d+/); + const extractProjectId = (text) => { + const match = text.match(/\d+/); if (!match) { - return null; + return ''; } return match[0]; }; @@ -55,7 +55,7 @@ }; if ($type === 'id') { - id = getId(); + id = $projectId; if (!id) { throw new UserError('Invalid project ID'); } @@ -87,6 +87,26 @@ progress.reset(); }; + + // just incase some non-number string was stored from older versions + $projectId = extractProjectId($projectId); + + const getDisplayedProjectURL = () => `https://scratch.mit.edu/projects/${$projectId}`; + $: projectIdInput = getDisplayedProjectURL(); + + const handleKeyPress = (e) => { + if (e.key === 'Enter') { + e.target.blur(); + load(); + } + }; + const handleInput = (e) => { + $projectId = extractProjectId(e.target.value); + e.target.value = getDisplayedProjectURL(); + }; + const handleFocus = (e) => { + e.target.select(); + };