Fix companions API (column rename), home search, search URL params
- Fix companion_relationships column: relationship → companion_type (with AS alias) - Home page search passes query via ?q= URL param - Search page reads ?q= on load and auto-searches
This commit is contained in:
@@ -53,8 +53,11 @@ pub fn Home() -> Element {
|
||||
oninput: move |e| search_query.set(e.value()),
|
||||
onkeydown: move |e| {
|
||||
if e.key() == Key::Enter {
|
||||
let nav = navigator();
|
||||
nav.push(Route::SearchPage {});
|
||||
let q = search_query.read().clone();
|
||||
if !q.is_empty() {
|
||||
let nav = navigator();
|
||||
nav.push(format!("/search?q={}", q).as_str());
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
@@ -7,9 +7,28 @@ use crate::i18n::{pick_name, t, t_val};
|
||||
#[component]
|
||||
pub fn SearchPage() -> Element {
|
||||
let lang = use_context::<Lang>().0;
|
||||
let mut query = use_signal(|| String::new());
|
||||
// Read ?q= from URL on initial load
|
||||
let initial_q = {
|
||||
let window = web_sys::window().unwrap();
|
||||
let search = window.location().search().unwrap_or_default();
|
||||
let params = web_sys::UrlSearchParams::new_with_str(&search).ok();
|
||||
params.and_then(|p| p.get("q")).unwrap_or_default()
|
||||
};
|
||||
let has_initial = !initial_q.is_empty();
|
||||
let mut query = use_signal(move || initial_q.clone());
|
||||
let mut results = use_signal(|| None::<Result<Vec<crate::types::SearchResult>, String>>);
|
||||
|
||||
// Auto-search on load if ?q= was provided
|
||||
let mut did_initial = use_signal(|| false);
|
||||
if has_initial && !*did_initial.read() {
|
||||
did_initial.set(true);
|
||||
let q = query.read().clone();
|
||||
spawn(async move {
|
||||
let res = api::search(&q, 50).await;
|
||||
results.set(Some(res));
|
||||
});
|
||||
}
|
||||
|
||||
let trigger_search = move || {
|
||||
let q = query.read().clone();
|
||||
if !q.is_empty() {
|
||||
|
||||
Reference in New Issue
Block a user