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