event_handler.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. use crate::entities::{
  2. DocumentSnapshotPB, EditParams, EditPayloadPB, ExportDataPB, ExportParams, ExportPayloadPB, OpenDocumentContextPB,
  3. };
  4. use crate::DocumentManager;
  5. use flowy_error::FlowyError;
  6. use lib_dispatch::prelude::{data_result, AFPluginData, AFPluginState, DataResult};
  7. use std::convert::TryInto;
  8. use std::sync::Arc;
  9. pub(crate) async fn get_document_handler(
  10. data: AFPluginData<OpenDocumentContextPB>,
  11. manager: AFPluginState<Arc<DocumentManager>>,
  12. ) -> DataResult<DocumentSnapshotPB, FlowyError> {
  13. let context: OpenDocumentContextPB = data.into_inner();
  14. let editor = manager.open_document_editor(&context.document_id).await?;
  15. let document_data = editor.export().await?;
  16. data_result(DocumentSnapshotPB {
  17. doc_id: context.document_id,
  18. snapshot: document_data,
  19. })
  20. }
  21. pub(crate) async fn apply_edit_handler(
  22. data: AFPluginData<EditPayloadPB>,
  23. manager: AFPluginState<Arc<DocumentManager>>,
  24. ) -> Result<(), FlowyError> {
  25. let params: EditParams = data.into_inner().try_into()?;
  26. let _ = manager.apply_edit(params).await?;
  27. Ok(())
  28. }
  29. #[tracing::instrument(level = "debug", skip(data, manager), err)]
  30. pub(crate) async fn export_handler(
  31. data: AFPluginData<ExportPayloadPB>,
  32. manager: AFPluginState<Arc<DocumentManager>>,
  33. ) -> DataResult<ExportDataPB, FlowyError> {
  34. let params: ExportParams = data.into_inner().try_into()?;
  35. let editor = manager.open_document_editor(&params.view_id).await?;
  36. let document_data = editor.export().await?;
  37. data_result(ExportDataPB {
  38. data: document_data,
  39. export_type: params.export_type,
  40. })
  41. }