event_handler.rs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use crate::manager::GridManager;
  2. use flowy_error::FlowyError;
  3. use flowy_grid_data_model::entities::{
  4. CreateGridPayload, Grid, GridId, QueryFieldPayload, QueryRowPayload, RepeatedField, RepeatedFieldOrder,
  5. RepeatedRow, RepeatedRowOrder,
  6. };
  7. use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
  8. use std::sync::Arc;
  9. #[tracing::instrument(skip(data, manager), err)]
  10. pub(crate) async fn open_grid_handler(
  11. data: Data<GridId>,
  12. manager: AppData<Arc<GridManager>>,
  13. ) -> DataResult<Grid, FlowyError> {
  14. let grid_id: GridId = data.into_inner();
  15. let editor = manager.open_grid(grid_id).await?;
  16. let grid = editor.grid_data().await;
  17. data_result(grid)
  18. }
  19. #[tracing::instrument(skip(data, manager), err)]
  20. pub(crate) async fn get_rows_handler(
  21. data: Data<QueryRowPayload>,
  22. manager: AppData<Arc<GridManager>>,
  23. ) -> DataResult<RepeatedRow, FlowyError> {
  24. let payload: QueryRowPayload = data.into_inner();
  25. let editor = manager.get_grid_editor(&payload.grid_id)?;
  26. let repeated_row = editor.get_rows(payload.row_orders).await?;
  27. data_result(repeated_row)
  28. }
  29. #[tracing::instrument(skip(data, manager), err)]
  30. pub(crate) async fn get_fields_handler(
  31. data: Data<QueryFieldPayload>,
  32. manager: AppData<Arc<GridManager>>,
  33. ) -> DataResult<RepeatedField, FlowyError> {
  34. let payload: QueryFieldPayload = data.into_inner();
  35. let editor = manager.get_grid_editor(&payload.grid_id)?;
  36. let repeated_field = editor.get_fields(payload.field_orders).await?;
  37. data_result(repeated_field)
  38. }
  39. #[tracing::instrument(skip(data, manager), err)]
  40. pub(crate) async fn create_row_handler(
  41. data: Data<GridId>,
  42. manager: AppData<Arc<GridManager>>,
  43. ) -> Result<(), FlowyError> {
  44. let id: GridId = data.into_inner();
  45. let editor = manager.get_grid_editor(id.as_ref())?;
  46. let _ = editor.create_empty_row().await?;
  47. Ok(())
  48. }