Clicking on red stoplight now only decrypts that book with no conformation.

This commit is contained in:
Michael Bucari-Tovo 2021-07-03 20:21:11 -06:00
parent 0be2a17537
commit f284f53edd
2 changed files with 21 additions and 25 deletions

View File

@ -47,13 +47,14 @@ namespace LibationWinForms.BookLiberation
Serilog.Log.Logger.Information("Begin " + nameof(BackupSingleBookAsync) + " {@DebugInfo}", new { productId }); Serilog.Log.Logger.Information("Begin " + nameof(BackupSingleBookAsync) + " {@DebugInfo}", new { productId });
var backupBook = getWiredUpBackupBook(completedAction); var backupBook = getWiredUpBackupBook(completedAction);
(AutomatedBackupsForm automatedBackupsForm, LogMe logMe) = attachToBackupsForm(backupBook); (Action unsibscribeEvents, LogMe logMe) = attachToBackupsForm(backupBook);
automatedBackupsForm.KeepGoingVisible = false;
var libraryBook = IProcessableExt.GetSingleLibraryBook(productId); var libraryBook = IProcessableExt.GetSingleLibraryBook(productId);
// 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, automatedBackupsForm, libraryBook).RunBackupAsync(); await new BackupSingle(logMe, backupBook, libraryBook).RunBackupAsync();
unsibscribeEvents();
} }
public static async Task BackupAllBooksAsync(EventHandler<LibraryBook> completedAction = null) public static async Task BackupAllBooksAsync(EventHandler<LibraryBook> completedAction = null)
@ -61,8 +62,12 @@ namespace LibationWinForms.BookLiberation
Serilog.Log.Logger.Information("Begin " + nameof(BackupAllBooksAsync)); Serilog.Log.Logger.Information("Begin " + nameof(BackupAllBooksAsync));
var backupBook = getWiredUpBackupBook(completedAction); var backupBook = getWiredUpBackupBook(completedAction);
var automatedBackupsForm = new AutomatedBackupsForm();
(Action unsibscribeEvents, LogMe logMe) = attachToBackupsForm(backupBook, automatedBackupsForm);
automatedBackupsForm.FormClosing += (_, __) => unsibscribeEvents();
(AutomatedBackupsForm automatedBackupsForm, LogMe logMe) = attachToBackupsForm(backupBook);
await new BackupLoop(logMe, backupBook, automatedBackupsForm).RunBackupAsync(); await new BackupLoop(logMe, backupBook, automatedBackupsForm).RunBackupAsync();
} }
@ -93,11 +98,10 @@ namespace LibationWinForms.BookLiberation
private static void updateIsLiberated(object sender, LibraryBook e) => ApplicationServices.SearchEngineCommands.UpdateIsLiberated(e.Book); private static void updateIsLiberated(object sender, LibraryBook e) => ApplicationServices.SearchEngineCommands.UpdateIsLiberated(e.Book);
private static (AutomatedBackupsForm, LogMe) attachToBackupsForm(BackupBook backupBook) private static (Action unsibscribeEvents, LogMe) attachToBackupsForm(BackupBook backupBook, AutomatedBackupsForm automatedBackupsForm = null)
{ {
#region create form and logger #region create logger
var automatedBackupsForm = new AutomatedBackupsForm(); var logMe = automatedBackupsForm is null? new LogMe() : LogMe.RegisterForm(automatedBackupsForm);
var logMe = LogMe.RegisterForm(automatedBackupsForm);
#endregion #endregion
#region define how model actions will affect form behavior #region define how model actions will affect form behavior
@ -121,7 +125,7 @@ namespace LibationWinForms.BookLiberation
#region when form closes, unsubscribe from model's events #region when form closes, unsubscribe from model's events
// unsubscribe so disposed forms aren't still trying to receive notifications // unsubscribe so disposed forms aren't still trying to receive notifications
automatedBackupsForm.FormClosing += (_, __) => Action unsibscribe = () =>
{ {
backupBook.DecryptBook.Begin -= decryptBookBegin; backupBook.DecryptBook.Begin -= decryptBookBegin;
backupBook.DecryptBook.StatusUpdate -= statusUpdate; backupBook.DecryptBook.StatusUpdate -= statusUpdate;
@ -132,7 +136,7 @@ namespace LibationWinForms.BookLiberation
}; };
#endregion #endregion
return (automatedBackupsForm, logMe); return (unsibscribe, logMe);
} }
public static async Task BackupAllPdfsAsync(EventHandler<LibraryBook> completedAction = null) public static async Task BackupAllPdfsAsync(EventHandler<LibraryBook> completedAction = null)
@ -367,7 +371,7 @@ namespace LibationWinForms.BookLiberation
protected IProcessable Processable { get; } protected IProcessable Processable { get; }
protected AutomatedBackupsForm AutomatedBackupsForm { get; } protected AutomatedBackupsForm AutomatedBackupsForm { get; }
protected BackupRunner(LogMe logMe, IProcessable processable, AutomatedBackupsForm automatedBackupsForm) protected BackupRunner(LogMe logMe, IProcessable processable, AutomatedBackupsForm automatedBackupsForm = null)
{ {
LogMe = logMe; LogMe = logMe;
Processable = processable; Processable = processable;
@ -382,7 +386,7 @@ namespace LibationWinForms.BookLiberation
public async Task RunBackupAsync() public async Task RunBackupAsync()
{ {
AutomatedBackupsForm.Show(); AutomatedBackupsForm?.Show();
try try
{ {
@ -393,7 +397,7 @@ namespace LibationWinForms.BookLiberation
LogMe.Error(ex); LogMe.Error(ex);
} }
AutomatedBackupsForm.FinalizeUI(); AutomatedBackupsForm?.FinalizeUI();
LogMe.Info("DONE"); LogMe.Info("DONE");
} }
@ -454,8 +458,8 @@ An error occurred while trying to process this book. Skip this book permanently?
protected override MessageBoxButtons SkipDialogButtons => MessageBoxButtons.YesNo; protected override MessageBoxButtons SkipDialogButtons => MessageBoxButtons.YesNo;
protected override DialogResult CreateSkipFileResult => DialogResult.Yes; protected override DialogResult CreateSkipFileResult => DialogResult.Yes;
public BackupSingle(LogMe logMe, IProcessable processable, AutomatedBackupsForm automatedBackupsForm, LibraryBook libraryBook) public BackupSingle(LogMe logMe, IProcessable processable, LibraryBook libraryBook)
: base(logMe, processable, automatedBackupsForm) : base(logMe, processable)
{ {
_libraryBook = libraryBook; _libraryBook = libraryBook;
} }

View File

@ -182,15 +182,7 @@ namespace LibationWinForms
return; return;
} }
// not liberated: liberate await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(productId, (_, __) => RefreshRow(productId));
var msg
= "Liberate entire library instead?"
+ "\r\n\r\nClick Yes to begin liberating your entire library"
+ "\r\n\r\nClick No to liberate this book only";
if (MessageBox.Show(msg, "Liberate entire library?", MessageBoxButtons.YesNo) == DialogResult.Yes)
await BookLiberation.ProcessorAutomationController.BackupAllBooksAsync((_, libraryBook) => RefreshRow(libraryBook.Book.AudibleProductId));
else
await BookLiberation.ProcessorAutomationController.BackupSingleBookAsync(productId, (_, __) => RefreshRow(productId));
} }
#endregion #endregion