From 24f493d7d618b3672d4efb572dc9cd0e65ae6ca1 Mon Sep 17 00:00:00 2001 From: Elias Projahn Date: Sun, 25 Apr 2021 12:27:04 +0200 Subject: [PATCH] Handle library updates from main screen --- musicus/src/screens/main.rs | 38 ++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/musicus/src/screens/main.rs b/musicus/src/screens/main.rs index 97fca89..5d42abc 100644 --- a/musicus/src/screens/main.rs +++ b/musicus/src/screens/main.rs @@ -153,24 +153,32 @@ impl Screen<(), ()> for MainScreen { // Load the content asynchronously. spawn!(@clone this, async move { - let mut poes = Vec::new(); + loop { + this.navigator.reset(); - let persons = this.handle.backend.db().get_persons().await.unwrap(); - let ensembles = this.handle.backend.db().get_ensembles().await.unwrap(); + let mut poes = Vec::new(); - for person in persons { - poes.push(PersonOrEnsemble::Person(person)); + let persons = this.handle.backend.db().get_persons().await.unwrap(); + let ensembles = this.handle.backend.db().get_ensembles().await.unwrap(); + + for person in persons { + poes.push(PersonOrEnsemble::Person(person)); + } + + for ensemble in ensembles { + poes.push(PersonOrEnsemble::Ensemble(ensemble)); + } + + let length = poes.len(); + this.poes.replace(poes); + this.poe_list.update(length); + + this.stack.set_visible_child_name("content"); + + if this.handle.backend.library_update().await.is_err() { + break; + } } - - for ensemble in ensembles { - poes.push(PersonOrEnsemble::Ensemble(ensemble)); - } - - let length = poes.len(); - this.poes.replace(poes); - this.poe_list.update(length); - - this.stack.set_visible_child_name("content"); }); this