Prevent same bok being decrypted more than once at a time
This commit is contained in:
parent
458ea6a377
commit
2afcaebb78
@ -50,12 +50,12 @@ namespace LibationWinForms.BookLiberation
|
|||||||
|
|
||||||
public static class ProcessorAutomationController
|
public static class ProcessorAutomationController
|
||||||
{
|
{
|
||||||
public static async Task BackupSingleBookAsync(LibraryBook libraryBook)
|
public static async Task BackupSingleBookAsync(LibraryBook libraryBook, Action<LibraryBook> onCompleteAction = null)
|
||||||
{
|
{
|
||||||
Serilog.Log.Logger.Information($"Begin {nameof(BackupSingleBookAsync)} {{@DebugInfo}}", new { libraryBook?.Book?.AudibleProductId });
|
Serilog.Log.Logger.Information($"Begin {nameof(BackupSingleBookAsync)} {{@DebugInfo}}", new { libraryBook?.Book?.AudibleProductId });
|
||||||
|
|
||||||
var logMe = LogMe.RegisterForm();
|
var logMe = LogMe.RegisterForm();
|
||||||
var backupBook = CreateBackupBook(logMe);
|
var backupBook = CreateBackupBook(logMe, onCompleteAction);
|
||||||
|
|
||||||
// continue even if libraryBook is null. we'll display even that in the processing box
|
// continue even if libraryBook is null. we'll display even that in the processing box
|
||||||
await new BackupSingle(logMe, backupBook, libraryBook).RunBackupAsync();
|
await new BackupSingle(logMe, backupBook, libraryBook).RunBackupAsync();
|
||||||
@ -96,13 +96,14 @@ namespace LibationWinForms.BookLiberation
|
|||||||
await new BackupLoop(logMe, downloadPdf, automatedBackupsForm).RunBackupAsync();
|
await new BackupLoop(logMe, downloadPdf, automatedBackupsForm).RunBackupAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Processable CreateBackupBook(LogMe logMe)
|
private static Processable CreateBackupBook(LogMe logMe, Action<LibraryBook> onCompleteAction = null)
|
||||||
{
|
{
|
||||||
var downloadPdf = CreateProcessable<DownloadPdf, PdfDownloadForm>(logMe);
|
var downloadPdf = CreateProcessable<DownloadPdf, PdfDownloadForm>(logMe);
|
||||||
|
|
||||||
//Chain pdf download on DownloadDecryptBook.Completed
|
//Chain pdf download on DownloadDecryptBook.Completed
|
||||||
async void onDownloadDecryptBookCompleted(object sender, LibraryBook e)
|
async void onDownloadDecryptBookCompleted(object sender, LibraryBook e)
|
||||||
{
|
{
|
||||||
|
onCompleteAction?.Invoke(e);
|
||||||
await downloadPdf.TryProcessAsync(e);
|
await downloadPdf.TryProcessAsync(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,6 +29,7 @@ namespace LibationWinForms
|
|||||||
|
|
||||||
public partial class ProductsGrid : UserControl
|
public partial class ProductsGrid : UserControl
|
||||||
{
|
{
|
||||||
|
private static List<string> bookConversionInProgress = new();
|
||||||
public event EventHandler<int> VisibleCountChanged;
|
public event EventHandler<int> VisibleCountChanged;
|
||||||
|
|
||||||
// alias
|
// alias
|
||||||
@ -88,8 +89,14 @@ namespace LibationWinForms
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//don't try to decrypt the same book at the same time.
|
||||||
|
if (bookConversionInProgress.Contains(libraryBook.Book.AudibleProductId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
bookConversionInProgress.Add(libraryBook.Book.AudibleProductId);
|
||||||
|
|
||||||
// else: liberate
|
// else: liberate
|
||||||
await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(libraryBook);
|
await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(libraryBook, b => bookConversionInProgress.Remove(b.Book.AudibleProductId));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void Details_Click(GridEntry liveGridEntry)
|
private static void Details_Click(GridEntry liveGridEntry)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user