chore: open next page when current page get deleted

This commit is contained in:
appflowy
2022-09-22 13:08:48 +08:00
parent bdf4e60b48
commit 37f85cebde
25 changed files with 312 additions and 178 deletions

View File

@ -16,6 +16,7 @@ pub(crate) enum FolderNotification {
ViewUpdated = 31,
ViewDeleted = 32,
ViewRestored = 33,
ViewMoveToTrash = 34,
UserUnauthorized = 100,
TrashUpdated = 1000,
}

View File

@ -251,8 +251,6 @@ pub trait ViewDataProcessor {
fn create_container(&self, user_id: &str, view_id: &str, delta_data: Bytes) -> FutureResult<(), FlowyError>;
fn delete_container(&self, view_id: &str) -> FutureResult<(), FlowyError>;
fn close_container(&self, view_id: &str) -> FutureResult<(), FlowyError>;
fn get_delta_data(&self, view_id: &str) -> FutureResult<Bytes, FlowyError>;

View File

@ -125,7 +125,7 @@ impl ViewController {
}
#[tracing::instrument(level = "debug", skip(self, view_id), fields(view_id = %view_id.value), err)]
pub(crate) async fn read_view_info(&self, view_id: ViewIdPB) -> Result<ViewInfoPB, FlowyError> {
pub(crate) async fn read_view_pb(&self, view_id: ViewIdPB) -> Result<ViewInfoPB, FlowyError> {
let view_info = self
.persistence
.begin_transaction(|transaction| {
@ -179,14 +179,20 @@ impl ViewController {
}
#[tracing::instrument(level = "debug", skip(self,params), fields(doc_id = %params.value), err)]
pub(crate) async fn delete_view(&self, params: TextBlockIdPB) -> Result<(), FlowyError> {
if let Some(view_id) = KV::get_str(LATEST_VIEW_ID) {
if view_id == params.value {
pub(crate) async fn move_view_to_trash(&self, params: TextBlockIdPB) -> Result<(), FlowyError> {
let view_id = params.value;
if let Some(latest_view_id) = KV::get_str(LATEST_VIEW_ID) {
if latest_view_id == view_id {
let _ = KV::remove(LATEST_VIEW_ID);
}
}
let processor = self.get_data_processor_from_view_id(&params.value).await?;
let _ = processor.delete_container(&params.value).await?;
let view_id_pb = ViewIdPB::from(view_id.as_str());
send_dart_notification(&view_id, FolderNotification::ViewMoveToTrash)
.payload(view_id_pb)
.send();
let processor = self.get_data_processor_from_view_id(&view_id).await?;
let _ = processor.close_container(&view_id).await?;
Ok(())
}

View File

@ -40,7 +40,7 @@ pub(crate) async fn read_view_info_handler(
controller: AppData<Arc<ViewController>>,
) -> DataResult<ViewInfoPB, FlowyError> {
let view_id: ViewIdPB = data.into_inner();
let view_info = controller.read_view_info(view_id.clone()).await?;
let view_info = controller.read_view_pb(view_id.clone()).await?;
data_result(view_info)
}
@ -62,7 +62,7 @@ pub(crate) async fn delete_view_handler(
) -> Result<(), FlowyError> {
let params: RepeatedViewIdPB = data.into_inner();
for view_id in &params.items {
let _ = view_controller.delete_view(view_id.into()).await;
let _ = view_controller.move_view_to_trash(view_id.into()).await;
}
let trash = view_controller