using System.Collections.Generic; using System.Threading.Tasks; using Kavita.Common.Helpers; using Kavita.Models.DTOs.ReadingLists; using Kavita.Models.DTOs.ReadingLists.CBL; using Kavita.Models.Entities; using Kavita.Models.Entities.Enums; using Kavita.Models.Entities.User; namespace Kavita.API.Services.Reading; public interface IReadingListService { Task CreateReadingListForUser(AppUser userWithReadingList, string title); Task UpdateReadingList(ReadingList readingList, UpdateReadingListDto dto); Task RemoveFullyReadItems(int readingListId, AppUser user); Task UpdateReadingListItemPosition(UpdateReadingListPosition dto); Task DeleteReadingListItem(UpdateReadingListPosition dto); Task UserHasReadingListAccess(int readingListId, string username); Task DeleteReadingList(int readingListId, AppUser user); Task CalculateReadingListAgeRating(ReadingList readingList); Task AddChaptersToReadingList(int seriesId, IList chapterIds, ReadingList readingList); Task ValidateCblFile(int userId, CblReadingList cblReading, bool useComicLibraryMatching = false); Task CreateReadingListFromCbl(int userId, CblReadingList cblReading, bool dryRun = false, bool useComicLibraryMatching = false); Task CalculateStartAndEndDates(ReadingList readingListWithItems); /// /// This is expected to be called from ProcessSeries and has the Full Series present. Will generate on the default admin user. /// /// /// /// Task CreateReadingListsFromSeries(Series series, Library library); Task CreateReadingListsFromSeries(int libraryId, int seriesId); Task GenerateReadingListCoverImage(int readingListId); /// /// Check, and update if needed, all reading lists' AgeRating who contain the passed series /// /// The series whose age rating is being updated /// The new (uncommited) age rating of the series /// /// This method does not commit changes Task UpdateReadingListAgeRatingForSeries(int seriesId, AgeRating ageRating); Task> GetReadingListItems(int readingListId, int userId, UserParams? userParams = null); Task GetContinueReadingPoint(int readingListId, int userId); }