/// <summary>
/// Will call either 'callback' or 'errorCallback' UNLESS the thumbnail is readonly, in which case it will do neither.
/// </summary>
/// <param name="book"></param>
/// <param name="thumbnailOptions"></param>
/// <param name="callback"></param>
/// <param name="errorCallback"></param>
private void RebuildThumbNail(Book.Book book, HtmlThumbNailer.ThumbnailOptions thumbnailOptions,
Action <BookInfo, Image> callback, Action <BookInfo, Exception> errorCallback, bool async)
{
try
{
if (!book.Storage.RemoveBookThumbnail(thumbnailOptions.FileName))
{
// thumbnail is marked readonly, so just use it
Image thumb;
book.Storage.TryGetPremadeThumbnail(thumbnailOptions.FileName, out thumb);
callback(book.BookInfo, thumb);
return;
}
_thumbnailProvider.RemoveFromCache(book.Storage.Key);
thumbnailOptions.BorderStyle = GetThumbnailBorderStyle(book);
GetThumbNailOfBookCover(book, thumbnailOptions, image => callback(book.BookInfo, image),
error =>
{
//Enhance; this isn't a very satisfying time to find out, because it's only going to happen if we happen to be rebuilding the thumbnail.
//It does help in the case where things are bad, so no thumbnail was created, but by then probably the user has already had some big error.
//On the other hand, given that they have this bad book in their collection now, it's good to just remind them that it's broken and not
//keep showing green error boxes.
book.CheckForErrors();
errorCallback(book.BookInfo, error);
}, async);
}
catch (Exception error)
{
NonFatalProblem.Report(ModalIf.Alpha, PassiveIf.All, "Problem creating book thumbnail ", exception: error);
}
}