diff --git a/ui/src/config.ts b/ui/src/config.ts index 817497e..dbbbef9 100644 --- a/ui/src/config.ts +++ b/ui/src/config.ts @@ -1,10 +1,12 @@ import { Writable, writable } from 'svelte/store'; +import { debugFromParams, debugStageFromParams } from './processParameters'; -export const debugEnabled = storedWritable('debugEnabled', false); -export const debugStage = storedWritable('debugStage', 0); +export const debugEnabled = storedWritable('debugEnabled', false, debugFromParams); +export const debugStage = storedWritable('debugStage', 0, debugStageFromParams); -function storedWritable(key: string, defaultValue: T): Writable { - const store = writable(fromLocalStore(key, defaultValue)); +function storedWritable(key: string, defaultValue: T, paramLoadFunction: (defaultValue: T) => T): Writable { + const value = paramLoadFunction(fromLocalStore(key, defaultValue)); + const store = writable(value); store.subscribe((value) => { localStorage.setItem(key, JSON.stringify(value)); }); diff --git a/ui/src/main/Upload.svelte b/ui/src/main/Upload.svelte index 1d0115a..209c40f 100644 --- a/ui/src/main/Upload.svelte +++ b/ui/src/main/Upload.svelte @@ -7,12 +7,21 @@ import ProgressRing from '../components/ProgressRing.svelte'; import Checkbox from '../components/Checkbox.svelte'; import { debugEnabled } from '../config'; + import { urlFromParams } from '../processParameters'; let specifiedFileName: string; let dragover = false; let upload: Promise; let rejectionError: string; let parseProgress: Progress; + + const url = urlFromParams(); + if (url) { + dragover = true; + specifiedFileName = url; + upload = loadUrl(handleProgress, url); + } + function handleUrlLoad() { dragover = true; let answer = prompt('Url of the pdf'); diff --git a/ui/src/processParameters.ts b/ui/src/processParameters.ts new file mode 100644 index 0000000..26f5a89 --- /dev/null +++ b/ui/src/processParameters.ts @@ -0,0 +1,26 @@ +const params = new URLSearchParams(window.location.search); + +export function debugFromParams(defaultValue: boolean): boolean { + const defined = params.has('debug'); + if (!defined) { + return defaultValue; + } + return params.get('debug') !== 'false'; +} + +export function debugStageFromParams(defaultValue: number): number { + const stage = +params.get('stage'); + if (!Number.isInteger(stage)) { + return defaultValue; + } + return stage; +} + +export function urlFromParams(): string { + return getParameterByName('url'); +} + +function getParameterByName(name: string): string { + const match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); + return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); +}