diff --git a/API/Controllers/KoreaderController.cs b/API/Controllers/KoreaderController.cs
index 895419629..1ce5e3202 100644
--- a/API/Controllers/KoreaderController.cs
+++ b/API/Controllers/KoreaderController.cs
@@ -81,7 +81,12 @@ public class KoreaderController : BaseApiController
}
}
-
+ ///
+ /// Gets book progress from Kavita, if not found will return a 400
+ ///
+ ///
+ ///
+ ///
[HttpGet("{apiKey}/syncs/progress/{ebookHash}")]
public async Task> GetProgress(string apiKey, string ebookHash)
{
diff --git a/API/DTOs/Koreader/KoreaderProgressUpdateDto.cs b/API/DTOs/Koreader/KoreaderProgressUpdateDto.cs
index 6472cda10..52a1d6cbd 100644
--- a/API/DTOs/Koreader/KoreaderProgressUpdateDto.cs
+++ b/API/DTOs/Koreader/KoreaderProgressUpdateDto.cs
@@ -4,6 +4,12 @@ namespace API.DTOs.Koreader;
public class KoreaderProgressUpdateDto
{
+ ///
+ /// This is the Koreader hash of the book. It is used to identify the book.
+ ///
public string Document { get; set; }
+ ///
+ /// UTC Timestamp to return to KOReader
+ ///
public DateTime Timestamp { get; set; }
}
diff --git a/API/Data/Repositories/MangaFileRepository.cs b/API/Data/Repositories/MangaFileRepository.cs
index 5c6aae0c8..32a8bfc34 100644
--- a/API/Data/Repositories/MangaFileRepository.cs
+++ b/API/Data/Repositories/MangaFileRepository.cs
@@ -40,6 +40,6 @@ public class MangaFileRepository : IMangaFileRepository
return await _context.MangaFile
.FirstOrDefaultAsync(f => f.KoreaderHash != null &&
- EF.Functions.Like(f.KoreaderHash, hash));
+ f.KoreaderHash.Equals(hash.ToUpper()));
}
}
diff --git a/API/Helpers/Builders/KoreaderBookDtoBuilder.cs b/API/Helpers/Builders/KoreaderBookDtoBuilder.cs
index fd701b5e2..5a5834adb 100644
--- a/API/Helpers/Builders/KoreaderBookDtoBuilder.cs
+++ b/API/Helpers/Builders/KoreaderBookDtoBuilder.cs
@@ -38,8 +38,7 @@ public class KoreaderBookDtoBuilder : IEntityBuilder
public KoreaderBookDtoBuilder WithDeviceId(string installId, int userId)
{
- using var sha256 = SHA256.Create();
- var hash = sha256.ComputeHash(Encoding.UTF8.GetBytes(installId + userId));
+ var hash = SHA256.HashData(Encoding.UTF8.GetBytes(installId + userId));
_dto.Device_id = hash.ToString();
return this;
}
diff --git a/API/Services/KoreaderService.cs b/API/Services/KoreaderService.cs
index a460cff14..69b3948ed 100644
--- a/API/Services/KoreaderService.cs
+++ b/API/Services/KoreaderService.cs
@@ -74,7 +74,6 @@ public class KoreaderService : IKoreaderService
public async Task GetProgress(string bookHash, int userId)
{
var settingsDto = await _unitOfWork.SettingsRepository.GetSettingsDtoAsync();
- var builder = new KoreaderBookDtoBuilder(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 koreaderProgress = KoreaderHelper.GetKoreaderPosition(progressDto);
- return builder.WithProgress(koreaderProgress)
+ return new KoreaderBookDtoBuilder(bookHash).WithProgress(koreaderProgress)
.WithPercentage(progressDto?.PageNum, file.Pages)
.WithDeviceId(settingsDto.InstallId, userId)
.Build();