Browse Source

[rust]: remove the latest view marker after deleting the view

appflowy 3 years ago
parent
commit
45bb157aa7

+ 1 - 1
rust-lib/flowy-workspace/src/handlers/view_handler.rs

@@ -67,7 +67,7 @@ pub(crate) async fn delete_view_handler(
 ) -> Result<(), WorkspaceError> {
 ) -> Result<(), WorkspaceError> {
     let params: ViewIdentifiers = data.into_inner().try_into()?;
     let params: ViewIdentifiers = data.into_inner().try_into()?;
     for view_id in &params.view_ids {
     for view_id in &params.view_ids {
-        let _ = controller.close_view(view_id.into()).await;
+        let _ = controller.delete_view(view_id.into()).await;
     }
     }
 
 
     let trash = controller
     let trash = controller

+ 11 - 0
rust-lib/flowy-workspace/src/services/view_controller.rs

@@ -124,6 +124,17 @@ impl ViewController {
         Ok(())
         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)]
     #[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> {
     pub(crate) async fn duplicate_view(&self, params: DocIdentifier) -> Result<(), WorkspaceError> {
         let view: View = ViewTableSql::read_view(&params.doc_id, &*self.database.db_connection()?)?.into();
         let view: View = ViewTableSql::read_view(&params.doc_id, &*self.database.db_connection()?)?.into();