diff --git a/Source/FileLiberator/AudioDecodable.cs b/Source/FileLiberator/AudioDecodable.cs index 3f230fb7..9b441efb 100644 --- a/Source/FileLiberator/AudioDecodable.cs +++ b/Source/FileLiberator/AudioDecodable.cs @@ -4,7 +4,8 @@ namespace FileLiberator { public abstract class AudioDecodable : Processable { - public event EventHandler> RequestCoverArt; + public delegate byte[] RequestCoverArtHandler(object sender, EventArgs eventArgs); + public event RequestCoverArtHandler RequestCoverArt; public event EventHandler TitleDiscovered; public event EventHandler AuthorsDiscovered; public event EventHandler NarratorsDiscovered; @@ -32,10 +33,10 @@ namespace FileLiberator NarratorsDiscovered?.Invoke(this, narrators); } - protected void OnRequestCoverArt(Action setCoverArtDel) + protected byte[] OnRequestCoverArt() { Serilog.Log.Logger.Debug("Event fired {@DebugInfo}", new { Name = nameof(RequestCoverArt) }); - RequestCoverArt?.Invoke(this, setCoverArtDel); + return RequestCoverArt?.Invoke(this, new()); } protected void OnCoverImageDiscovered(byte[] coverImage) diff --git a/Source/FileLiberator/DownloadDecryptBook.cs b/Source/FileLiberator/DownloadDecryptBook.cs index 1236c7a5..b54f9905 100644 --- a/Source/FileLiberator/DownloadDecryptBook.cs +++ b/Source/FileLiberator/DownloadDecryptBook.cs @@ -247,7 +247,7 @@ namespace FileLiberator if (e is not null) OnCoverImageDiscovered(e); else if (Configuration.Instance.AllowLibationFixup) - OnRequestCoverArt(abDownloader.SetCoverArt); + abDownloader.SetCoverArt(OnRequestCoverArt()); } /// Move new files to 'Books' directory diff --git a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs index 7c9778a5..01928df9 100644 --- a/Source/LibationWinForms/ProcessQueue/ProcessBook.cs +++ b/Source/LibationWinForms/ProcessQueue/ProcessBook.cs @@ -59,7 +59,6 @@ namespace LibationWinForms.ProcessQueue private Processable CurrentProcessable => _currentProcessable ??= Processes.Dequeue().Invoke(); private Processable NextProcessable() => _currentProcessable = null; private Processable _currentProcessable; - private Func GetCoverArtDelegate; private readonly Queue> Processes = new(); private readonly LogMe Logger; @@ -231,11 +230,14 @@ namespace LibationWinForms.ProcessQueue BookText = $"{title}\r\nBy {authorNames}\r\nNarrated by {narratorNames}"; } - public void AudioDecodable_RequestCoverArt(object sender, Action setCoverArtDelegate) + private byte[] AudioDecodable_RequestCoverArt(object sender, EventArgs e) { - byte[] coverData = GetCoverArtDelegate(); - setCoverArtDelegate(coverData); + byte[] coverData = PictureStorage + .GetPictureSynchronously( + new PictureDefinition(LibraryBook.Book.PictureId, PictureSize._500x500)); + AudioDecodable_CoverImageDiscovered(this, coverData); + return coverData; } private void AudioDecodable_CoverImageDiscovered(object sender, byte[] coverArt) @@ -272,11 +274,6 @@ namespace LibationWinForms.ProcessQueue Logger.Info($"{Environment.NewLine}{((Processable)sender).Name} Step, Begin: {libraryBook.Book}"); - GetCoverArtDelegate = () => PictureStorage.GetPictureSynchronously( - new PictureDefinition( - libraryBook.Book.PictureId, - PictureSize._500x500)); - title = libraryBook.Book.Title; authorNames = libraryBook.Book.AuthorNames(); narratorNames = libraryBook.Book.NarratorNames();