CBL Import Rework (#1862)

* Fixed a typo in a log

* Invalid XML files now "validate" correctly by sending back a failure.

* Cleaned up messaging on backend and frontend to provide some linking on series name when collision, handle corrupt xml files, etc.

* When reading list conflict occurs, show the reading list name that's conflicting. Started refactoring the code to allow multiple files to be imported at once.

* Started adding new CBL elements for some enhancements I have planned with maintainers.

* Default to empty string for IpAddress to allow to fallback into existing experience

* Tweaked the layout of reading list page (not complete), moved some not used much controls to page extras and reordered the buttons for reading list

* Edit Reading Lists now allows selection of cover image from existing items

* Fixed a bug where cover chooser base64 to image would fail to write webp files.

* Refactored the validate step to now handle multiple files in one go.

* Clean up code

* Don't show CBL name if there were xml errors that prevented showing it

* Don't allow user to go prev step after they perform the import.

* Cleaned up the heading code for accordions

* Fixed a bug with import keeping failed items

* Sort the failures to the bottom of result windows

* CBL import is pretty solid. Need one pass from Robbie on Reading List Page
This commit is contained in:
Joe Milazzo 2023-03-07 15:18:26 -06:00 committed by GitHub
parent c846b36047
commit b55d9e3994
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
30 changed files with 609 additions and 249 deletions

View file

@ -68,6 +68,11 @@ public enum CblImportReason
/// </summary>
[Description("Success")]
Success = 8,
/// <summary>
/// The file does not match the XML spec
/// </summary>
[Description("Invalid File")]
InvalidFile = 9,
}
public class CblBookResult
@ -79,6 +84,18 @@ public class CblBookResult
public string Series { get; set; }
public string Volume { get; set; }
public string Number { get; set; }
/// <summary>
/// Used on Series conflict
/// </summary>
public int LibraryId { get; set; }
/// <summary>
/// Used on Series conflict
/// </summary>
public int SeriesId { get; set; }
/// <summary>
/// The name of the reading list
/// </summary>
public string ReadingListName { get; set; }
public CblImportReason Reason { get; set; }
public CblBookResult(CblBook book)
@ -100,6 +117,10 @@ public class CblBookResult
public class CblImportSummaryDto
{
public string CblName { get; set; }
/// <summary>
/// Used only for Kavita's UI, the filename of the cbl
/// </summary>
public string FileName { get; set; }
public ICollection<CblBookResult> Results { get; set; }
public CblImportResult Success { get; set; }
public ICollection<CblBookResult> SuccessfulInserts { get; set; }