mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
feat: workspace invite (#4827)
* feat: add rename and change icon for workspace cloud api * feat: added created at field for UserWorkspacePB * test: added view check after creating workspace * fix: allow new_icon to be empty string * feat: add invitation api cloud services * chore: cargo clippy * chore: merge conflict * feat: add workspace invitation test * fix: use back old role and af role * chore: use 1.75 channel rust toolchain * chore: added error for test case * chore: added ci var * chore: cargo clippy
This commit is contained in:
@ -3,36 +3,84 @@ use flowy_folder::entities::*;
|
||||
use flowy_folder::event_map::FolderEvent;
|
||||
use flowy_folder::event_map::FolderEvent::*;
|
||||
use flowy_user::entities::{
|
||||
AddWorkspaceMemberPB, QueryWorkspacePB, RemoveWorkspaceMemberPB, RepeatedWorkspaceMemberPB,
|
||||
AcceptWorkspaceInvitationPB, AddWorkspaceMemberPB, QueryWorkspacePB, RemoveWorkspaceMemberPB,
|
||||
RepeatedWorkspaceInvitationPB, RepeatedWorkspaceMemberPB, WorkspaceMemberInvitationPB,
|
||||
WorkspaceMemberPB,
|
||||
};
|
||||
use flowy_user::errors::FlowyError;
|
||||
use flowy_user::event_map::UserEvent;
|
||||
use flowy_user_pub::entities::Role;
|
||||
|
||||
use crate::event_builder::EventBuilder;
|
||||
use crate::EventIntegrationTest;
|
||||
|
||||
impl EventIntegrationTest {
|
||||
pub async fn add_workspace_member(&self, workspace_id: &str, email: &str) {
|
||||
EventBuilder::new(self.clone())
|
||||
if let Some(err) = EventBuilder::new(self.clone())
|
||||
.event(UserEvent::AddWorkspaceMember)
|
||||
.payload(AddWorkspaceMemberPB {
|
||||
workspace_id: workspace_id.to_string(),
|
||||
email: email.to_string(),
|
||||
})
|
||||
.async_send()
|
||||
.await;
|
||||
.await
|
||||
.error()
|
||||
{
|
||||
panic!("Add workspace member failed: {:?}", err);
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn invite_workspace_member(&self, workspace_id: &str, email: &str, role: Role) {
|
||||
if let Some(err) = EventBuilder::new(self.clone())
|
||||
.event(UserEvent::InviteWorkspaceMember)
|
||||
.payload(WorkspaceMemberInvitationPB {
|
||||
workspace_id: workspace_id.to_string(),
|
||||
invitee_email: email.to_string(),
|
||||
role: role.into(),
|
||||
})
|
||||
.async_send()
|
||||
.await
|
||||
.error()
|
||||
{
|
||||
panic!("Invite workspace member failed: {:?}", err);
|
||||
}
|
||||
}
|
||||
|
||||
pub async fn list_workspace_invitations(&self) -> RepeatedWorkspaceInvitationPB {
|
||||
EventBuilder::new(self.clone())
|
||||
.event(UserEvent::ListWorkspaceInvitations)
|
||||
.async_send()
|
||||
.await
|
||||
.parse()
|
||||
}
|
||||
|
||||
pub async fn accept_workspace_invitation(&self, invitation_id: &str) {
|
||||
if let Some(err) = EventBuilder::new(self.clone())
|
||||
.event(UserEvent::AcceptWorkspaceInvitation)
|
||||
.payload(AcceptWorkspaceInvitationPB {
|
||||
invite_id: invitation_id.to_string(),
|
||||
})
|
||||
.async_send()
|
||||
.await
|
||||
.error()
|
||||
{
|
||||
panic!("Accept workspace invitation failed: {:?}", err)
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn delete_workspace_member(&self, workspace_id: &str, email: &str) {
|
||||
EventBuilder::new(self.clone())
|
||||
if let Some(err) = EventBuilder::new(self.clone())
|
||||
.event(UserEvent::RemoveWorkspaceMember)
|
||||
.payload(RemoveWorkspaceMemberPB {
|
||||
workspace_id: workspace_id.to_string(),
|
||||
email: email.to_string(),
|
||||
})
|
||||
.async_send()
|
||||
.await;
|
||||
.await
|
||||
.error()
|
||||
{
|
||||
panic!("Delete workspace member failed: {:?}", err)
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn get_workspace_members(&self, workspace_id: &str) -> Vec<WorkspaceMemberPB> {
|
||||
@ -78,11 +126,15 @@ impl EventIntegrationTest {
|
||||
};
|
||||
|
||||
// delete the view. the view will be moved to trash
|
||||
EventBuilder::new(self.clone())
|
||||
if let Some(err) = EventBuilder::new(self.clone())
|
||||
.event(FolderEvent::DeleteView)
|
||||
.payload(payload)
|
||||
.async_send()
|
||||
.await;
|
||||
.await
|
||||
.error()
|
||||
{
|
||||
panic!("Delete view failed: {:?}", err)
|
||||
};
|
||||
}
|
||||
|
||||
pub async fn update_view(&self, changeset: UpdateViewPayloadPB) -> Option<FlowyError> {
|
||||
|
Reference in New Issue
Block a user