diff --git a/Source/LibationUiBase/GridView/EntryStatus.cs b/Source/LibationUiBase/GridView/EntryStatus.cs index 4e319597..71f04ccf 100644 --- a/Source/LibationUiBase/GridView/EntryStatus.cs +++ b/Source/LibationUiBase/GridView/EntryStatus.cs @@ -58,7 +58,7 @@ namespace LibationUiBase.GridView public abstract object BackgroundBrush { get; } public object ButtonImage => GetLiberateIcon(); public string ToolTip => GetTooltip(); - protected internal Book Book { get; internal set; } + internal Book Book { get; } private DateTime lastBookUpdate; private LiberatedStatus bookStatus; diff --git a/Source/LibationUiBase/GridView/GridEntry[TStatus].cs b/Source/LibationUiBase/GridView/GridEntry[TStatus].cs index 3e41283b..52513304 100644 --- a/Source/LibationUiBase/GridView/GridEntry[TStatus].cs +++ b/Source/LibationUiBase/GridView/GridEntry[TStatus].cs @@ -154,9 +154,13 @@ namespace LibationUiBase.GridView if (udi.Book.AudibleProductId != Book.AudibleProductId) return; - //If UserDefinedItem was changed on a different Book instance (such as when batch liberating via menus), - //EntryStatus' Book instance will not have the current DB state. - Liberate.Book = udi.Book; + if (udi.Book != LibraryBook.Book) + { + //If UserDefinedItem was changed on a different Book instance (such as when batch liberating via menus), + //Liberate.Book and LibraryBook.Book instances will not have the current DB state. + Invoke(() => UpdateLibraryBook(new LibraryBook(udi.Book, LibraryBook.DateAdded, LibraryBook.Account))); + return; + } // UDI changed, possibly in a different context/view. Update this viewmodel. Call NotifyPropertyChanged to notify view. // - This method responds to tons of incidental changes. Do not persist to db from here. Committing to db must be a volitional action by the caller, not incidental. Otherwise batch changes would be impossible; we would only have slow one-offs