feat: leave workspace
This commit is contained in:
parent
44ced4036e
commit
117473d104
|
|
@ -585,6 +585,18 @@ impl Client {
|
||||||
.into_data()
|
.into_data()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[instrument(level = "debug", skip_all, err)]
|
||||||
|
pub async fn leave_workspace(&self, workspace_id: &str) -> Result<(), AppResponseError> {
|
||||||
|
let url = format!("{}/api/workspace/{}/leave", self.base_url, workspace_id);
|
||||||
|
let resp = self
|
||||||
|
.http_client_with_auth(Method::POST, &url)
|
||||||
|
.await?
|
||||||
|
.send()
|
||||||
|
.await?;
|
||||||
|
log_request_id(&resp);
|
||||||
|
AppResponse::<()>::from_response(resp).await?.into_error()
|
||||||
|
}
|
||||||
|
|
||||||
#[instrument(level = "debug", skip_all, err)]
|
#[instrument(level = "debug", skip_all, err)]
|
||||||
pub async fn get_workspace_members<W: AsRef<str>>(
|
pub async fn get_workspace_members<W: AsRef<str>>(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ pub fn workspace_scope() -> Scope {
|
||||||
.route(web::delete().to(delete_workspace_handler))
|
.route(web::delete().to(delete_workspace_handler))
|
||||||
)
|
)
|
||||||
.service(web::resource("/{workspace_id}/open").route(web::put().to(open_workspace_handler)))
|
.service(web::resource("/{workspace_id}/open").route(web::put().to(open_workspace_handler)))
|
||||||
.service(web::resource("/{workspace_id}/leave").route(web::put().to(leave_workspace_handler)))
|
.service(web::resource("/{workspace_id}/leave").route(web::post().to(leave_workspace_handler)))
|
||||||
.service(
|
.service(
|
||||||
web::resource("/{workspace_id}/member")
|
web::resource("/{workspace_id}/member")
|
||||||
.route(web::get().to(get_workspace_members_handler))
|
.route(web::get().to(get_workspace_members_handler))
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
use app_error::ErrorCode;
|
use app_error::ErrorCode;
|
||||||
|
use client_api::entity::CreateCollabParams;
|
||||||
use client_api_test_util::{api_client_with_email, TestClient};
|
use client_api_test_util::{api_client_with_email, TestClient};
|
||||||
use database_entity::dto::{AFAccessLevel, AFRole, QueryCollabMembers};
|
use database_entity::dto::{AFAccessLevel, AFRole, QueryCollabMembers};
|
||||||
use shared_entity::dto::workspace_dto::WorkspaceMemberInvitation;
|
use shared_entity::dto::workspace_dto::WorkspaceMemberInvitation;
|
||||||
|
|
@ -361,4 +362,11 @@ async fn leave_workspace_test() {
|
||||||
let c2 = TestClient::new_user().await;
|
let c2 = TestClient::new_user().await;
|
||||||
c1.add_workspace_member(&workspace_id_c1, &c2, AFRole::Member)
|
c1.add_workspace_member(&workspace_id_c1, &c2, AFRole::Member)
|
||||||
.await;
|
.await;
|
||||||
|
c2.api_client
|
||||||
|
.leave_workspace(&workspace_id_c1)
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let members = c1.get_workspace_members(&workspace_id_c1).await;
|
||||||
|
assert_eq!(members.len(), 1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue