Merge pull request 'feat: add previous and next chapter IDs to MangaChapterImagesDTO and update retrieval logic' (#10) from feature/chapter-navigation into main
Reviewed-on: #10
This commit is contained in:
commit
17039afc52
@ -10,11 +10,15 @@ import java.util.List;
|
|||||||
public record MangaChapterImagesDTO(
|
public record MangaChapterImagesDTO(
|
||||||
@NotNull Long id,
|
@NotNull Long id,
|
||||||
@NotBlank String mangaTitle,
|
@NotBlank String mangaTitle,
|
||||||
|
Long previousChapterId,
|
||||||
|
Long nextChapterId,
|
||||||
@NotNull List<@NotBlank String> chapterImageKeys) {
|
@NotNull List<@NotBlank String> chapterImageKeys) {
|
||||||
public static MangaChapterImagesDTO from(MangaChapter mangaChapter) {
|
public static MangaChapterImagesDTO from(MangaChapter mangaChapter, Long prevId, Long nextId) {
|
||||||
return new MangaChapterImagesDTO(
|
return new MangaChapterImagesDTO(
|
||||||
mangaChapter.getId(),
|
mangaChapter.getId(),
|
||||||
mangaChapter.getTitle(),
|
mangaChapter.getTitle(),
|
||||||
|
prevId,
|
||||||
|
nextId,
|
||||||
mangaChapter.getMangaChapterImages().stream()
|
mangaChapter.getMangaChapterImages().stream()
|
||||||
.sorted(Comparator.comparing(MangaChapterImage::getPosition))
|
.sorted(Comparator.comparing(MangaChapterImage::getPosition))
|
||||||
.map(mangaChapterImage -> mangaChapterImage.getImage().getFileKey())
|
.map(mangaChapterImage -> mangaChapterImage.getImage().getFileKey())
|
||||||
|
|||||||
@ -99,7 +99,26 @@ public class MangaChapterService {
|
|||||||
public MangaChapterImagesDTO getMangaChapterImages(Long chapterId) {
|
public MangaChapterImagesDTO getMangaChapterImages(Long chapterId) {
|
||||||
var chapter = getMangaChapterThrowIfNotFound(chapterId);
|
var chapter = getMangaChapterThrowIfNotFound(chapterId);
|
||||||
|
|
||||||
return MangaChapterImagesDTO.from(chapter);
|
var chapters = chapter.getMangaProvider().getMangaChapters();
|
||||||
|
Long prevId = null;
|
||||||
|
Long nextId = null;
|
||||||
|
|
||||||
|
// TODO: this doesn't perform well for large datasets
|
||||||
|
for (var i = 0; i < chapters.size(); i++) {
|
||||||
|
if (chapters.get(i).getId().equals(chapterId)) {
|
||||||
|
if (i > 0) {
|
||||||
|
prevId = chapters.get(i - 1).getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i < chapters.size() - 1) {
|
||||||
|
nextId = chapters.get(i + 1).getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return MangaChapterImagesDTO.from(chapter, prevId, nextId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void markAsRead(Long chapterId) {
|
public void markAsRead(Long chapterId) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user