mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-17 15:10:29 +03:00
Remove deprecated add member (#5611)
* chore: remove deprecated add member directly * chore: cargo clippy * chore: cargo clippy * chore: cargo clippy
This commit is contained in:
parent
7586a0ed48
commit
d2ca41c8f5
@ -94,7 +94,7 @@ validator = { version = "0.16.1", features = ["derive"] }
|
|||||||
|
|
||||||
# Please using the following command to update the revision id
|
# Please using the following command to update the revision id
|
||||||
# Current directory: frontend
|
# Current directory: frontend
|
||||||
# Run the script.add_workspace_members:
|
# Run the script:
|
||||||
# scripts/tool/update_client_api_rev.sh new_rev_id
|
# scripts/tool/update_client_api_rev.sh new_rev_id
|
||||||
# ⚠️⚠️⚠️️
|
# ⚠️⚠️⚠️️
|
||||||
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "6262816043efeede8823d7a7ea252083adf407e9" }
|
client-api = { git = "https://github.com/AppFlowy-IO/AppFlowy-Cloud", rev = "6262816043efeede8823d7a7ea252083adf407e9" }
|
||||||
|
@ -7,7 +7,7 @@ use flowy_folder::event_map::FolderEvent::*;
|
|||||||
use flowy_folder::{entities::*, ViewLayout};
|
use flowy_folder::{entities::*, ViewLayout};
|
||||||
use flowy_search::services::manager::{SearchHandler, SearchType};
|
use flowy_search::services::manager::{SearchHandler, SearchType};
|
||||||
use flowy_user::entities::{
|
use flowy_user::entities::{
|
||||||
AcceptWorkspaceInvitationPB, AddWorkspaceMemberPB, QueryWorkspacePB, RemoveWorkspaceMemberPB,
|
AcceptWorkspaceInvitationPB, QueryWorkspacePB, RemoveWorkspaceMemberPB,
|
||||||
RepeatedWorkspaceInvitationPB, RepeatedWorkspaceMemberPB, WorkspaceMemberInvitationPB,
|
RepeatedWorkspaceInvitationPB, RepeatedWorkspaceMemberPB, WorkspaceMemberInvitationPB,
|
||||||
WorkspaceMemberPB,
|
WorkspaceMemberPB,
|
||||||
};
|
};
|
||||||
@ -19,21 +19,6 @@ use crate::event_builder::EventBuilder;
|
|||||||
use crate::EventIntegrationTest;
|
use crate::EventIntegrationTest;
|
||||||
|
|
||||||
impl EventIntegrationTest {
|
impl EventIntegrationTest {
|
||||||
pub async fn add_workspace_member(&self, workspace_id: &str, email: &str) {
|
|
||||||
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
|
|
||||||
.error()
|
|
||||||
{
|
|
||||||
panic!("Add workspace member failed: {:?}", err);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn invite_workspace_member(&self, workspace_id: &str, email: &str, role: Role) {
|
pub async fn invite_workspace_member(&self, workspace_id: &str, email: &str, role: Role) {
|
||||||
EventBuilder::new(self.clone())
|
EventBuilder::new(self.clone())
|
||||||
.event(UserEvent::InviteWorkspaceMember)
|
.event(UserEvent::InviteWorkspaceMember)
|
||||||
@ -46,6 +31,26 @@ impl EventIntegrationTest {
|
|||||||
.await;
|
.await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// convenient function to add workspace member by inviting and accepting the invitation
|
||||||
|
pub async fn add_workspace_member(&self, workspace_id: &str, other: &EventIntegrationTest) {
|
||||||
|
let other_email = other.get_user_profile().await.unwrap().email;
|
||||||
|
|
||||||
|
self
|
||||||
|
.invite_workspace_member(workspace_id, &other_email, Role::Member)
|
||||||
|
.await;
|
||||||
|
|
||||||
|
let invitations = other.list_workspace_invitations().await;
|
||||||
|
let target_invi = invitations
|
||||||
|
.items
|
||||||
|
.into_iter()
|
||||||
|
.find(|i| i.workspace_id == workspace_id)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
other
|
||||||
|
.accept_workspace_invitation(&target_invi.invite_id)
|
||||||
|
.await;
|
||||||
|
}
|
||||||
|
|
||||||
pub async fn list_workspace_invitations(&self) -> RepeatedWorkspaceInvitationPB {
|
pub async fn list_workspace_invitations(&self) -> RepeatedWorkspaceInvitationPB {
|
||||||
EventBuilder::new(self.clone())
|
EventBuilder::new(self.clone())
|
||||||
.event(UserEvent::ListWorkspaceInvitations)
|
.event(UserEvent::ListWorkspaceInvitations)
|
||||||
|
@ -26,10 +26,8 @@ async fn af_cloud_upload_file_test() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
while let Ok(result) = rx.recv().await {
|
while let Ok(result) = rx.recv().await {
|
||||||
if result.file_id == created_upload.file_id {
|
if result.file_id == created_upload.file_id && result.status == UploadStatus::Finish {
|
||||||
if result.status == UploadStatus::Finish {
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,10 +52,8 @@ async fn af_cloud_upload_big_file_test() {
|
|||||||
|
|
||||||
let mut rx = test.storage_manager.subscribe_upload_result();
|
let mut rx = test.storage_manager.subscribe_upload_result();
|
||||||
while let Ok(result) = rx.recv().await {
|
while let Ok(result) = rx.recv().await {
|
||||||
if result.file_id == created_upload.file_id {
|
if result.file_id == created_upload.file_id && result.status == UploadStatus::InProgress {
|
||||||
if result.status == UploadStatus::InProgress {
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,10 +67,8 @@ async fn af_cloud_upload_big_file_test() {
|
|||||||
let test = EventIntegrationTest::new_with_config(config).await;
|
let test = EventIntegrationTest::new_with_config(config).await;
|
||||||
let mut rx = test.storage_manager.subscribe_upload_result();
|
let mut rx = test.storage_manager.subscribe_upload_result();
|
||||||
while let Ok(result) = rx.recv().await {
|
while let Ok(result) = rx.recv().await {
|
||||||
if result.file_id == created_upload.file_id {
|
if result.file_id == created_upload.file_id && result.status == UploadStatus::Finish {
|
||||||
if result.status == UploadStatus::Finish {
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -101,7 +95,7 @@ async fn af_cloud_upload_6_files_test() {
|
|||||||
let mut rx = test.storage_manager.subscribe_upload_result();
|
let mut rx = test.storage_manager.subscribe_upload_result();
|
||||||
|
|
||||||
let mut created_uploads = vec![];
|
let mut created_uploads = vec![];
|
||||||
for file_size in vec![1, 2, 5, 8, 12, 20] {
|
for file_size in [1, 2, 5, 8, 12, 20] {
|
||||||
let file_path = generate_file_with_bytes_len(file_size * 1024 * 1024)
|
let file_path = generate_file_with_bytes_len(file_size * 1024 * 1024)
|
||||||
.await
|
.await
|
||||||
.0;
|
.0;
|
||||||
|
@ -47,7 +47,7 @@ async fn af_cloud_add_workspace_member_test() {
|
|||||||
assert_eq!(members[0].email, user_1.email);
|
assert_eq!(members[0].email, user_1.email);
|
||||||
|
|
||||||
test_1
|
test_1
|
||||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
.add_workspace_member(&user_1.workspace_id, &test_2)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
let members = test_1.get_workspace_members(&user_1.workspace_id).await;
|
||||||
@ -66,7 +66,7 @@ async fn af_cloud_delete_workspace_member_test() {
|
|||||||
let user_2 = test_2.af_cloud_sign_up().await;
|
let user_2 = test_2.af_cloud_sign_up().await;
|
||||||
|
|
||||||
test_1
|
test_1
|
||||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
.add_workspace_member(&user_1.workspace_id, &test_2)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
test_1
|
test_1
|
||||||
@ -88,7 +88,7 @@ async fn af_cloud_leave_workspace_test() {
|
|||||||
let user_2 = test_2.af_cloud_sign_up().await;
|
let user_2 = test_2.af_cloud_sign_up().await;
|
||||||
|
|
||||||
test_1
|
test_1
|
||||||
.add_workspace_member(&user_1.workspace_id, &user_2.email)
|
.add_workspace_member(&user_1.workspace_id, &test_2)
|
||||||
.await;
|
.await;
|
||||||
|
|
||||||
// test_2 should have 2 workspace
|
// test_2 should have 2 workspace
|
||||||
|
@ -182,7 +182,7 @@ async fn af_cloud_different_open_same_workspace_test() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
client_1
|
client_1
|
||||||
.add_workspace_member(&owner_profile.workspace_id, &client_profile.email)
|
.add_workspace_member(&owner_profile.workspace_id, &client)
|
||||||
.await;
|
.await;
|
||||||
clients.push((client, client_profile));
|
clients.push((client, client_profile));
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,7 @@ use client_api::entity::billing_dto::{
|
|||||||
SubscriptionPlan, SubscriptionStatus, WorkspaceSubscriptionPlan, WorkspaceSubscriptionStatus,
|
SubscriptionPlan, SubscriptionStatus, WorkspaceSubscriptionPlan, WorkspaceSubscriptionStatus,
|
||||||
};
|
};
|
||||||
use client_api::entity::workspace_dto::{
|
use client_api::entity::workspace_dto::{
|
||||||
CreateWorkspaceMember, CreateWorkspaceParam, PatchWorkspaceParam, WorkspaceMemberChangeset,
|
CreateWorkspaceParam, PatchWorkspaceParam, WorkspaceMemberChangeset, WorkspaceMemberInvitation,
|
||||||
WorkspaceMemberInvitation,
|
|
||||||
};
|
};
|
||||||
use client_api::entity::{
|
use client_api::entity::{
|
||||||
AFRole, AFWorkspace, AFWorkspaceInvitation, AuthProvider, CollabParams, CreateCollabParams,
|
AFRole, AFWorkspace, AFWorkspaceInvitation, AuthProvider, CollabParams, CreateCollabParams,
|
||||||
@ -222,28 +221,6 @@ where
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[allow(deprecated)]
|
|
||||||
fn add_workspace_member(
|
|
||||||
&self,
|
|
||||||
user_email: String,
|
|
||||||
workspace_id: String,
|
|
||||||
) -> FutureResult<(), FlowyError> {
|
|
||||||
let try_get_client = self.server.try_get_client();
|
|
||||||
FutureResult::new(async move {
|
|
||||||
// TODO(zack): add_workspace_members will be deprecated after finishing the invite logic. Don't forget to remove the #[allow(deprecated)]
|
|
||||||
try_get_client?
|
|
||||||
.add_workspace_members(
|
|
||||||
workspace_id,
|
|
||||||
vec![CreateWorkspaceMember {
|
|
||||||
email: user_email,
|
|
||||||
role: AFRole::Member,
|
|
||||||
}],
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
Ok(())
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
fn invite_workspace_member(
|
fn invite_workspace_member(
|
||||||
&self,
|
&self,
|
||||||
invitee_email: String,
|
invitee_email: String,
|
||||||
|
@ -102,13 +102,13 @@ diesel::table! {
|
|||||||
}
|
}
|
||||||
|
|
||||||
diesel::allow_tables_to_appear_in_same_query!(
|
diesel::allow_tables_to_appear_in_same_query!(
|
||||||
chat_message_table,
|
chat_message_table,
|
||||||
chat_table,
|
chat_table,
|
||||||
collab_snapshot,
|
collab_snapshot,
|
||||||
upload_file_part,
|
upload_file_part,
|
||||||
upload_file_table,
|
upload_file_table,
|
||||||
user_data_migration_records,
|
user_data_migration_records,
|
||||||
user_table,
|
user_table,
|
||||||
user_workspace_table,
|
user_workspace_table,
|
||||||
workspace_members_table,
|
workspace_members_table,
|
||||||
);
|
);
|
||||||
|
@ -314,12 +314,12 @@ impl StorageService for StorageServiceImpl {
|
|||||||
// When resuming an upload, check if the upload_id is empty.
|
// When resuming an upload, check if the upload_id is empty.
|
||||||
// If the upload_id is empty, the upload has likely not been created yet.
|
// If the upload_id is empty, the upload has likely not been created yet.
|
||||||
// If the upload_id is not empty, verify which parts have already been uploaded.
|
// If the upload_id is not empty, verify which parts have already been uploaded.
|
||||||
select_upload_file(conn, &workspace_id, &parent_dir, &file_id)?.and_then(|record| {
|
select_upload_file(conn, workspace_id, parent_dir, file_id)?.map(|record| {
|
||||||
if record.upload_id.is_empty() {
|
if record.upload_id.is_empty() {
|
||||||
Some((record, vec![]))
|
(record, vec![])
|
||||||
} else {
|
} else {
|
||||||
let parts = select_upload_parts(conn, &record.upload_id).unwrap_or_default();
|
let parts = select_upload_parts(conn, &record.upload_id).unwrap_or_default();
|
||||||
Some((record, parts))
|
(record, parts)
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
@ -358,7 +358,7 @@ async fn create_upload_record(
|
|||||||
let content_type = mime_guess::from_path(&local_file_path)
|
let content_type = mime_guess::from_path(&local_file_path)
|
||||||
.first_or_octet_stream()
|
.first_or_octet_stream()
|
||||||
.to_string();
|
.to_string();
|
||||||
let file_id = format!("{}.{}", fxhash::hash(&chunked_bytes.data).to_string(), ext);
|
let file_id = format!("{}.{}", fxhash::hash(&chunked_bytes.data), ext);
|
||||||
let record = UploadFileTable {
|
let record = UploadFileTable {
|
||||||
workspace_id,
|
workspace_id,
|
||||||
file_id,
|
file_id,
|
||||||
@ -430,10 +430,10 @@ async fn start_upload(
|
|||||||
upload_file.file_id,
|
upload_file.file_id,
|
||||||
chunked_bytes.iter().count()
|
chunked_bytes.iter().count()
|
||||||
);
|
);
|
||||||
let mut iter = chunked_bytes.iter().enumerate();
|
let iter = chunked_bytes.iter().enumerate();
|
||||||
let mut completed_parts = Vec::new();
|
let mut completed_parts = Vec::new();
|
||||||
|
|
||||||
while let Some((index, chunk_bytes)) = iter.next() {
|
for (index, chunk_bytes) in iter {
|
||||||
let part_number = index as i32 + 1;
|
let part_number = index as i32 + 1;
|
||||||
trace!(
|
trace!(
|
||||||
"[File] {} uploading part: {}, len:{}KB",
|
"[File] {} uploading part: {}, len:{}KB",
|
||||||
@ -443,8 +443,8 @@ async fn start_upload(
|
|||||||
);
|
);
|
||||||
// start uploading parts
|
// start uploading parts
|
||||||
match upload_part(
|
match upload_part(
|
||||||
&cloud_service,
|
cloud_service,
|
||||||
&user_service,
|
user_service,
|
||||||
&upload_file.workspace_id,
|
&upload_file.workspace_id,
|
||||||
&upload_file.parent_dir,
|
&upload_file.parent_dir,
|
||||||
&upload_file.upload_id,
|
&upload_file.upload_id,
|
||||||
@ -476,8 +476,8 @@ async fn start_upload(
|
|||||||
|
|
||||||
// mark it as completed
|
// mark it as completed
|
||||||
complete_upload(
|
complete_upload(
|
||||||
&cloud_service,
|
cloud_service,
|
||||||
&user_service,
|
user_service,
|
||||||
temp_storage,
|
temp_storage,
|
||||||
&upload_file,
|
&upload_file,
|
||||||
completed_parts,
|
completed_parts,
|
||||||
@ -540,6 +540,7 @@ async fn resume_upload(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_arguments)]
|
||||||
#[instrument(level = "debug", skip_all)]
|
#[instrument(level = "debug", skip_all)]
|
||||||
async fn upload_part(
|
async fn upload_part(
|
||||||
cloud_service: &Arc<dyn StorageCloudService>,
|
cloud_service: &Arc<dyn StorageCloudService>,
|
||||||
@ -553,10 +554,10 @@ async fn upload_part(
|
|||||||
) -> Result<UploadPartResponse, FlowyError> {
|
) -> Result<UploadPartResponse, FlowyError> {
|
||||||
let resp = cloud_service
|
let resp = cloud_service
|
||||||
.upload_part(
|
.upload_part(
|
||||||
&workspace_id,
|
workspace_id,
|
||||||
&parent_dir,
|
parent_dir,
|
||||||
&upload_id,
|
upload_id,
|
||||||
&file_id,
|
file_id,
|
||||||
part_number,
|
part_number,
|
||||||
body,
|
body,
|
||||||
)
|
)
|
||||||
|
@ -13,7 +13,7 @@ use std::path::PathBuf;
|
|||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
|
|
||||||
pub fn test_database() -> (Database, PathBuf) {
|
pub fn test_database() -> (Database, PathBuf) {
|
||||||
let db_path = temp_dir().join(&format!("test-{}.db", generate_random_string(8)));
|
let db_path = temp_dir().join(format!("test-{}.db", generate_random_string(8)));
|
||||||
(flowy_sqlite::init(&db_path).unwrap(), db_path)
|
(flowy_sqlite::init(&db_path).unwrap(), db_path)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ async fn test_upload_part_test() {
|
|||||||
|
|
||||||
// get all existing parts
|
// get all existing parts
|
||||||
let mut conn = db.get_connection().unwrap();
|
let mut conn = db.get_connection().unwrap();
|
||||||
let parts = select_upload_parts(&mut *conn, &upload_id).unwrap();
|
let parts = select_upload_parts(&mut conn, &upload_id).unwrap();
|
||||||
assert_eq!(parts.len(), 2);
|
assert_eq!(parts.len(), 2);
|
||||||
assert_eq!(parts[0].part_num, 1);
|
assert_eq!(parts[0].part_num, 1);
|
||||||
assert_eq!(parts[1].part_num, 2);
|
assert_eq!(parts[1].part_num, 2);
|
||||||
@ -112,7 +112,7 @@ async fn test_upload_part_test() {
|
|||||||
delete_upload_file(conn, &upload_id).unwrap();
|
delete_upload_file(conn, &upload_id).unwrap();
|
||||||
|
|
||||||
let mut conn = db.get_connection().unwrap();
|
let mut conn = db.get_connection().unwrap();
|
||||||
let parts = select_upload_parts(&mut *conn, &upload_id).unwrap();
|
let parts = select_upload_parts(&mut conn, &upload_id).unwrap();
|
||||||
assert!(parts.is_empty())
|
assert!(parts.is_empty())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ pub async fn create_upload_file_record(
|
|||||||
let file_id = fxhash::hash(&chunked_bytes.data).to_string();
|
let file_id = fxhash::hash(&chunked_bytes.data).to_string();
|
||||||
|
|
||||||
// Create UploadFileTable record
|
// Create UploadFileTable record
|
||||||
let upload_file = UploadFileTable {
|
UploadFileTable {
|
||||||
workspace_id,
|
workspace_id,
|
||||||
file_id,
|
file_id,
|
||||||
upload_id,
|
upload_id,
|
||||||
@ -175,7 +175,5 @@ pub async fn create_upload_file_record(
|
|||||||
chunk_size: MIN_CHUNK_SIZE as i32,
|
chunk_size: MIN_CHUNK_SIZE as i32,
|
||||||
num_chunk: chunked_bytes.offsets.len() as i32,
|
num_chunk: chunked_bytes.offsets.len() as i32,
|
||||||
created_at: chrono::Utc::now().timestamp(),
|
created_at: chrono::Utc::now().timestamp(),
|
||||||
};
|
}
|
||||||
|
|
||||||
upload_file
|
|
||||||
}
|
}
|
||||||
|
@ -178,15 +178,6 @@ pub trait UserCloudService: Send + Sync + 'static {
|
|||||||
/// Deletes a workspace owned by the user.
|
/// Deletes a workspace owned by the user.
|
||||||
fn delete_workspace(&self, workspace_id: &str) -> FutureResult<(), FlowyError>;
|
fn delete_workspace(&self, workspace_id: &str) -> FutureResult<(), FlowyError>;
|
||||||
|
|
||||||
// Deprecated, use invite instead
|
|
||||||
fn add_workspace_member(
|
|
||||||
&self,
|
|
||||||
user_email: String,
|
|
||||||
workspace_id: String,
|
|
||||||
) -> FutureResult<(), FlowyError> {
|
|
||||||
FutureResult::new(async { Ok(()) })
|
|
||||||
}
|
|
||||||
|
|
||||||
fn invite_workspace_member(
|
fn invite_workspace_member(
|
||||||
&self,
|
&self,
|
||||||
invitee_email: String,
|
invitee_email: String,
|
||||||
|
@ -98,6 +98,7 @@ pub struct AcceptWorkspaceInvitationPB {
|
|||||||
pub invite_id: String,
|
pub invite_id: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Deprecated
|
||||||
#[derive(ProtoBuf, Default, Clone, Validate)]
|
#[derive(ProtoBuf, Default, Clone, Validate)]
|
||||||
pub struct AddWorkspaceMemberPB {
|
pub struct AddWorkspaceMemberPB {
|
||||||
#[pb(index = 1)]
|
#[pb(index = 1)]
|
||||||
|
@ -623,19 +623,6 @@ pub async fn update_reminder_event_handler(
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tracing::instrument(level = "debug", skip_all, err)]
|
|
||||||
pub async fn add_workspace_member_handler(
|
|
||||||
data: AFPluginData<AddWorkspaceMemberPB>,
|
|
||||||
manager: AFPluginState<Weak<UserManager>>,
|
|
||||||
) -> Result<(), FlowyError> {
|
|
||||||
let data = data.try_into_inner()?;
|
|
||||||
let manager = upgrade_manager(manager)?;
|
|
||||||
manager
|
|
||||||
.add_workspace_member(data.email, data.workspace_id)
|
|
||||||
.await?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
#[tracing::instrument(level = "debug", skip_all, err)]
|
#[tracing::instrument(level = "debug", skip_all, err)]
|
||||||
pub async fn delete_workspace_member_handler(
|
pub async fn delete_workspace_member_handler(
|
||||||
data: AFPluginData<RemoveWorkspaceMemberPB>,
|
data: AFPluginData<RemoveWorkspaceMemberPB>,
|
||||||
|
@ -54,9 +54,6 @@ pub fn init(user_manager: Weak<UserManager>) -> AFPlugin {
|
|||||||
.event(UserEvent::SetNotificationSettings, set_notification_settings)
|
.event(UserEvent::SetNotificationSettings, set_notification_settings)
|
||||||
.event(UserEvent::GetNotificationSettings, get_notification_settings)
|
.event(UserEvent::GetNotificationSettings, get_notification_settings)
|
||||||
.event(UserEvent::ImportAppFlowyDataFolder, import_appflowy_data_folder_handler)
|
.event(UserEvent::ImportAppFlowyDataFolder, import_appflowy_data_folder_handler)
|
||||||
// Workspace member
|
|
||||||
.event(UserEvent::AddWorkspaceMember, add_workspace_member_handler) // deprecated, use invite
|
|
||||||
// instead
|
|
||||||
.event(UserEvent::GetMemberInfo, get_workspace_member_info)
|
.event(UserEvent::GetMemberInfo, get_workspace_member_info)
|
||||||
.event(UserEvent::RemoveWorkspaceMember, delete_workspace_member_handler)
|
.event(UserEvent::RemoveWorkspaceMember, delete_workspace_member_handler)
|
||||||
.event(UserEvent::GetWorkspaceMembers, get_workspace_members_handler)
|
.event(UserEvent::GetWorkspaceMembers, get_workspace_members_handler)
|
||||||
@ -196,6 +193,7 @@ pub enum UserEvent {
|
|||||||
#[event(output = "NotificationSettingsPB")]
|
#[event(output = "NotificationSettingsPB")]
|
||||||
GetNotificationSettings = 36,
|
GetNotificationSettings = 36,
|
||||||
|
|
||||||
|
// Deprecated
|
||||||
#[event(input = "AddWorkspaceMemberPB")]
|
#[event(input = "AddWorkspaceMemberPB")]
|
||||||
AddWorkspaceMember = 37,
|
AddWorkspaceMember = 37,
|
||||||
|
|
||||||
|
@ -327,20 +327,6 @@ impl UserManager {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
// deprecated, use invite instead
|
|
||||||
pub async fn add_workspace_member(
|
|
||||||
&self,
|
|
||||||
user_email: String,
|
|
||||||
workspace_id: String,
|
|
||||||
) -> FlowyResult<()> {
|
|
||||||
self
|
|
||||||
.cloud_services
|
|
||||||
.get_user_service()?
|
|
||||||
.add_workspace_member(user_email, workspace_id)
|
|
||||||
.await?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn remove_workspace_member(
|
pub async fn remove_workspace_member(
|
||||||
&self,
|
&self,
|
||||||
user_email: String,
|
user_email: String,
|
||||||
|
Loading…
Reference in New Issue
Block a user