chore: migrate collab actors to appflowy-collaborate (#556)
This commit is contained in:
parent
2fae260e4f
commit
fbdcbd6e08
|
|
@ -631,6 +631,8 @@ name = "appflowy-collaborate"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"access-control",
|
||||
"actix",
|
||||
"actix-web-actors",
|
||||
"anyhow",
|
||||
"app-error",
|
||||
"async-stream",
|
||||
|
|
@ -649,6 +651,7 @@ dependencies = [
|
|||
"database-entity",
|
||||
"futures",
|
||||
"futures-util",
|
||||
"governor",
|
||||
"indexmap 2.2.5",
|
||||
"itertools 0.12.0",
|
||||
"lazy_static",
|
||||
|
|
@ -660,6 +663,7 @@ dependencies = [
|
|||
"semver",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_repr",
|
||||
"sqlx",
|
||||
"thiserror",
|
||||
"tokio",
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ edition = "2021"
|
|||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
actix = "0.13.3"
|
||||
actix.workspace = true
|
||||
actix-web = { version = "4.5.1", default-features = false, features = ["openssl", "compress-brotli", "compress-gzip"] }
|
||||
actix-http = { workspace = true, default-features = false, features = ["openssl", "compress-brotli", "compress-gzip"] }
|
||||
actix-rt = "2.9.0"
|
||||
|
|
@ -19,6 +19,7 @@ openssl = { version = "0.10.62", features = ["vendored"] }
|
|||
|
||||
# serde
|
||||
serde_json.workspace = true
|
||||
serde_repr.workspace = true
|
||||
serde.workspace = true
|
||||
|
||||
tokio = { workspace = true, features = [
|
||||
|
|
@ -95,7 +96,7 @@ shared-entity = { path = "libs/shared-entity", features = ["cloud"] }
|
|||
workspace-template = { workspace = true }
|
||||
collab-rt-entity.workspace = true
|
||||
collab-stream.workspace = true
|
||||
serde_repr = "0.1.18"
|
||||
|
||||
tonic-build = "0.11.0"
|
||||
log = "0.4.20"
|
||||
lettre = { version = "0.11.7", features = ["tokio1", "tokio1-native-tls"] }
|
||||
|
|
@ -171,11 +172,13 @@ async-trait = "0.1.77"
|
|||
prometheus-client = "0.22.0"
|
||||
collab-stream = { path = "libs/collab-stream" }
|
||||
serde_json = "1.0.111"
|
||||
serde_repr = "0.1.18"
|
||||
serde = { version = "1.0.195", features = ["derive"] }
|
||||
bytes = "1.5.0"
|
||||
workspace-template = { path = "libs/workspace-template" }
|
||||
uuid = { version = "1.6.1", features = ["v4"] }
|
||||
anyhow = "1.0.79"
|
||||
actix = "0.13.3"
|
||||
actix-http = { version = "3.6.0", default-features = false }
|
||||
tokio = { version = "1.36.0", features = ["sync"] }
|
||||
tokio-stream = "0.1.14"
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ path = "src/lib.rs"
|
|||
|
||||
[dependencies]
|
||||
access-control.workspace = true
|
||||
actix.workspace = true
|
||||
actix-web-actors = { version = "4.3" }
|
||||
app-error = { workspace = true, features = ["sqlx_error", "tokio_error"] }
|
||||
dashmap.workspace = true
|
||||
async-stream.workspace = true
|
||||
|
|
@ -25,6 +27,7 @@ tokio = { workspace = true, features = ["net", "sync", "macros", "rt-multi-threa
|
|||
async-trait = "0.1.77"
|
||||
serde.workspace = true
|
||||
serde_json.workspace = true
|
||||
serde_repr.workspace = true
|
||||
sqlx = { workspace = true, default-features = false, features = ["runtime-tokio-rustls", "macros", "postgres", "uuid", "chrono"] }
|
||||
thiserror = "1.0.56"
|
||||
anyhow = "1"
|
||||
|
|
@ -37,6 +40,7 @@ collab-folder = { workspace = true }
|
|||
collab-document = { workspace = true }
|
||||
database.workspace = true
|
||||
database-entity.workspace = true
|
||||
governor = { version = "0.6.3" }
|
||||
yrs.workspace = true
|
||||
chrono = "0.4.31"
|
||||
collab-rt-entity = { workspace = true, features = ["actix_message"] }
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
use crate::biz::actix_ws::entities::{ClientMessage, Connect, Disconnect, RealtimeMessage};
|
||||
use crate::actix_ws::entities::{ClientMessage, Connect, Disconnect, RealtimeMessage};
|
||||
use crate::error::RealtimeError;
|
||||
use crate::RealtimeClientWebsocketSink;
|
||||
use actix::{
|
||||
fut, Actor, ActorContext, ActorFutureExt, Addr, AsyncContext, Context, ContextFutureSpawner,
|
||||
Handler, MailboxError, Recipient, ResponseFuture, Running, StreamHandler, WrapFuture,
|
||||
|
|
@ -6,8 +8,6 @@ use actix::{
|
|||
use actix_web_actors::ws;
|
||||
use actix_web_actors::ws::{CloseCode, CloseReason, ProtocolError, WebsocketContext};
|
||||
use anyhow::anyhow;
|
||||
use appflowy_collaborate::error::RealtimeError;
|
||||
use appflowy_collaborate::RealtimeClientWebsocketSink;
|
||||
use async_trait::async_trait;
|
||||
use bytes::Bytes;
|
||||
use collab_rt_entity::user::RealtimeUser;
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::error::RealtimeError;
|
||||
use actix::{Message, Recipient};
|
||||
use appflowy_collaborate::error::RealtimeError;
|
||||
|
||||
use serde_repr::{Deserialize_repr, Serialize_repr};
|
||||
use std::fmt::Debug;
|
||||
|
|
@ -3,14 +3,14 @@ use std::ops::Deref;
|
|||
use actix::{Actor, Context, Handler, ResponseFuture};
|
||||
use tracing::{error, info, warn};
|
||||
|
||||
use crate::error::RealtimeError;
|
||||
use crate::CollaborationServer;
|
||||
use access_control::collab::RealtimeAccessControl;
|
||||
use appflowy_collaborate::error::RealtimeError;
|
||||
use appflowy_collaborate::CollaborationServer;
|
||||
use collab_rt_entity::user::UserDevice;
|
||||
use database::collab::CollabStorage;
|
||||
|
||||
use crate::biz::actix_ws::client::rt_client::{RealtimeClientWebsocketSinkImpl, RealtimeServer};
|
||||
use crate::biz::actix_ws::entities::{ClientMessage, ClientStreamMessage, Connect, Disconnect};
|
||||
use crate::actix_ws::client::rt_client::{RealtimeClientWebsocketSinkImpl, RealtimeServer};
|
||||
use crate::actix_ws::entities::{ClientMessage, ClientStreamMessage, Connect, Disconnect};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct RealtimeServerActor<S, AC>(pub CollaborationServer<S, AC>);
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
pub mod actix_ws;
|
||||
mod client;
|
||||
pub mod collab;
|
||||
pub mod command;
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ use validator::Validate;
|
|||
|
||||
use access_control::collab::CollabAccessControl;
|
||||
use app_error::AppError;
|
||||
use appflowy_collaborate::actix_ws::entities::ClientStreamMessage;
|
||||
use collab_rt_entity::realtime_proto::HttpRealtimeMessage;
|
||||
use collab_rt_entity::RealtimeMessage;
|
||||
use collab_rt_protocol::validate_encode_collab;
|
||||
|
|
@ -29,7 +30,6 @@ use shared_entity::response::{AppResponse, JsonAppResponse};
|
|||
use crate::api::util::{compress_type_from_header_value, device_id_from_headers, CollabValidator};
|
||||
use crate::api::ws::RealtimeServerAddr;
|
||||
use crate::biz;
|
||||
use crate::biz::actix_ws::entities::ClientStreamMessage;
|
||||
use crate::biz::user::auth::jwt::UserUuid;
|
||||
use crate::biz::workspace;
|
||||
use crate::domain::compression::{decompress, CompressionType, X_COMPRESSION_TYPE};
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@ use tokio::sync::mpsc::Sender;
|
|||
use tracing::{debug, error, instrument, trace};
|
||||
|
||||
use app_error::AppError;
|
||||
use appflowy_collaborate::actix_ws::client::rt_client::RealtimeClient;
|
||||
use appflowy_collaborate::actix_ws::server::RealtimeServerActor;
|
||||
use appflowy_collaborate::collab::access_control::RealtimeCollabAccessControlImpl;
|
||||
use collab_rt_entity::user::{AFUserChange, RealtimeUser, UserMessage};
|
||||
use collab_rt_entity::RealtimeMessage;
|
||||
use shared_entity::response::AppResponseError;
|
||||
|
||||
use crate::biz::actix_ws::client::rt_client::RealtimeClient;
|
||||
use crate::biz::actix_ws::server::RealtimeServerActor;
|
||||
use crate::biz::collab::storage::CollabAccessControlStorage;
|
||||
use crate::biz::user::auth::jwt::{authorization_from_token, UserUuid};
|
||||
use crate::state::AppState;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ use access_control::access::{enable_access_control, AccessControl};
|
|||
|
||||
use crate::api::ai_tool::ai_tool_scope;
|
||||
use crate::api::chat::chat_scope;
|
||||
use crate::biz::actix_ws::server::RealtimeServerActor;
|
||||
use crate::biz::collab::access_control::{
|
||||
CollabMiddlewareAccessControl, CollabStorageAccessControlImpl,
|
||||
};
|
||||
|
|
@ -31,6 +30,7 @@ use actix_web::cookie::Key;
|
|||
use actix_web::{dev::Server, web, web::Data, App, HttpServer};
|
||||
use anyhow::{Context, Error};
|
||||
use appflowy_ai_client::client::AppFlowyAIClient;
|
||||
use appflowy_collaborate::actix_ws::server::RealtimeServerActor;
|
||||
use appflowy_collaborate::collab::access_control::{
|
||||
CollabAccessControlImpl, RealtimeCollabAccessControlImpl,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
pub mod actix_ws;
|
||||
pub mod chat;
|
||||
pub mod collab;
|
||||
pub mod pg_listener;
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
use actix::{Actor, Context, Handler};
|
||||
use appflowy_cloud::biz::actix_ws::client::rt_client::{
|
||||
use appflowy_collaborate::actix_ws::client::rt_client::{
|
||||
HandlerResult, RealtimeClient, RealtimeServer,
|
||||
};
|
||||
use appflowy_cloud::biz::actix_ws::entities::{ClientMessage, Connect, Disconnect};
|
||||
use appflowy_collaborate::actix_ws::entities::{ClientMessage, Connect, Disconnect};
|
||||
use collab_rt_entity::user::RealtimeUser;
|
||||
use collab_rt_entity::RealtimeMessage;
|
||||
use semver::Version;
|
||||
|
|
|
|||
Loading…
Reference in New Issue