diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index f3b8e19..38b7f3b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,3 +25,9 @@ repos: language: system types: [rust] pass_filenames: false + - id: dioxus-check + name: dioxus check + entry: dx check + language: system + types: [rust] + pass_filenames: false diff --git a/src/components/app.rs b/src/components/app.rs index 750258d..79c9610 100644 --- a/src/components/app.rs +++ b/src/components/app.rs @@ -59,11 +59,13 @@ fn handle_action(selected_race: &mut Signal, action: Action) { #[component] pub fn App() -> Element { let mut selected_race = use_signal(|| SelectedRace::None); + let config = use_context::(); - use_coroutine( - move |mut actions_rx: UnboundedReceiver| async move { + use_coroutine(move |mut actions_rx: UnboundedReceiver| { + let config = config.clone(); + async move { let (tx, mut rfid_rx) = broadcast::channel::(128); - for serial in use_context::().rfid_devices { + for serial in config.rfid_devices { tokio::spawn(rfid_reader::rfid_serial(serial, tx.clone())); } @@ -79,8 +81,8 @@ pub fn App() -> Element { } } } - }, - ); + } + }); rsx! { div { diff --git a/src/components/races_list.rs b/src/components/races_list.rs index 49d0620..5bceb7a 100644 --- a/src/components/races_list.rs +++ b/src/components/races_list.rs @@ -6,24 +6,28 @@ use crate::{race::Race, restclient::RaceRestAPI}; type SignalRace = Signal>>>; -async fn load_race(mut selected_race: SignalRace, id: u32) { +async fn load_race(api: RaceRestAPI, mut selected_race: SignalRace, id: u32) { selected_race.set(None); - let race = Race::load(use_context::(), id).await; + let race = Race::load(api, id).await; selected_race.set(Some(race)); } #[component] pub fn RacesList(selected_race: SignalRace) -> Element { + let api = use_context::(); + let races: Resource, Box>> = - use_resource(move || async move { - let api = use_context::(); - let mut races = api.races().await?; - races.sort_by(|a, b| b.date_of_event.cmp(&a.date_of_event)); + use_resource(move || { + let api = api.clone(); + async move { + let mut races = api.races().await?; + races.sort_by(|a, b| b.date_of_event.cmp(&a.date_of_event)); - if let Some(earliest_race) = races.first() { - load_race(selected_race, earliest_race.id).await; + if let Some(earliest_race) = races.first() { + load_race(api, selected_race, earliest_race.id).await; + } + Ok(races) } - Ok(races) }); rsx! { @@ -34,8 +38,9 @@ pub fn RacesList(selected_race: SignalRace) -> Element { onchange: move |e| { e.prevent_default(); let race_id = e.value().parse::().ok().unwrap(); + let api = use_context::(); spawn(async move { - load_race(selected_race, race_id).await; + load_race(api, selected_race, race_id).await; }); }, for race in races.iter() {