diff options
-rw-r--r-- | assets/style.scss | 19 | ||||
-rw-r--r-- | src/components/roster_list/contact_request_manager.rs | 35 |
2 files changed, 47 insertions, 7 deletions
diff --git a/assets/style.scss b/assets/style.scss index 016c568..c075ced 100644 --- a/assets/style.scss +++ b/assets/style.scss @@ -130,6 +130,7 @@ main { button, .button { + text-align: center; font-size: 1rem; background: #FACC34; color: #000000; @@ -896,6 +897,24 @@ hr { justify-content: space-between; } +.jid-with-buttons { + display: flex; + flex-direction: column; + align-items: stretch; + gap: 4px; + margin-bottom: 8px; +} + +.jid-with-buttons .buttons { + display: flex; + align-items: center; + gap: 4px; +} + +.jid-with-buttons .buttons>* { + flex: 1 1 auto; +} + .jid-with-button .jid { flex: 1 1 auto; } 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> |