From 83843ff5dd73f5c0c5e24c3e40e1a70e768bf974 Mon Sep 17 00:00:00 2001 From: ZXY101 Date: Sun, 11 Feb 2024 07:25:41 +0200 Subject: [PATCH] Various QOL changes --- src/lib/anki-connect/cropper.ts | 2 +- src/lib/anki-connect/index.ts | 4 +- src/lib/components/Reader/Cropper.svelte | 9 ++- src/lib/components/Reader/QuickActions.svelte | 74 +++++++++++++++++++ src/lib/components/Reader/Reader.svelte | 9 ++- .../components/Settings/QuickAccess.svelte | 5 +- .../Settings/Reader/ReaderSettings.svelte | 23 +++++- .../Settings/Reader/ReaderToggles.svelte | 3 +- src/lib/components/Settings/Settings.svelte | 8 ++ .../Settings/Volume/VolumeDefaults.svelte | 6 +- src/lib/settings/settings.ts | 4 + 11 files changed, 128 insertions(+), 19 deletions(-) create mode 100644 src/lib/components/Reader/QuickActions.svelte 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: {