diff --git a/src/main/java/com/magamochi/mangamochi/model/dto/MangaChapterImagesDTO.java b/src/main/java/com/magamochi/mangamochi/model/dto/MangaChapterImagesDTO.java index d7d2542..f13bff6 100644 --- a/src/main/java/com/magamochi/mangamochi/model/dto/MangaChapterImagesDTO.java +++ b/src/main/java/com/magamochi/mangamochi/model/dto/MangaChapterImagesDTO.java @@ -10,11 +10,15 @@ import java.util.List; public record MangaChapterImagesDTO( @NotNull Long id, @NotBlank String mangaTitle, + Long previousChapterId, + Long nextChapterId, @NotNull List<@NotBlank String> chapterImageKeys) { - public static MangaChapterImagesDTO from(MangaChapter mangaChapter) { + public static MangaChapterImagesDTO from(MangaChapter mangaChapter, Long prevId, Long nextId) { return new MangaChapterImagesDTO( mangaChapter.getId(), mangaChapter.getTitle(), + prevId, + nextId, mangaChapter.getMangaChapterImages().stream() .sorted(Comparator.comparing(MangaChapterImage::getPosition)) .map(mangaChapterImage -> mangaChapterImage.getImage().getFileKey()) diff --git a/src/main/java/com/magamochi/mangamochi/service/MangaChapterService.java b/src/main/java/com/magamochi/mangamochi/service/MangaChapterService.java index 1cef271..943dbd8 100644 --- a/src/main/java/com/magamochi/mangamochi/service/MangaChapterService.java +++ b/src/main/java/com/magamochi/mangamochi/service/MangaChapterService.java @@ -99,7 +99,26 @@ public class MangaChapterService { public MangaChapterImagesDTO getMangaChapterImages(Long 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) { diff --git a/src/main/java/com/magamochi/mangamochi/util/JwtUtil.java b/src/main/java/com/magamochi/mangamochi/util/JwtUtil.java index 413ebd7..4fc03b9 100644 --- a/src/main/java/com/magamochi/mangamochi/util/JwtUtil.java +++ b/src/main/java/com/magamochi/mangamochi/util/JwtUtil.java @@ -31,9 +31,9 @@ public class JwtUtil { return extractClaim(token, Claims::getSubject, getAccessSigningKey()); } - public String extractUsernameFromRefreshToken(String token) { - return extractClaim(token, Claims::getSubject, getRefreshSigningKey()); - } + public String extractUsernameFromRefreshToken(String token) { + return extractClaim(token, Claims::getSubject, getRefreshSigningKey()); + } public String generateAccessToken(UserDetails userDetails) { Map claims = new HashMap<>();