diff --git a/backend/src/chitai/database/models/book_progress.py b/backend/src/chitai/database/models/book_progress.py
index 23c2fc4..580fab2 100644
--- a/backend/src/chitai/database/models/book_progress.py
+++ b/backend/src/chitai/database/models/book_progress.py
@@ -14,7 +14,11 @@ class BookProgress(BigIntAuditBase):
book_id: Mapped[int] = mapped_column(
ForeignKey("books.id", ondelete="cascade"), nullable=False
)
- epub_loc: Mapped[Optional[str]]
- pdf_loc: Mapped[Optional[int]]
- progress: Mapped[float]
+
+ epub_cfi: Mapped[Optional[str]]
+ epub_xpointer: Mapped[Optional[str]]
+ pdf_page: Mapped[Optional[int]]
+ percentage: Mapped[float]
completed: Mapped[Optional[bool]]
+ device: Mapped[Optional[str]] # Device that updated the progress
+ device_id: Mapped[Optional[str]]
diff --git a/backend/src/chitai/schemas/book.py b/backend/src/chitai/schemas/book.py
index 54e4bcd..eea0250 100644
--- a/backend/src/chitai/schemas/book.py
+++ b/backend/src/chitai/schemas/book.py
@@ -161,14 +161,20 @@ class BookMetadataUpdate(BaseModel):
class BookProgressCreate(BaseModel):
- progress: float
- epub_loc: str | None = None
- pdf_loc: int | None = None
+ percentage: float
+ epub_cfi: str | None = None
+ epub_xpointer: str | None = None
+ pdf_page: int | None = None
completed: bool | None = None
+ device_type: str | None = None
+ device_id: str | None = None
class BookProgressRead(BaseModel):
- progress: float
- epub_loc: str | None = None
- pdf_loc: int | None = None
+ percentage: float
+ epub_cfi: str | None = None
+ epub_xpointer: str | None = None
+ pdf_page: int | None = None
completed: bool | None = False
+ device_type: str | None = None
+ device_id: str | None = None
diff --git a/frontend/src/lib/components/reader/epub-reader.svelte b/frontend/src/lib/components/reader/epub-reader.svelte
index dc40bb1..cb88d22 100644
--- a/frontend/src/lib/components/reader/epub-reader.svelte
+++ b/frontend/src/lib/components/reader/epub-reader.svelte
@@ -79,8 +79,8 @@
await fetch(`/api/books/progress/${bookId}`, {
method: 'POST',
body: JSON.stringify({
- progress: currentProgress,
- epub_loc: currentLocation,
+ percentage: currentProgress,
+ epub_cfi: currentLocation,
completed: currentProgress === 1
})
});
diff --git a/frontend/src/lib/components/view/book-thumbnail.svelte b/frontend/src/lib/components/view/book-thumbnail.svelte
index f5044b6..2cd3a9b 100644
--- a/frontend/src/lib/components/view/book-thumbnail.svelte
+++ b/frontend/src/lib/components/view/book-thumbnail.svelte
@@ -38,9 +38,9 @@
: ''}"
/>
- {#if book.progress?.progress && !selected && !darkened}
+ {#if book.progress?.percentage && !selected && !darkened}
- {#if book?.progress?.progress}
+ {#if book?.progress?.percentage}