diff --git a/booklore-api/src/main/java/org/booklore/repository/UserBookFileProgressRepository.java b/booklore-api/src/main/java/org/booklore/repository/UserBookFileProgressRepository.java index 6713c2926..7b39079e5 100644 --- a/booklore-api/src/main/java/org/booklore/repository/UserBookFileProgressRepository.java +++ b/booklore-api/src/main/java/org/booklore/repository/UserBookFileProgressRepository.java @@ -6,6 +6,8 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import org.springframework.data.jpa.repository.Modifying; + import java.util.List; import java.util.Optional; @@ -58,4 +60,12 @@ public interface UserBookFileProgressRepository extends JpaRepository bookIds ); + + @Modifying + @Query(""" + DELETE FROM UserBookFileProgressEntity ubfp + WHERE ubfp.user.id = :userId + AND ubfp.bookFile.book.id IN :bookIds + """) + int deleteByUserIdAndBookIds(@Param("userId") Long userId, @Param("bookIds") Iterable bookIds); } diff --git a/booklore-api/src/main/java/org/booklore/service/progress/ReadingProgressService.java b/booklore-api/src/main/java/org/booklore/service/progress/ReadingProgressService.java index ac1d4ba1e..bd42f98c1 100644 --- a/booklore-api/src/main/java/org/booklore/service/progress/ReadingProgressService.java +++ b/booklore-api/src/main/java/org/booklore/service/progress/ReadingProgressService.java @@ -431,7 +431,10 @@ public class ReadingProgressService { List bookIdList = new ArrayList<>(bookIds); switch (type) { - case BOOKLORE -> userBookProgressRepository.bulkResetBookloreProgress(userId, bookIdList, now); + case BOOKLORE -> { + userBookProgressRepository.bulkResetBookloreProgress(userId, bookIdList, now); + userBookFileProgressRepository.deleteByUserIdAndBookIds(userId, bookIdList); + } case KOREADER -> userBookProgressRepository.bulkResetKoreaderProgress(userId, bookIdList); case KOBO -> { userBookProgressRepository.bulkResetKoboProgress(userId, bookIdList); diff --git a/booklore-ui/src/app/features/book/service/book-patch.service.ts b/booklore-ui/src/app/features/book/service/book-patch.service.ts index 44f74ace0..0db365550 100644 --- a/booklore-ui/src/app/features/book/service/book-patch.service.ts +++ b/booklore-ui/src/app/features/book/service/book-patch.service.ts @@ -163,8 +163,13 @@ export class BookPatchService { const updatedBooks = (currentState.books || []).map(book => { const response = responses.find(r => r.bookId === book.id); if (response) { + const progressReset: Partial = + type === 'KOREADER' ? {koreaderProgress: undefined} : + type === 'KOBO' ? {koboProgress: undefined} : + {epubProgress: undefined, pdfProgress: undefined, cbxProgress: undefined, audiobookProgress: undefined}; return { ...book, + ...progressReset, readStatus: response.readStatus, readStatusModifiedTime: response.readStatusModifiedTime, dateFinished: response.dateFinished