From 45bb157aa7d43c5532ad4797d21ddfc1ed31b0df Mon Sep 17 00:00:00 2001 From: appflowy Date: Thu, 11 Nov 2021 14:11:45 +0800 Subject: [PATCH] [rust]: remove the latest view marker after deleting the view --- rust-lib/flowy-workspace/src/handlers/view_handler.rs | 2 +- .../flowy-workspace/src/services/view_controller.rs | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/rust-lib/flowy-workspace/src/handlers/view_handler.rs b/rust-lib/flowy-workspace/src/handlers/view_handler.rs index 6e254c872f..71e89864c7 100644 --- a/rust-lib/flowy-workspace/src/handlers/view_handler.rs +++ b/rust-lib/flowy-workspace/src/handlers/view_handler.rs @@ -67,7 +67,7 @@ pub(crate) async fn delete_view_handler( ) -> Result<(), WorkspaceError> { let params: ViewIdentifiers = data.into_inner().try_into()?; for view_id in ¶ms.view_ids { - let _ = controller.close_view(view_id.into()).await; + let _ = controller.delete_view(view_id.into()).await; } let trash = controller diff --git a/rust-lib/flowy-workspace/src/services/view_controller.rs b/rust-lib/flowy-workspace/src/services/view_controller.rs index eef3be1a0e..e89786cb38 100644 --- a/rust-lib/flowy-workspace/src/services/view_controller.rs +++ b/rust-lib/flowy-workspace/src/services/view_controller.rs @@ -124,6 +124,17 @@ impl ViewController { Ok(()) } + #[tracing::instrument(level = "debug", skip(self,params), fields(doc_id = %params.doc_id), err)] + pub(crate) async fn delete_view(&self, params: DocIdentifier) -> Result<(), WorkspaceError> { + if let Some(view_id) = KV::get_str(LATEST_VIEW_ID) { + if view_id == params.doc_id { + KV::remove(LATEST_VIEW_ID); + } + } + let _ = self.document.close(params).await?; + Ok(()) + } + #[tracing::instrument(level = "debug", skip(self, params), fields(doc_id = %params.doc_id), err)] pub(crate) async fn duplicate_view(&self, params: DocIdentifier) -> Result<(), WorkspaceError> { let view: View = ViewTableSql::read_view(¶ms.doc_id, &*self.database.db_connection()?)?.into();