diff --git a/frontend/rust-lib/flowy-user/src/services/authenticate_user.rs b/frontend/rust-lib/flowy-user/src/services/authenticate_user.rs index a2aad80b8b..5a56cd439d 100644 --- a/frontend/rust-lib/flowy-user/src/services/authenticate_user.rs +++ b/frontend/rust-lib/flowy-user/src/services/authenticate_user.rs @@ -7,6 +7,7 @@ use collab_integrate::CollabKVDB; use flowy_error::{internal_error, ErrorCode, FlowyError, FlowyResult}; use flowy_sqlite::kv::StorePreferences; use flowy_sqlite::DBConnection; +use flowy_user_pub::entities::UserWorkspace; use flowy_user_pub::session::Session; use std::sync::{Arc, Weak}; use tracing::{debug, error, info}; @@ -104,6 +105,12 @@ impl AuthenticateUser { } } + pub fn set_user_workspace(&self, user_workspace: UserWorkspace) -> FlowyResult<()> { + let mut session = self.get_session()?; + session.user_workspace = user_workspace; + self.set_session(Some(session)) + } + pub fn get_session(&self) -> FlowyResult { if let Some(session) = (self.session.read()).clone() { return Ok(session); diff --git a/frontend/rust-lib/flowy-user/src/user_manager/manager_user_workspace.rs b/frontend/rust-lib/flowy-user/src/user_manager/manager_user_workspace.rs index b40654b09a..f49cee3a87 100644 --- a/frontend/rust-lib/flowy-user/src/user_manager/manager_user_workspace.rs +++ b/frontend/rust-lib/flowy-user/src/user_manager/manager_user_workspace.rs @@ -134,23 +134,25 @@ impl UserManager { #[instrument(skip(self), err)] pub async fn open_workspace(&self, workspace_id: &str) -> FlowyResult<()> { let uid = self.user_id()?; - let _ = self + let user_workspace = self .cloud_services .get_user_service()? .open_workspace(workspace_id) - .await; + .await?; - if let Some(user_workspace) = self.get_user_workspace(uid, workspace_id) { - if let Err(err) = self - .user_status_callback - .read() - .await - .open_workspace(uid, &user_workspace) - .await - { - error!("Open workspace failed: {:?}", err); - } + self + .authenticate_user + .set_user_workspace(user_workspace.clone())?; + if let Err(err) = self + .user_status_callback + .read() + .await + .open_workspace(uid, &user_workspace) + .await + { + error!("Open workspace failed: {:?}", err); } + Ok(()) }