You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
Rust
46 lines
1.3 KiB
Rust
use crate::components::modal_box::DialogOpener;
|
|
use leptos::*;
|
|
use crate::backend::data::ApiResponse;
|
|
use crate::locales::trl;
|
|
|
|
#[component]
|
|
pub fn ServerErr(
|
|
result: RwSignal<Option<Result<ApiResponse<()>, ServerFnError>>>,
|
|
opener: DialogOpener,
|
|
) -> impl IntoView {
|
|
view! {{move || {
|
|
if let Some(val) = result.get() {
|
|
match val {
|
|
Ok(resp) => if let ApiResponse::Error(err) = resp {
|
|
opener.display_err();
|
|
view! {
|
|
<div class="alert alert-danger" style={move || {
|
|
if opener.show_err() {
|
|
""
|
|
} else {
|
|
"display: none"
|
|
}
|
|
}}>
|
|
{trl(&err)}
|
|
</div>
|
|
}
|
|
}
|
|
else {
|
|
opener.hide();
|
|
view! {<div></div>}
|
|
}
|
|
Err(e) => {
|
|
view! {
|
|
<div class="alert alert-danger">
|
|
"Server error: " {e.to_string()}
|
|
</div>
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
view! {<div></div>}
|
|
}
|
|
}}
|
|
}
|
|
}
|