mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: delete field
This commit is contained in:
@ -1,14 +1,7 @@
|
||||
use crate::manager::GridManager;
|
||||
use crate::services::field::type_option_data_from_str;
|
||||
use flowy_error::FlowyError;
|
||||
use flowy_grid_data_model::entities::{
|
||||
CellMetaChangeset, CreateEditFieldContextParams, CreateFieldPayload, CreateRowPayload, EditFieldContext, Field,
|
||||
FieldChangeset, Grid, GridId, QueryFieldPayload, QueryGridBlocksPayload, QueryRowPayload, RepeatedField,
|
||||
RepeatedGridBlock, Row,
|
||||
};
|
||||
use flowy_grid_data_model::parser::{
|
||||
CreateFieldParams, CreateRowParams, QueryFieldParams, QueryGridBlocksParams, QueryRowParams,
|
||||
};
|
||||
use flowy_grid_data_model::entities::*;
|
||||
use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
|
||||
use std::sync::Arc;
|
||||
|
||||
@ -53,10 +46,10 @@ pub(crate) async fn get_fields_handler(
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
||||
pub(crate) async fn update_field_handler(
|
||||
data: Data<FieldChangeset>,
|
||||
data: Data<FieldChangesetPayload>,
|
||||
manager: AppData<Arc<GridManager>>,
|
||||
) -> Result<(), FlowyError> {
|
||||
let changeset: FieldChangeset = data.into_inner();
|
||||
let changeset: FieldChangesetParams = data.into_inner().try_into()?;
|
||||
let editor = manager.get_grid_editor(&changeset.grid_id)?;
|
||||
let _ = editor.update_field(changeset).await?;
|
||||
Ok(())
|
||||
@ -73,6 +66,17 @@ pub(crate) async fn create_field_handler(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
||||
pub(crate) async fn delete_field_handler(
|
||||
data: Data<FieldOrder>,
|
||||
manager: AppData<Arc<GridManager>>,
|
||||
) -> Result<(), FlowyError> {
|
||||
let field_order: FieldOrder = data.into_inner();
|
||||
let editor = manager.get_grid_editor(¶ms.grid_id)?;
|
||||
let _ = editor.delete_field(&field_order.field_id).await?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
||||
pub(crate) async fn create_edit_field_context_handler(
|
||||
data: Data<CreateEditFieldContextParams>,
|
||||
|
@ -13,6 +13,7 @@ pub fn create(grid_manager: Arc<GridManager>) -> Module {
|
||||
.event(GridEvent::GetFields, get_fields_handler)
|
||||
.event(GridEvent::UpdateField, update_field_handler)
|
||||
.event(GridEvent::CreateField, create_field_handler)
|
||||
.event(GridEvent::DeleteField, create_field_handler)
|
||||
.event(GridEvent::CreateEditFieldContext, create_edit_field_context_handler)
|
||||
.event(GridEvent::CreateRow, create_row_handler)
|
||||
.event(GridEvent::GetRow, get_row_handler)
|
||||
@ -39,8 +40,11 @@ pub enum GridEvent {
|
||||
#[event(input = "CreateFieldPayload")]
|
||||
CreateField = 12,
|
||||
|
||||
#[event(input = "FieldOrder")]
|
||||
DeleteField = 13,
|
||||
|
||||
#[event(input = "CreateEditFieldContextParams", output = "EditFieldContext")]
|
||||
CreateEditFieldContext = 13,
|
||||
CreateEditFieldContext = 14,
|
||||
|
||||
#[event(input = "CreateRowPayload", output = "Row")]
|
||||
CreateRow = 21,
|
||||
|
@ -30,7 +30,8 @@ pub enum GridEvent {
|
||||
GetFields = 10,
|
||||
UpdateField = 11,
|
||||
CreateField = 12,
|
||||
CreateEditFieldContext = 13,
|
||||
DeleteField = 13,
|
||||
CreateEditFieldContext = 14,
|
||||
CreateRow = 21,
|
||||
GetRow = 22,
|
||||
UpdateCell = 30,
|
||||
@ -48,7 +49,8 @@ impl ::protobuf::ProtobufEnum for GridEvent {
|
||||
10 => ::std::option::Option::Some(GridEvent::GetFields),
|
||||
11 => ::std::option::Option::Some(GridEvent::UpdateField),
|
||||
12 => ::std::option::Option::Some(GridEvent::CreateField),
|
||||
13 => ::std::option::Option::Some(GridEvent::CreateEditFieldContext),
|
||||
13 => ::std::option::Option::Some(GridEvent::DeleteField),
|
||||
14 => ::std::option::Option::Some(GridEvent::CreateEditFieldContext),
|
||||
21 => ::std::option::Option::Some(GridEvent::CreateRow),
|
||||
22 => ::std::option::Option::Some(GridEvent::GetRow),
|
||||
30 => ::std::option::Option::Some(GridEvent::UpdateCell),
|
||||
@ -63,6 +65,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
|
||||
GridEvent::GetFields,
|
||||
GridEvent::UpdateField,
|
||||
GridEvent::CreateField,
|
||||
GridEvent::DeleteField,
|
||||
GridEvent::CreateEditFieldContext,
|
||||
GridEvent::CreateRow,
|
||||
GridEvent::GetRow,
|
||||
@ -95,11 +98,12 @@ impl ::protobuf::reflect::ProtobufValue for GridEvent {
|
||||
}
|
||||
|
||||
static file_descriptor_proto_data: &'static [u8] = b"\
|
||||
\n\x0fevent_map.proto*\xa7\x01\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
|
||||
\n\x0fevent_map.proto*\xb8\x01\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
|
||||
\0\x12\x11\n\rGetGridBlocks\x10\x01\x12\r\n\tGetFields\x10\n\x12\x0f\n\
|
||||
\x0bUpdateField\x10\x0b\x12\x0f\n\x0bCreateField\x10\x0c\x12\x1a\n\x16Cr\
|
||||
eateEditFieldContext\x10\r\x12\r\n\tCreateRow\x10\x15\x12\n\n\x06GetRow\
|
||||
\x10\x16\x12\x0e\n\nUpdateCell\x10\x1eb\x06proto3\
|
||||
\x0bUpdateField\x10\x0b\x12\x0f\n\x0bCreateField\x10\x0c\x12\x0f\n\x0bDe\
|
||||
leteField\x10\r\x12\x1a\n\x16CreateEditFieldContext\x10\x0e\x12\r\n\tCre\
|
||||
ateRow\x10\x15\x12\n\n\x06GetRow\x10\x16\x12\x0e\n\nUpdateCell\x10\x1eb\
|
||||
\x06proto3\
|
||||
";
|
||||
|
||||
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
|
||||
|
@ -6,7 +6,8 @@ enum GridEvent {
|
||||
GetFields = 10;
|
||||
UpdateField = 11;
|
||||
CreateField = 12;
|
||||
CreateEditFieldContext = 13;
|
||||
DeleteField = 13;
|
||||
CreateEditFieldContext = 14;
|
||||
CreateRow = 21;
|
||||
GetRow = 22;
|
||||
UpdateCell = 30;
|
||||
|
@ -4,9 +4,8 @@ use crate::services::block_meta_editor::GridBlockMetaEditorManager;
|
||||
use crate::services::field::{type_option_json_str_from_bytes, FieldBuilder};
|
||||
use crate::services::row::*;
|
||||
use bytes::Bytes;
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_error::{ErrorCode, FlowyError, FlowyResult};
|
||||
use flowy_grid_data_model::entities::*;
|
||||
use flowy_grid_data_model::parser::CreateFieldParams;
|
||||
use flowy_revision::{RevisionCloudService, RevisionCompactor, RevisionManager, RevisionObjectBuilder};
|
||||
use flowy_sync::client_grid::{GridChangeset, GridMetaPad};
|
||||
use flowy_sync::entities::revision::Revision;
|
||||
@ -87,8 +86,20 @@ impl ClientGridEditor {
|
||||
self.pad.read().await.contain_field(field_id)
|
||||
}
|
||||
|
||||
pub async fn update_field(&self, change: FieldChangeset) -> FlowyResult<()> {
|
||||
let _ = self.modify(|grid| Ok(grid.update_field(change)?)).await?;
|
||||
pub async fn update_field(&self, mut params: FieldChangesetParams) -> FlowyResult<()> {
|
||||
if let Some(type_option_data) = params.type_option_data {
|
||||
match self.pad.read().await.get_field(¶ms.field_id) {
|
||||
None => return Err(ErrorCode::FieldDoesNotExist.into()),
|
||||
Some(field_meta) => {
|
||||
// The type_option_data is serialized by protobuf. But the type_option_data should be
|
||||
// serialized by utf-8 encoding. So we must transform the data here.
|
||||
let type_option_json = type_option_json_str_from_bytes(type_option_data, &field_meta.field_type);
|
||||
params.type_option_data = Some(type_option_json.as_bytes().to_vec());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let _ = self.modify(|grid| Ok(grid.update_field(params)?)).await?;
|
||||
let _ = self.notify_did_update_fields().await?;
|
||||
Ok(())
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ async fn grid_update_field_with_empty_change() {
|
||||
frozen: None,
|
||||
visibility: None,
|
||||
width: None,
|
||||
type_options: None,
|
||||
type_option_data: None,
|
||||
};
|
||||
|
||||
let scripts = vec![
|
||||
@ -95,7 +95,7 @@ async fn grid_update_field() {
|
||||
frozen: Some(true),
|
||||
visibility: None,
|
||||
width: Some(1000),
|
||||
type_options: Some(single_select_type_options.clone().into()),
|
||||
type_option_data: Some(single_select_type_options.clone().into()),
|
||||
};
|
||||
|
||||
cloned_field.frozen = true;
|
||||
|
Reference in New Issue
Block a user