event_handler.rs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. use crate::manager::GridManager;
  2. use flowy_error::FlowyError;
  3. use flowy_grid_data_model::entities::{
  4. Cell, Field, Grid, GridId, QueryFieldPayload, QueryRowPayload, RepeatedField, RepeatedRow,
  5. };
  6. use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
  7. use std::sync::Arc;
  8. #[tracing::instrument(level = "debug", skip(data, manager), err)]
  9. pub(crate) async fn get_grid_data_handler(
  10. data: Data<GridId>,
  11. manager: AppData<Arc<GridManager>>,
  12. ) -> DataResult<Grid, FlowyError> {
  13. let grid_id: GridId = data.into_inner();
  14. let editor = manager.open_grid(grid_id).await?;
  15. let grid = editor.grid_data().await?;
  16. data_result(grid)
  17. }
  18. #[tracing::instrument(level = "debug", skip(data, manager), err)]
  19. pub(crate) async fn get_rows_handler(
  20. data: Data<QueryRowPayload>,
  21. manager: AppData<Arc<GridManager>>,
  22. ) -> DataResult<RepeatedRow, FlowyError> {
  23. let payload: QueryRowPayload = data.into_inner();
  24. let editor = manager.get_grid_editor(&payload.grid_id)?;
  25. let repeated_row: RepeatedRow = editor.get_rows(Some(payload.row_orders)).await?.into();
  26. data_result(repeated_row)
  27. }
  28. #[tracing::instrument(level = "debug", skip(data, manager), err)]
  29. pub(crate) async fn get_fields_handler(
  30. data: Data<QueryFieldPayload>,
  31. manager: AppData<Arc<GridManager>>,
  32. ) -> DataResult<RepeatedField, FlowyError> {
  33. let payload: QueryFieldPayload = data.into_inner();
  34. let editor = manager.get_grid_editor(&payload.grid_id)?;
  35. let field_metas = editor.get_field_metas(Some(payload.field_orders)).await?;
  36. let repeated_field: RepeatedField = field_metas.into_iter().map(Field::from).collect::<Vec<_>>().into();
  37. data_result(repeated_field)
  38. }
  39. #[tracing::instrument(level = "debug", 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_row().await?;
  47. Ok(())
  48. }
  49. #[tracing::instrument(level = "debug", skip_all, err)]
  50. pub(crate) async fn update_cell_handler(
  51. data: Data<Cell>,
  52. _manager: AppData<Arc<GridManager>>,
  53. ) -> Result<(), FlowyError> {
  54. let _cell: Cell = data.into_inner();
  55. // let editor = manager.get_grid_editor(id.as_ref())?;
  56. // let _ = editor.create_empty_row().await?;
  57. Ok(())
  58. }