diff --git a/src/lib/components/ConfirmationPopup.svelte b/src/lib/components/ConfirmationPopup.svelte
index 9c1ae0e..d4f5643 100644
--- a/src/lib/components/ConfirmationPopup.svelte
+++ b/src/lib/components/ConfirmationPopup.svelte
@@ -22,6 +22,6 @@
{$confirmationPopupStore?.message}
-
+
diff --git a/src/lib/util/modals.ts b/src/lib/util/modals.ts
index 08916e1..9a278fc 100644
--- a/src/lib/util/modals.ts
+++ b/src/lib/util/modals.ts
@@ -4,13 +4,15 @@ type ConfirmationPopup = {
open: boolean;
message: string;
onConfirm?: () => void;
+ onCancel?: () => void;
};
export const confirmationPopupStore = writable(undefined);
-export function promptConfirmation(message: string, onConfirm?: () => void) {
+export function promptConfirmation(message: string, onConfirm?: () => void, onCancel?: () => void) {
confirmationPopupStore.set({
open: true,
message,
- onConfirm
+ onConfirm,
+ onCancel
});
}
diff --git a/src/routes/upload/+page.svelte b/src/routes/upload/+page.svelte
index da1edd5..1a00320 100644
--- a/src/routes/upload/+page.svelte
+++ b/src/routes/upload/+page.svelte
@@ -3,7 +3,8 @@
import { page } from '$app/stores';
import Loader from '$lib/components/Loader.svelte';
import { getItems, processFiles } from '$lib/upload';
- import { Button } from 'flowbite-svelte';
+ import { promptConfirmation, showSnackbar } from '$lib/util';
+ import { onMount } from 'svelte';
export const BASE_URL = 'https://www.mokuro.moe/manga';
const manga = $page.url.searchParams.get('manga');
@@ -11,12 +12,10 @@
const url = `${BASE_URL}/${manga}/${volume}`;
let message = 'Loading...';
- let loading = false;
let files: File[] = [];
async function onImport() {
- loading = true;
const mokuroRes = await fetch(url + '.mokuro');
const mokuroBlob = await mokuroRes.blob();
const mokuroFile = new File([mokuroBlob], volume + '.mokuro', { type: mokuroBlob.type });
@@ -51,14 +50,22 @@
console.log(files);
processFiles(files).then(() => {
- goto('/');
+ goto('/', { replaceState: true });
});
- loading = true;
}
+
+ function onCancel() {
+ goto('/', { replaceState: true });
+ }
+
+ onMount(() => {
+ if (!manga || !volume) {
+ showSnackbar('Something went wrong');
+ onCancel();
+ } else {
+ promptConfirmation(`Import ${decodeURI(volume || '')} into catalog?`, onImport, onCancel);
+ }
+ });
-{#if loading}
- {message}
-{:else}
-
-{/if}
+{message}