chore: duplicate and hide field

This commit is contained in:
appflowy
2022-03-27 11:14:21 +08:00
parent c7bba01fe5
commit 8b7eee46bb
23 changed files with 835 additions and 287 deletions

View File

@ -68,12 +68,23 @@ pub(crate) async fn create_field_handler(
#[tracing::instrument(level = "debug", skip(data, manager), err)]
pub(crate) async fn delete_field_handler(
data: Data<FieldOrder>,
data: Data<FieldIdentifierPayload>,
manager: AppData<Arc<GridManager>>,
) -> Result<(), FlowyError> {
let field_order: FieldOrder = data.into_inner();
let params: FieldIdentifierParams = data.into_inner().try_into()?;
let editor = manager.get_grid_editor(&params.grid_id)?;
let _ = editor.delete_field(&field_order.field_id).await?;
let _ = editor.delete_field(&params.field_id).await?;
Ok(())
}
#[tracing::instrument(level = "debug", skip(data, manager), err)]
pub(crate) async fn duplicate_field_handler(
data: Data<FieldIdentifierPayload>,
manager: AppData<Arc<GridManager>>,
) -> Result<(), FlowyError> {
let params: FieldIdentifierParams = data.into_inner().try_into()?;
let editor = manager.get_grid_editor(&params.grid_id)?;
let _ = editor.duplicate_field(&params.field_id).await?;
Ok(())
}

View File

@ -13,7 +13,8 @@ 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::DeleteField, delete_field_handler)
.event(GridEvent::DuplicateField, duplicate_field_handler)
.event(GridEvent::CreateEditFieldContext, create_edit_field_context_handler)
.event(GridEvent::CreateRow, create_row_handler)
.event(GridEvent::GetRow, get_row_handler)
@ -34,17 +35,20 @@ pub enum GridEvent {
#[event(input = "QueryFieldPayload", output = "RepeatedField")]
GetFields = 10,
#[event(input = "FieldChangeset")]
#[event(input = "FieldChangesetPayload")]
UpdateField = 11,
#[event(input = "CreateFieldPayload")]
CreateField = 12,
#[event(input = "FieldOrder")]
#[event(input = "FieldIdentifierPayload")]
DeleteField = 13,
#[event(input = "FieldIdentifierPayload")]
DuplicateField = 15,
#[event(input = "CreateEditFieldContextParams", output = "EditFieldContext")]
CreateEditFieldContext = 14,
CreateEditFieldContext = 16,
#[event(input = "CreateRowPayload", output = "Row")]
CreateRow = 21,

View File

@ -31,7 +31,8 @@ pub enum GridEvent {
UpdateField = 11,
CreateField = 12,
DeleteField = 13,
CreateEditFieldContext = 14,
DuplicateField = 15,
CreateEditFieldContext = 16,
CreateRow = 21,
GetRow = 22,
UpdateCell = 30,
@ -50,7 +51,8 @@ impl ::protobuf::ProtobufEnum for GridEvent {
11 => ::std::option::Option::Some(GridEvent::UpdateField),
12 => ::std::option::Option::Some(GridEvent::CreateField),
13 => ::std::option::Option::Some(GridEvent::DeleteField),
14 => ::std::option::Option::Some(GridEvent::CreateEditFieldContext),
15 => ::std::option::Option::Some(GridEvent::DuplicateField),
16 => ::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),
@ -66,6 +68,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
GridEvent::UpdateField,
GridEvent::CreateField,
GridEvent::DeleteField,
GridEvent::DuplicateField,
GridEvent::CreateEditFieldContext,
GridEvent::CreateRow,
GridEvent::GetRow,
@ -98,12 +101,12 @@ impl ::protobuf::reflect::ProtobufValue for GridEvent {
}
static file_descriptor_proto_data: &'static [u8] = b"\
\n\x0fevent_map.proto*\xb8\x01\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
\n\x0fevent_map.proto*\xcc\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\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\
leteField\x10\r\x12\x12\n\x0eDuplicateField\x10\x0f\x12\x1a\n\x16CreateE\
ditFieldContext\x10\x10\x12\r\n\tCreateRow\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;

View File

@ -7,7 +7,8 @@ enum GridEvent {
UpdateField = 11;
CreateField = 12;
DeleteField = 13;
CreateEditFieldContext = 14;
DuplicateField = 15;
CreateEditFieldContext = 16;
CreateRow = 21;
GetRow = 22;
UpdateCell = 30;

View File

@ -110,6 +110,12 @@ impl ClientGridEditor {
Ok(())
}
pub async fn duplicate_field(&self, field_id: &str) -> FlowyResult<()> {
let _ = self.modify(|grid| Ok(grid.duplicate_field(field_id)?)).await?;
let _ = self.notify_did_update_fields().await?;
Ok(())
}
pub async fn create_block(&self, grid_block: GridBlockMeta) -> FlowyResult<()> {
let _ = self.modify(|grid| Ok(grid.create_block(grid_block)?)).await?;
Ok(())
@ -254,8 +260,9 @@ impl ClientGridEditor {
}
pub async fn get_field_metas(&self, field_orders: Option<RepeatedFieldOrder>) -> FlowyResult<Vec<FieldMeta>> {
let field_meta = self.pad.read().await.get_field_metas(field_orders)?;
Ok(field_meta)
let mut field_metas = self.pad.read().await.get_field_metas(field_orders)?;
field_metas.retain(|field_meta| field_meta.visibility);
Ok(field_metas)
}
pub async fn get_block_meta_data_vec(