@@ -15,11 +15,13 @@
:total-pages="store.totalPages"
:is-first-page="store.isFirstPage"
:is-last-page="store.isLastPage"
+ :available-chapters="availableChapters"
@previous="store.previousPage"
- @next="store.nextPage" />
+ @next="store.nextPage"
+ @chapter-selected="handleChapterSelected" />
-
@@ -42,16 +44,20 @@
+
+
diff --git a/assets/vue/app/domain/reader/presentation/components/InfiniteReader.vue b/assets/vue/app/domain/reader/presentation/components/InfiniteReader.vue
index 6dc49e2..5fdc48f 100644
--- a/assets/vue/app/domain/reader/presentation/components/InfiniteReader.vue
+++ b/assets/vue/app/domain/reader/presentation/components/InfiniteReader.vue
@@ -1,21 +1,53 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/vue/app/domain/reader/presentation/components/ReaderControls.vue b/assets/vue/app/domain/reader/presentation/components/ReaderControls.vue
index 308bae0..db68032 100644
--- a/assets/vue/app/domain/reader/presentation/components/ReaderControls.vue
+++ b/assets/vue/app/domain/reader/presentation/components/ReaderControls.vue
@@ -3,7 +3,17 @@
- {{ currentPage + 1 }} / {{ totalPages }}
+
+
+
{{ currentPage + 1 }} / {{ totalPages }}
+
+
+
+
+
@@ -12,6 +22,7 @@
diff --git a/src/Domain/Reader/Infrastructure/Persistence/LegacyChapterRepository.php b/src/Domain/Reader/Infrastructure/Persistence/LegacyChapterRepository.php
index 9feed86..4d29d3a 100644
--- a/src/Domain/Reader/Infrastructure/Persistence/LegacyChapterRepository.php
+++ b/src/Domain/Reader/Infrastructure/Persistence/LegacyChapterRepository.php
@@ -128,6 +128,8 @@ readonly class LegacyChapterRepository implements ChapterRepositoryInterface
->from(ChapterEntity::class, 'c')
->where('c.manga = :manga')
->andWhere('c.number < :number')
+ ->andWhere('c.visible = true')
+ ->andWhere('c.cbzPath IS NOT NULL')
->orderBy('c.number', 'DESC')
->setMaxResults(1)
->setParameters([
@@ -151,6 +153,8 @@ readonly class LegacyChapterRepository implements ChapterRepositoryInterface
->from(ChapterEntity::class, 'c')
->where('c.manga = :manga')
->andWhere('c.number > :number')
+ ->andWhere('c.visible = true')
+ ->andWhere('c.cbzPath IS NOT NULL')
->orderBy('c.number', 'ASC')
->setMaxResults(1)
->setParameters([