Refresh the collection tree when a sync brings membership
New-York gained 127 photographs from the tablet and the sidebar went on showing no number beside it. Two reasons, and the second is why the first was never noticed. The sync's completion handler reloads the grid and never rebuilds the tree — the scan already does, and the sync merges the same tables. And the condition it reloads under was `collections_gained > 0`, which counts collections, not members: a sync that files 127 photographs into a collection both devices already had gains no collection at all, so the count was zero and nothing refreshed. `SyncReport` now carries `members_gained` from the merge report, and either one rebuilds the tree. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -3211,9 +3211,32 @@ fn start_derived_sync(window: &AppWindow, ctl: &Rc<LibraryController>) {
|
||||
}
|
||||
// Adopted thumbnails and merged collections both change
|
||||
// what the grid should show.
|
||||
if report.thumbnails_adopted > 0 || report.collections_gained > 0 {
|
||||
if report.thumbnails_adopted > 0
|
||||
|| report.collections_gained > 0
|
||||
|| report.members_gained > 0
|
||||
{
|
||||
load_window(&w, &ctl_cb);
|
||||
}
|
||||
// TRACES: FR-CAT-7
|
||||
// And the sidebar, which the grid reload does not
|
||||
// touch. Membership counts as a change: a sync that
|
||||
// files 127 photographs into a collection both devices
|
||||
// already had gains no *collection*, so keying this on
|
||||
// `collections_gained` alone left the tree showing no
|
||||
// number beside a collection that had just been filled.
|
||||
//
|
||||
// The scan already does this after it finishes; the
|
||||
// sync merges the same tables and did not.
|
||||
if report.collections_gained > 0 || report.members_gained > 0 {
|
||||
let coll = ctl_cb.coll_ctl.borrow().as_ref().and_then(|w| w.upgrade());
|
||||
if let Some(coll) = coll {
|
||||
let borrow = ctl_cb.catalog();
|
||||
let borrow = borrow.borrow();
|
||||
if let Some(cat) = borrow.as_ref() {
|
||||
crate::collections_ui::refresh_tree(&w, &coll, cat);
|
||||
}
|
||||
}
|
||||
}
|
||||
stop(&ctl_cb.sync_timer);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user