use crate::entities::{DocumentSnapshotPB, EditParams, EditPayloadPB, ExportDataPB, ExportParams, ExportPayloadPB}; use crate::DocumentManager; use flowy_error::FlowyError; use flowy_sync::entities::document::DocumentIdPB; use lib_dispatch::prelude::{data_result, AppData, Data, DataResult}; use std::convert::TryInto; use std::sync::Arc; pub(crate) async fn get_document_handler( data: Data, manager: AppData>, ) -> DataResult { let document_id: DocumentIdPB = data.into_inner(); let editor = manager.open_document_editor(&document_id).await?; let operations_str = editor.export().await?; data_result(DocumentSnapshotPB { doc_id: document_id.into(), snapshot: operations_str, }) } pub(crate) async fn apply_edit_handler( data: Data, manager: AppData>, ) -> Result<(), FlowyError> { let params: EditParams = data.into_inner().try_into()?; let _ = manager.apply_edit(params).await?; Ok(()) } #[tracing::instrument(level = "debug", skip(data, manager), err)] pub(crate) async fn export_handler( data: Data, manager: AppData>, ) -> DataResult { let params: ExportParams = data.into_inner().try_into()?; let editor = manager.open_document_editor(¶ms.view_id).await?; let document_data = editor.export().await?; data_result(ExportDataPB { data: document_data, export_type: params.export_type, }) }