Skip to main content

hyle_dioxus_native/
list.rs

1use dioxus::prelude::*;
2use dioxus_signals::ReadSignal;
3use indexmap::IndexMap;
4
5use hyle::{ModelResult, Row, RowItem, Source};
6use hyle_dioxus::{
7    DioxusMutationOptions, HyleAdapter, HyleSourceState,
8    use_dioxus_mutation,
9};
10
11pub fn items_to_source(model: &str, items: &[RowItem]) -> Source {
12    let rows: Vec<Row> = items.iter().map(|item| item.into_row()).collect();
13    let mut source: Source = IndexMap::new();
14    source.insert(model.to_owned(), ModelResult::many(rows));
15    source
16}
17
18pub fn use_static_adapter(source: Source) -> HyleAdapter {
19    let source_signal: ReadSignal<HyleSourceState> =
20        use_memo(move || HyleSourceState::Ready(source.clone())).into();
21    let noop = || {
22        use_dioxus_mutation(
23            |_| async { Ok::<(), String>(()) },
24            DioxusMutationOptions::default(),
25        )
26    };
27    HyleAdapter {
28        source: source_signal,
29        create: noop(),
30        update: noop(),
31        delete: noop(),
32    }
33}
34
35