Continue Reading Bugfix (#2010)
* Fixed an edge case where continue point wasn't considering any chapters that had progress. Continue point is now slightly faster and uses less memory. * Added a unit test for a user's case. Still not reproducible
This commit is contained in:
parent
84d45a15d0
commit
7fcec4a112
4 changed files with 191 additions and 5 deletions
|
@ -478,10 +478,9 @@ public class ReaderService : IReaderService
|
|||
/// <returns></returns>
|
||||
public async Task<ChapterDto> GetContinuePoint(int seriesId, int userId)
|
||||
{
|
||||
var progress = (await _unitOfWork.AppUserProgressRepository.GetUserProgressForSeriesAsync(seriesId, userId)).ToList();
|
||||
var volumes = (await _unitOfWork.VolumeRepository.GetVolumesDtoAsync(seriesId, userId)).ToList();
|
||||
|
||||
if (progress.Count == 0)
|
||||
if (!await _unitOfWork.AppUserProgressRepository.AnyUserProgressForSeriesAsync(seriesId, userId))
|
||||
{
|
||||
// I think i need a way to sort volumes last
|
||||
return volumes.OrderBy(v => double.Parse(v.Number + string.Empty), _chapterSortComparer).First().Chapters
|
||||
|
@ -523,13 +522,14 @@ public class ReaderService : IReaderService
|
|||
return lastChapter;
|
||||
}
|
||||
|
||||
// If the last chapter didn't fit, then we need the next chapter without any progress
|
||||
var firstChapterWithoutProgress = volumeChapters.FirstOrDefault(c => c.PagesRead == 0);
|
||||
// If the last chapter didn't fit, then we need the next chapter without full progress
|
||||
var firstChapterWithoutProgress = volumeChapters.FirstOrDefault(c => c.PagesRead < c.Pages);
|
||||
if (firstChapterWithoutProgress != null)
|
||||
{
|
||||
return firstChapterWithoutProgress;
|
||||
}
|
||||
|
||||
|
||||
// chaptersWithProgress are all read, then we need to get the next chapter that doesn't have progress
|
||||
var lastIndexWithProgress = volumeChapters.IndexOf(lastChapter);
|
||||
if (lastIndexWithProgress + 1 < volumeChapters.Count)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue