diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/roster_list/contact_request_manager.rs | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/src/components/roster_list/contact_request_manager.rs b/src/components/roster_list/contact_request_manager.rs index cfb5f28..12a3611 100644 --- a/src/components/roster_list/contact_request_manager.rs +++ b/src/components/roster_list/contact_request_manager.rs @@ -51,6 +51,7 @@ pub fn AddContact() -> impl IntoView { let client2 = client.clone(); let client3 = client.clone(); let client4 = client.clone(); + let client5 = client.clone(); let add_contact = Action::new_local(move |_| { let client = client.clone(); @@ -124,7 +125,18 @@ pub fn AddContact() -> impl IntoView { let jid = jid.clone(); async move { // TODO: error - client.accept_buddy_request(jid).await; + client.accept_buddy_request(jid.clone()).await; + set_requests.write().remove(&jid); + } + }); + + let accept_subscription_request = Action::new_local(move |jid: &BareJID| { + let client = client5.clone(); + let jid = jid.clone(); + async move { + // TODO: error + client.accept_subscription_request(jid.clone()).await; + set_requests.write().remove(&jid); } }); @@ -186,26 +198,35 @@ pub fn AddContact() -> impl IntoView { { let request2 = request.clone(); let request3 = request.clone(); + let request4 = request.clone(); let jid_string = move || request.to_string(); view! { - <div class="jid-with-button"> + <div class="jid-with-buttons"> <div class="jid">{jid_string}</div> - <div> + <div class="buttons"> <div class="button" on:click=move |_| { - accept_friend_request.dispatch(request2.clone()); + reject_friend_request.dispatch(request3.clone()); } > - Accept + Reject </div> <div class="button" on:click=move |_| { - reject_friend_request.dispatch(request3.clone()); + accept_subscription_request.dispatch(request4.clone()); } > - Reject + Sub-only + </div> + <div + class="button" + on:click=move |_| { + accept_friend_request.dispatch(request2.clone()); + } + > + Accept Buddy </div> </div> </div> |