feat: leave workspace

This commit is contained in:
Zack Fu Zi Xiang 2024-03-20 13:07:43 +08:00
parent 44ced4036e
commit 117473d104
No known key found for this signature in database
3 changed files with 21 additions and 1 deletions

View File

@ -585,6 +585,18 @@ impl Client {
.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)]
pub async fn get_workspace_members<W: AsRef<str>>(
&self,

View File

@ -74,7 +74,7 @@ pub fn workspace_scope() -> Scope {
.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}/leave").route(web::put().to(leave_workspace_handler)))
.service(web::resource("/{workspace_id}/leave").route(web::post().to(leave_workspace_handler)))
.service(
web::resource("/{workspace_id}/member")
.route(web::get().to(get_workspace_members_handler))

View File

@ -1,4 +1,5 @@
use app_error::ErrorCode;
use client_api::entity::CreateCollabParams;
use client_api_test_util::{api_client_with_email, TestClient};
use database_entity::dto::{AFAccessLevel, AFRole, QueryCollabMembers};
use shared_entity::dto::workspace_dto::WorkspaceMemberInvitation;
@ -361,4 +362,11 @@ async fn leave_workspace_test() {
let c2 = TestClient::new_user().await;
c1.add_workspace_member(&workspace_id_c1, &c2, AFRole::Member)
.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);
}