chore: refactor move field func

This commit is contained in:
appflowy
2022-04-28 16:54:04 +08:00
parent 296013dcbf
commit 66cf0ca544

View File

@ -6,6 +6,7 @@ use flowy_grid_data_model::entities::{
gen_grid_id, FieldChangesetParams, FieldMeta, FieldOrder, FieldType, GridBlockMeta, GridBlockMetaChangeset, gen_grid_id, FieldChangesetParams, FieldMeta, FieldOrder, FieldType, GridBlockMeta, GridBlockMetaChangeset,
GridMeta, GridMeta,
}; };
use lib_infra::util::move_vec_element;
use lib_ot::core::{OperationTransformable, PlainTextAttributes, PlainTextDelta, PlainTextDeltaBuilder}; use lib_ot::core::{OperationTransformable, PlainTextAttributes, PlainTextDelta, PlainTextDeltaBuilder};
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::Arc; use std::sync::Arc;
@ -208,20 +209,22 @@ impl GridMetaPad {
pub fn move_field( pub fn move_field(
&mut self, &mut self,
field_id: &str, field_id: &str,
_from_index: usize, from_index: usize,
to_index: usize, to_index: usize,
) -> CollaborateResult<Option<GridChangeset>> { ) -> CollaborateResult<Option<GridChangeset>> {
self.modify_grid( self.modify_grid(|grid_meta| {
|grid_meta| match grid_meta.fields.iter().position(|field| field.id == field_id) { match move_vec_element(
None => Ok(None), &mut grid_meta.fields,
Some(index) => { |field| field.id == field_id,
// debug_assert_eq!(index, from_index); from_index,
let field_meta = grid_meta.fields.remove(index); to_index,
grid_meta.fields.insert(to_index, field_meta);
Ok(Some(()))
}
},
) )
.map_err(internal_error)?
{
true => Ok(Some(())),
false => Ok(None),
}
})
} }
pub fn contain_field(&self, field_id: &str) -> bool { pub fn contain_field(&self, field_id: &str) -> bool {