fix: Addressing PR comments

This commit is contained in:
Tyler Kenney 2025-06-06 08:48:46 -04:00
parent 6498aa7fe5
commit 6e313dfffe
5 changed files with 15 additions and 6 deletions

View file

@ -81,7 +81,12 @@ public class KoreaderController : BaseApiController
} }
} }
/// <summary>
/// Gets book progress from Kavita, if not found will return a 400
/// </summary>
/// <param name="apiKey"></param>
/// <param name="ebookHash"></param>
/// <returns></returns>
[HttpGet("{apiKey}/syncs/progress/{ebookHash}")] [HttpGet("{apiKey}/syncs/progress/{ebookHash}")]
public async Task<ActionResult<KoreaderBookDto>> GetProgress(string apiKey, string ebookHash) public async Task<ActionResult<KoreaderBookDto>> GetProgress(string apiKey, string ebookHash)
{ {

View file

@ -4,6 +4,12 @@ namespace API.DTOs.Koreader;
public class KoreaderProgressUpdateDto public class KoreaderProgressUpdateDto
{ {
/// <summary>
/// This is the Koreader hash of the book. It is used to identify the book.
/// </summary>
public string Document { get; set; } public string Document { get; set; }
/// <summary>
/// UTC Timestamp to return to KOReader
/// </summary>
public DateTime Timestamp { get; set; } public DateTime Timestamp { get; set; }
} }

View file

@ -40,6 +40,6 @@ public class MangaFileRepository : IMangaFileRepository
return await _context.MangaFile return await _context.MangaFile
.FirstOrDefaultAsync(f => f.KoreaderHash != null && .FirstOrDefaultAsync(f => f.KoreaderHash != null &&
EF.Functions.Like(f.KoreaderHash, hash)); f.KoreaderHash.Equals(hash.ToUpper()));
} }
} }

View file

@ -38,8 +38,7 @@ public class KoreaderBookDtoBuilder : IEntityBuilder<KoreaderBookDto>
public KoreaderBookDtoBuilder WithDeviceId(string installId, int userId) public KoreaderBookDtoBuilder WithDeviceId(string installId, int userId)
{ {
using var sha256 = SHA256.Create(); var hash = SHA256.HashData(Encoding.UTF8.GetBytes(installId + userId));
var hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(installId + userId));
_dto.Device_id = hash.ToString(); _dto.Device_id = hash.ToString();
return this; return this;
} }

View file

@ -74,7 +74,6 @@ public class KoreaderService : IKoreaderService
public async Task<KoreaderBookDto> GetProgress(string bookHash, int userId) public async Task<KoreaderBookDto> GetProgress(string bookHash, int userId)
{ {
var settingsDto = await _unitOfWork.SettingsRepository.GetSettingsDtoAsync(); var settingsDto = await _unitOfWork.SettingsRepository.GetSettingsDtoAsync();
var builder = new KoreaderBookDtoBuilder(bookHash);
var file = await _unitOfWork.MangaFileRepository.GetByKoreaderHash(bookHash); var file = await _unitOfWork.MangaFileRepository.GetByKoreaderHash(bookHash);
@ -83,7 +82,7 @@ public class KoreaderService : IKoreaderService
var progressDto = await _unitOfWork.AppUserProgressRepository.GetUserProgressDtoAsync(file.ChapterId, userId); var progressDto = await _unitOfWork.AppUserProgressRepository.GetUserProgressDtoAsync(file.ChapterId, userId);
var koreaderProgress = KoreaderHelper.GetKoreaderPosition(progressDto); var koreaderProgress = KoreaderHelper.GetKoreaderPosition(progressDto);
return builder.WithProgress(koreaderProgress) return new KoreaderBookDtoBuilder(bookHash).WithProgress(koreaderProgress)
.WithPercentage(progressDto?.PageNum, file.Pages) .WithPercentage(progressDto?.PageNum, file.Pages)
.WithDeviceId(settingsDto.InstallId, userId) .WithDeviceId(settingsDto.InstallId, userId)
.Build(); .Build();