mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: add get type option data handler
This commit is contained in:
@ -128,6 +128,22 @@ pub(crate) async fn get_field_context_handler(
|
||||
data_result(edit_context)
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
||||
pub(crate) async fn get_field_type_option_data_handler(
|
||||
data: Data<GetEditFieldContextPayload>,
|
||||
manager: AppData<Arc<GridManager>>,
|
||||
) -> DataResult<FieldTypeOptionData, FlowyError> {
|
||||
let params = data.into_inner();
|
||||
let editor = manager.get_grid_editor(¶ms.grid_id)?;
|
||||
let field_meta = get_or_create_field_meta(params.field_id, ¶ms.field_type, editor).await?;
|
||||
let type_option_data = get_type_option_data(&field_meta, &field_meta.field_type).await?;
|
||||
|
||||
data_result(FieldTypeOptionData {
|
||||
field_id: field_meta.id.clone(),
|
||||
type_option_data,
|
||||
})
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(data, manager), err)]
|
||||
pub(crate) async fn move_item_handler(
|
||||
data: Data<MoveItemPayload>,
|
||||
@ -147,12 +163,7 @@ async fn make_field_edit_context(
|
||||
field_meta: Option<FieldMeta>,
|
||||
) -> FlowyResult<EditFieldContext> {
|
||||
let field_meta = field_meta.unwrap_or(get_or_create_field_meta(field_id, &field_type, editor).await?);
|
||||
let s = field_meta
|
||||
.get_type_option_str(None)
|
||||
.unwrap_or_else(|| default_type_option_builder_from_type(&field_type).entry().json_str());
|
||||
|
||||
let builder = type_option_builder_from_json_str(&s, &field_meta.field_type);
|
||||
let type_option_data = builder.entry().protobuf_bytes().to_vec();
|
||||
let type_option_data = get_type_option_data(&field_meta, &field_type).await?;
|
||||
let field: Field = field_meta.into();
|
||||
Ok(EditFieldContext {
|
||||
grid_id: grid_id.to_string(),
|
||||
@ -161,6 +172,16 @@ async fn make_field_edit_context(
|
||||
})
|
||||
}
|
||||
|
||||
async fn get_type_option_data(field_meta: &FieldMeta, field_type: &FieldType) -> FlowyResult<Vec<u8>> {
|
||||
let s = field_meta
|
||||
.get_type_option_str(&field_type)
|
||||
.unwrap_or_else(|| default_type_option_builder_from_type(&field_type).entry().json_str());
|
||||
let builder = type_option_builder_from_json_str(&s, &field_meta.field_type);
|
||||
let type_option_data = builder.entry().protobuf_bytes().to_vec();
|
||||
|
||||
Ok(type_option_data)
|
||||
}
|
||||
|
||||
async fn get_or_create_field_meta(
|
||||
field_id: Option<String>,
|
||||
field_type: &FieldType,
|
||||
@ -221,7 +242,7 @@ pub(crate) async fn create_row_handler(
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip_all, err)]
|
||||
// #[tracing::instrument(level = "debug", skip_all, err)]
|
||||
pub(crate) async fn get_cell_handler(
|
||||
data: Data<CellIdentifierPayload>,
|
||||
manager: AppData<Arc<GridManager>>,
|
||||
|
@ -19,6 +19,7 @@ pub fn create(grid_manager: Arc<GridManager>) -> Module {
|
||||
.event(GridEvent::DuplicateField, duplicate_field_handler)
|
||||
.event(GridEvent::GetEditFieldContext, get_field_context_handler)
|
||||
.event(GridEvent::MoveItem, move_item_handler)
|
||||
.event(GridEvent::GetFieldTypeOption, get_field_type_option_data_handler)
|
||||
// Row
|
||||
.event(GridEvent::CreateRow, create_row_handler)
|
||||
.event(GridEvent::GetRow, get_row_handler)
|
||||
@ -69,6 +70,9 @@ pub enum GridEvent {
|
||||
#[event(input = "MoveItemPayload")]
|
||||
MoveItem = 17,
|
||||
|
||||
#[event(input = "GetEditFieldContextPayload", output = "FieldTypeOptionData")]
|
||||
GetFieldTypeOption = 18,
|
||||
|
||||
#[event(input = "CreateSelectOptionPayload", output = "SelectOption")]
|
||||
NewSelectOption = 30,
|
||||
|
||||
|
@ -35,6 +35,7 @@ pub enum GridEvent {
|
||||
DuplicateField = 15,
|
||||
GetEditFieldContext = 16,
|
||||
MoveItem = 17,
|
||||
GetFieldTypeOption = 18,
|
||||
NewSelectOption = 30,
|
||||
GetSelectOptionContext = 31,
|
||||
UpdateSelectOption = 32,
|
||||
@ -64,6 +65,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
|
||||
15 => ::std::option::Option::Some(GridEvent::DuplicateField),
|
||||
16 => ::std::option::Option::Some(GridEvent::GetEditFieldContext),
|
||||
17 => ::std::option::Option::Some(GridEvent::MoveItem),
|
||||
18 => ::std::option::Option::Some(GridEvent::GetFieldTypeOption),
|
||||
30 => ::std::option::Option::Some(GridEvent::NewSelectOption),
|
||||
31 => ::std::option::Option::Some(GridEvent::GetSelectOptionContext),
|
||||
32 => ::std::option::Option::Some(GridEvent::UpdateSelectOption),
|
||||
@ -90,6 +92,7 @@ impl ::protobuf::ProtobufEnum for GridEvent {
|
||||
GridEvent::DuplicateField,
|
||||
GridEvent::GetEditFieldContext,
|
||||
GridEvent::MoveItem,
|
||||
GridEvent::GetFieldTypeOption,
|
||||
GridEvent::NewSelectOption,
|
||||
GridEvent::GetSelectOptionContext,
|
||||
GridEvent::UpdateSelectOption,
|
||||
@ -128,16 +131,17 @@ impl ::protobuf::reflect::ProtobufValue for GridEvent {
|
||||
}
|
||||
|
||||
static file_descriptor_proto_data: &'static [u8] = b"\
|
||||
\n\x0fevent_map.proto*\xfd\x02\n\tGridEvent\x12\x0f\n\x0bGetGridData\x10\
|
||||
\n\x0fevent_map.proto*\x95\x03\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\x0bInsertField\x10\x0c\x12\x0f\n\x0bDe\
|
||||
leteField\x10\r\x12\x11\n\rSwitchToField\x10\x0e\x12\x12\n\x0eDuplicateF\
|
||||
ield\x10\x0f\x12\x17\n\x13GetEditFieldContext\x10\x10\x12\x0c\n\x08MoveI\
|
||||
tem\x10\x11\x12\x13\n\x0fNewSelectOption\x10\x1e\x12\x1a\n\x16GetSelectO\
|
||||
ptionContext\x10\x1f\x12\x16\n\x12UpdateSelectOption\x10\x20\x12\r\n\tCr\
|
||||
eateRow\x102\x12\n\n\x06GetRow\x103\x12\r\n\tDeleteRow\x104\x12\x10\n\
|
||||
\x0cDuplicateRow\x105\x12\x0b\n\x07GetCell\x10F\x12\x0e\n\nUpdateCell\
|
||||
\x10G\x12\x1a\n\x16UpdateCellSelectOption\x10Hb\x06proto3\
|
||||
tem\x10\x11\x12\x16\n\x12GetFieldTypeOption\x10\x12\x12\x13\n\x0fNewSele\
|
||||
ctOption\x10\x1e\x12\x1a\n\x16GetSelectOptionContext\x10\x1f\x12\x16\n\
|
||||
\x12UpdateSelectOption\x10\x20\x12\r\n\tCreateRow\x102\x12\n\n\x06GetRow\
|
||||
\x103\x12\r\n\tDeleteRow\x104\x12\x10\n\x0cDuplicateRow\x105\x12\x0b\n\
|
||||
\x07GetCell\x10F\x12\x0e\n\nUpdateCell\x10G\x12\x1a\n\x16UpdateCellSelec\
|
||||
tOption\x10Hb\x06proto3\
|
||||
";
|
||||
|
||||
static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT;
|
||||
|
@ -11,6 +11,7 @@ enum GridEvent {
|
||||
DuplicateField = 15;
|
||||
GetEditFieldContext = 16;
|
||||
MoveItem = 17;
|
||||
GetFieldTypeOption = 18;
|
||||
NewSelectOption = 30;
|
||||
GetSelectOptionContext = 31;
|
||||
UpdateSelectOption = 32;
|
||||
|
@ -121,7 +121,6 @@ pub fn apply_cell_data_changeset<T: Into<CellDataChangeset>>(
|
||||
// Ok(s)
|
||||
// }
|
||||
|
||||
#[tracing::instrument(level = "trace", skip(field_meta, data), fields(content))]
|
||||
pub fn decode_cell_data(data: String, field_meta: &FieldMeta, field_type: &FieldType) -> Option<String> {
|
||||
let s = match field_type {
|
||||
FieldType::RichText => field_meta
|
||||
|
@ -36,7 +36,6 @@ pub fn make_cell_by_field_id(
|
||||
Some((field_id, cell))
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub fn make_cell(field_id: &str, field_meta: &FieldMeta, row_meta: &RowMeta) -> Option<Cell> {
|
||||
let cell_meta = row_meta.cells.get(field_id)?.clone();
|
||||
let content = decode_cell_data(cell_meta.data, field_meta, &field_meta.field_type)?;
|
||||
|
Reference in New Issue
Block a user