use std::collections::HashSet; use dioxus::prelude::*; use crate::components::{BlogList, TagSelector}; use crate::page::Page; fn convert_categories(categories: &str) -> HashSet { categories .split('+') .filter(|s| !s.is_empty() && *s != "all") .map(str::to_string) .collect() } /// Blog page #[component] pub fn Blog(tag: ReadOnlySignal) -> Element { let mut show_all: Signal = use_signal(|| tag().is_empty() || tag() == "all"); let mut categories: Signal> = use_signal(|| convert_categories(&tag())); use_effect(move || { let new_tags = convert_categories(&tag()); categories.set(new_tags); }); println!("Blog Categories: {:?}", categories()); rsx! { main { class: "blog_style", div { class: "page_content", BlogList { tags: categories.clone() } TagSelector { show_all: show_all.clone(), toggled_tags: categories.clone() } } } } }