From 6ee4190a26f32bfa953302ee363ad3bb6c384ebb Mon Sep 17 00:00:00 2001 From: cel 🌸 Date: Sun, 1 Jun 2025 16:10:26 +0100 Subject: refactor: reorganise code --- src/components/roster_list.rs | 58 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/components/roster_list.rs (limited to 'src/components/roster_list.rs') diff --git a/src/components/roster_list.rs b/src/components/roster_list.rs new file mode 100644 index 0000000..a398ffe --- /dev/null +++ b/src/components/roster_list.rs @@ -0,0 +1,58 @@ +use std::collections::HashSet; + +use contact_request_manager::AddContact; +use jid::BareJID; +use leptos::prelude::*; +use reactive_stores::Store; +use roster_list_item::RosterListItem; + +use crate::{components::icon::IconComponent, icon::Icon, roster::{Roster, RosterStoreFields}}; + +mod contact_request_manager; +mod roster_list_item; + +#[component] +pub fn RosterList() -> impl IntoView { + let requests: ReadSignal> = use_context().expect("no pending subscriptions in context"); + + let roster: Store = use_context().expect("no roster in context"); + let (open_add_contact, set_open_add_contact) = signal(false); + + // TODO: filter new messages signal + view! { +
+
+

Roster

+
+ + {move || { + if !requests.read().is_empty() { + view! { +
+ }.into_any() + } else { + view! {}.into_any() + } + }} +
+
+ {move || { + if *open_add_contact.read() { + view! { +
+ +
+ }.into_any() + } else { + view! {}.into_any() + } + }} +
+ + + +
+
+ } +} + -- cgit