app: Implement group management

Except group creation
This commit is contained in:
Valentin Tolmer
2021-10-11 18:41:55 +02:00
committed by nitnelave
parent 42da86cf72
commit 8bd1dec180
12 changed files with 694 additions and 69 deletions

View File

@@ -1,4 +1,4 @@
use crate::{components::user_details::Group, infra::api::HostService};
use crate::infra::api::HostService;
use anyhow::{Error, Result};
use graphql_client::GraphQLQuery;
use yew::{
@@ -26,9 +26,8 @@ pub struct RemoveUserFromGroupComponent {
#[derive(yew::Properties, Clone, PartialEq)]
pub struct Props {
pub username: String,
pub group: Group,
pub is_admin: bool,
pub on_user_removed_from_group: Callback<Group>,
pub group_id: i64,
pub on_user_removed_from_group: Callback<(String, i64)>,
pub on_error: Callback<Error>,
}
@@ -39,7 +38,7 @@ pub enum Msg {
impl RemoveUserFromGroupComponent {
fn submit_remove_group(&mut self) -> Result<bool> {
let group = self.props.group.id;
let group = self.props.group_id;
self._task = HostService::graphql_query::<RemoveUserFromGroup>(
remove_user_from_group::Variables {
user: self.props.username.clone(),
@@ -63,7 +62,7 @@ impl RemoveUserFromGroupComponent {
response?;
self.props
.on_user_removed_from_group
.emit(self.props.group.clone());
.emit((self.props.username.clone(), self.props.group_id));
}
}
Ok(true)
@@ -97,21 +96,12 @@ impl Component for RemoveUserFromGroupComponent {
}
fn view(&self) -> Html {
let group = &self.props.group;
html! {
<>
<td>{&group.display_name}</td>
{ if self.props.is_admin { html! {
<td>
<button
class="btn btn-danger"
onclick=self.link.callback(|_| Msg::SubmitRemoveGroup)>
<i class="bi-x-circle-fill" aria-label="Remove user from group" />
</button>
</td>
}} else { html!{} }
}
</>
<button
class="btn btn-danger"
onclick=self.link.callback(|_| Msg::SubmitRemoveGroup)>
<i class="bi-x-circle-fill" aria-label="Remove user from group" />
</button>
}
}
}