Update pages read total when book is selected in reading log entry edit modal view

This commit is contained in:
Evan Fiordeliso 2025-08-09 10:32:19 -04:00
parent 25e980eff1
commit 649b35f16c
1 changed files with 23 additions and 4 deletions

View File

@ -11,6 +11,10 @@
} from "@ui/stores/settings.svelte";
import moment from "@external/moment";
import { setAppContext } from "@ui/stores/app";
import {
createReadingLog,
setReadingLogContext,
} from "@ui/stores/reading-log.svelte";
const INPUT_DATETIME_FORMAT = "YYYY-MM-DDTHH:mm";
@ -26,17 +30,28 @@
const settingsStore = createSettings(plugin);
setSettingsContext(settingsStore);
const readingLogStore = createReadingLog(plugin.readingLog);
setReadingLogContext(readingLogStore);
const metadataStore = createMetadata(plugin, {
statusFilter: null,
});
let editMode = $derived(entry !== undefined);
const editMode = $derived(entry !== undefined);
let book = $state(entry?.book ?? "");
let bookMetadata = $derived(
const bookMetadata = $derived(
metadataStore.metadata.find((m) => m.file.basename === book),
);
const lastEntryIndex = $derived(
readingLogStore.entries.findLastIndex((e) => e.book === book),
);
const lastEntry = $derived(
lastEntryIndex !== -1 ? readingLogStore.entries[lastEntryIndex] : null,
);
const pageCount = $derived(bookMetadata?.book.pageCount ?? 0);
let pagesRead = $state(entry?.pagesRead ?? 0);
let pagesReadPrev = createPrevious(() => pagesRead);
const pagesReadPrev = createPrevious(() => pagesRead);
let pagesReadTotal = $state(entry?.pagesReadTotal ?? 0);
let pagesRemaining = $state(entry?.pagesRemaining ?? 0);
let createdAt = $state(
@ -44,6 +59,10 @@
moment().format(INPUT_DATETIME_FORMAT),
);
$effect(() => {
pagesReadTotal = (lastEntry?.pagesReadTotal ?? 0) + pagesRead;
});
$effect(() => {
const diff = pagesRead - (pagesReadPrev.value ?? 0);
pagesRead = pagesRead;
@ -51,7 +70,7 @@
});
$effect(() => {
pagesRemaining = (bookMetadata?.book.pageCount ?? 0) - pagesReadTotal;
pagesRemaining = pageCount - pagesReadTotal;
});
$effect(() => {