diff --git a/src/lib/anki-connect/cropper.ts b/src/lib/anki-connect/cropper.ts index 99b06a9..52d060e 100644 --- a/src/lib/anki-connect/cropper.ts +++ b/src/lib/anki-connect/cropper.ts @@ -10,7 +10,7 @@ type CropperModal = { export const cropperStore = writable(undefined); -export function showCropper(image: string, sentence: string) { +export function showCropper(image: string, sentence?: string) { cropperStore.set({ open: true, image, diff --git a/src/lib/anki-connect/index.ts b/src/lib/anki-connect/index.ts index 0d6aede..53adef0 100644 --- a/src/lib/anki-connect/index.ts +++ b/src/lib/anki-connect/index.ts @@ -64,7 +64,7 @@ export async function imageToWebp(source: File) { } } -export async function updateLastCard(imageData: string | null | undefined, sentence: string) { +export async function updateLastCard(imageData: string | null | undefined, sentence?: string) { const { overwriteImage, enabled, @@ -88,7 +88,7 @@ export async function updateLastCard(imageData: string | null | undefined, sente const fields: Record = {}; - if (grabSentence) { + if (grabSentence && sentence) { fields[sentenceField] = sentence; } diff --git a/src/lib/components/Reader/Cropper.svelte b/src/lib/components/Reader/Cropper.svelte index 3415e4c..d9e1ea8 100644 --- a/src/lib/components/Reader/Cropper.svelte +++ b/src/lib/components/Reader/Cropper.svelte @@ -1,6 +1,7 @@ + +{#if $settings.quickActions} + + {#if $settings.ankiConnectSettings.enabled} + + + + {/if} + + + + + + + + + + +{/if} diff --git a/src/lib/components/Reader/Reader.svelte b/src/lib/components/Reader/Reader.svelte index f0aa50d..32da4d7 100644 --- a/src/lib/components/Reader/Reader.svelte +++ b/src/lib/components/Reader/Reader.svelte @@ -21,7 +21,7 @@ import { page as pageStore } from '$app/stores'; import SettingsButton from './SettingsButton.svelte'; import { getCharCount } from '$lib/util/count-chars'; - import { afterUpdate } from 'svelte'; + import QuickActions from './QuickActions.svelte'; // TODO: Refactor this whole mess export let volumeSettings: VolumeSettings; @@ -196,7 +196,7 @@ const { scale } = $panzoomStore.getTransform(); if (scale < 0.6) { - $panzoomStore.zoomTo(clientX, clientY, 1.5); + $panzoomStore.zoomTo(clientX, clientY, 1.4); } else { zoomFitToScreen(); } @@ -213,8 +213,9 @@ {volume?.mokuroData.volume || 'Volume'} - {#if volume && pages} + +
@@ -266,11 +267,13 @@
diff --git a/src/lib/components/Settings/Reader/ReaderToggles.svelte b/src/lib/components/Settings/Reader/ReaderToggles.svelte index a98b13c..f33bfe8 100644 --- a/src/lib/components/Settings/Reader/ReaderToggles.svelte +++ b/src/lib/components/Settings/Reader/ReaderToggles.svelte @@ -10,7 +10,8 @@ { key: 'pageNum', text: 'Show page number', value: $settings.pageNum }, { key: 'charCount', text: 'Show character count', value: $settings.charCount }, { key: 'mobile', text: 'Mobile', value: $settings.mobile }, - { key: 'showTimer', text: 'Show timer', value: $settings.showTimer } + { key: 'showTimer', text: 'Show timer', value: $settings.showTimer }, + { key: 'quickActions', text: 'Show quick actions', value: $settings.quickActions } ] as { key: SettingsKey; text: string; value: any }[]; diff --git a/src/lib/components/Settings/Settings.svelte b/src/lib/components/Settings/Settings.svelte index bdbf34c..d9738fa 100644 --- a/src/lib/components/Settings/Settings.svelte +++ b/src/lib/components/Settings/Settings.svelte @@ -13,6 +13,7 @@ import VolumeSettings from './Volume/VolumeSettings.svelte'; import About from './About.svelte'; import QuickAccess from './QuickAccess.svelte'; + import { beforeNavigate } from '$app/navigation'; let transitionParams = { x: 320, @@ -30,6 +31,13 @@ function onClose() { hidden = true; } + + beforeNavigate((nav) => { + if (!hidden) { + nav.cancel(); + hidden = true; + } + }); diff --git a/src/lib/settings/settings.ts b/src/lib/settings/settings.ts index cc02435..9692382 100644 --- a/src/lib/settings/settings.ts +++ b/src/lib/settings/settings.ts @@ -49,7 +49,9 @@ export type Settings = { mobile: boolean; backgroundColor: string; swipeThreshold: number; + edgeButtonWidth: number; showTimer: boolean; + quickActions: boolean; fontSize: FontSize; zoomDefault: ZoomModes; volumeDefaults: VolumeDefaults; @@ -72,7 +74,9 @@ const defaultSettings: Settings = { mobile: false, backgroundColor: '#030712', swipeThreshold: 50, + edgeButtonWidth: 10, showTimer: false, + quickActions: true, fontSize: 'auto', zoomDefault: 'zoomFitToScreen', volumeDefaults: {