event_handler.rs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. use crate::entities::{ExportData, ExportParams, ExportPayload};
  2. use crate::TextBlockManager;
  3. use flowy_error::FlowyError;
  4. use flowy_sync::entities::text_block::{TextBlockDelta, TextBlockId};
  5. use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
  6. use std::convert::TryInto;
  7. use std::sync::Arc;
  8. pub(crate) async fn get_block_data_handler(
  9. data: Data<TextBlockId>,
  10. manager: AppData<Arc<TextBlockManager>>,
  11. ) -> DataResult<TextBlockDelta, FlowyError> {
  12. let block_id: TextBlockId = data.into_inner();
  13. let editor = manager.open_block(&block_id).await?;
  14. let delta_str = editor.delta_str().await?;
  15. data_result(TextBlockDelta {
  16. block_id: block_id.into(),
  17. delta_str,
  18. })
  19. }
  20. pub(crate) async fn apply_delta_handler(
  21. data: Data<TextBlockDelta>,
  22. manager: AppData<Arc<TextBlockManager>>,
  23. ) -> DataResult<TextBlockDelta, FlowyError> {
  24. let block_delta = manager.receive_local_delta(data.into_inner()).await?;
  25. data_result(block_delta)
  26. }
  27. #[tracing::instrument(level = "debug", skip(data, manager), err)]
  28. pub(crate) async fn export_handler(
  29. data: Data<ExportPayload>,
  30. manager: AppData<Arc<TextBlockManager>>,
  31. ) -> DataResult<ExportData, FlowyError> {
  32. let params: ExportParams = data.into_inner().try_into()?;
  33. let editor = manager.open_block(&params.view_id).await?;
  34. let delta_json = editor.delta_str().await?;
  35. data_result(ExportData {
  36. data: delta_json,
  37. export_type: params.export_type,
  38. })
  39. }