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

This commit is contained in:
appflowy 2021-11-11 14:11:45 +08:00
parent 0e94092df1
commit 45bb157aa7
2 changed files with 12 additions and 1 deletions

View File

@ -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 &params.view_ids {
let _ = controller.close_view(view_id.into()).await;
let _ = controller.delete_view(view_id.into()).await;
}
let trash = controller

View File

@ -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(&params.doc_id, &*self.database.db_connection()?)?.into();