From 5c96a2c5cb90c70ff11784648d2af0d477e67e14 Mon Sep 17 00:00:00 2001 From: "Nathan.fooo" <86001920+appflowy@users.noreply.github.com> Date: Mon, 8 Apr 2024 20:55:02 +0800 Subject: [PATCH] chore: fix open workspace (#5092) * chore: fix open workspace * chore: fix open workspace --- .../src/services/authenticate_user.rs | 7 +++++ .../user_manager/manager_user_workspace.rs | 26 ++++++++++--------- 2 files changed, 21 insertions(+), 12 deletions(-) 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(()) }