Files
AobaV2/AobaClient/src/views/home.rs
T
Amatsugu ec0c6a3487
Build and Push Image / build-and-push (push) Successful in 5m12s
push history state
2026-04-10 01:15:51 -04:00

61 lines
1.6 KiB
Rust

use crate::{
components::{MediaGrid, Pagination, PaginationInfo, Search},
route::Route,
};
use dioxus::{prelude::*, router::RouterConfig};
// #[component]
// pub fn Home() -> Element
// {
// let query = use_signal(|| "".to_string());
// let page = use_signal(|| 1 as i32);
// let max_page = use_signal(|| 1 as i32);
// let item_count = use_signal(|| 0 as i32);
// rsx! {
// div {
// class: "stickyTop",
// Search { query, page },
// Pagination { page, max_page, item_count },
// }
// MediaGrid { query: query.cloned(), page: page.cloned(), max_page, total_items: item_count }
// }
// }
#[component]
pub fn Home(page: Option<i32>, q: Option<String>) -> Element
{
let mut query = use_signal(|| q.unwrap_or("".to_string()));
let mut page = use_signal(|| page.unwrap_or(1));
let page_size = use_signal::<i32>(|| 100);
let mut max_page = use_signal(|| 1 as i32);
let mut item_count = use_signal(|| 0 as i32);
rsx! {
div {
class: "stickyTop",
Search {
query: query(),
oninput: move |q| {
query.set(q);
page.set(1);
},
onchange: move |_|{
router().push(format!("/?page={}&q={}", page(), query()));
}
},
Pagination {
page, max_page, item_count,
on_page_change: move |p|{
page.set(p);
router().push(format!("/?page={}&q={}", page(), query()));
}
},
}
MediaGrid { query: query, page: page, max_page, total_items: item_count, page_size,
on_page_loaded: move |p: PaginationInfo| {
max_page.set(p.total_pages);
item_count.set(p.total_items);
}
}
}
}