mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
chore: fix deserialize GridBlockMetaPad error
This commit is contained in:
@ -16,7 +16,7 @@ pub type GridBlockMetaDeltaBuilder = PlainTextDeltaBuilder;
|
||||
#[derive(Debug, Deserialize, Serialize, Clone)]
|
||||
pub struct GridBlockMetaPad {
|
||||
block_id: String,
|
||||
row_metas: Vec<Arc<RowMeta>>,
|
||||
rows: Vec<Arc<RowMeta>>,
|
||||
|
||||
#[serde(skip)]
|
||||
pub(crate) delta: GridBlockMetaDelta,
|
||||
@ -32,11 +32,7 @@ impl GridBlockMetaPad {
|
||||
})?;
|
||||
let block_id = meta_data.block_id;
|
||||
let rows = meta_data.rows.into_iter().map(Arc::new).collect::<Vec<Arc<RowMeta>>>();
|
||||
Ok(Self {
|
||||
block_id,
|
||||
row_metas: rows,
|
||||
delta,
|
||||
})
|
||||
Ok(Self { block_id, rows, delta })
|
||||
}
|
||||
|
||||
pub fn from_revisions(_grid_id: &str, revisions: Vec<Revision>) -> CollaborateResult<Self> {
|
||||
@ -80,10 +76,10 @@ impl GridBlockMetaPad {
|
||||
T: AsRef<str> + ToOwned + ?Sized,
|
||||
{
|
||||
match row_ids {
|
||||
None => Ok(self.row_metas.to_vec()),
|
||||
None => Ok(self.rows.to_vec()),
|
||||
Some(row_ids) => {
|
||||
let row_map = self
|
||||
.row_metas
|
||||
.rows
|
||||
.iter()
|
||||
.map(|row| (row.id.as_str(), row.clone()))
|
||||
.collect::<HashMap<&str, Arc<RowMeta>>>();
|
||||
@ -122,7 +118,7 @@ impl GridBlockMetaPad {
|
||||
}
|
||||
|
||||
pub fn number_of_rows(&self) -> i32 {
|
||||
self.row_metas.len() as i32
|
||||
self.rows.len() as i32
|
||||
}
|
||||
|
||||
pub fn update_row(&mut self, changeset: RowMetaChangeset) -> CollaborateResult<Option<GridBlockMetaChange>> {
|
||||
@ -155,7 +151,7 @@ impl GridBlockMetaPad {
|
||||
F: for<'a> FnOnce(&'a mut Vec<Arc<RowMeta>>) -> CollaborateResult<Option<()>>,
|
||||
{
|
||||
let cloned_self = self.clone();
|
||||
match f(&mut self.row_metas)? {
|
||||
match f(&mut self.rows)? {
|
||||
None => Ok(None),
|
||||
Some(_) => {
|
||||
let old = cloned_self.to_json()?;
|
||||
@ -228,7 +224,7 @@ impl std::default::Default for GridBlockMetaPad {
|
||||
let delta = make_block_meta_delta(&block_meta_data);
|
||||
GridBlockMetaPad {
|
||||
block_id: block_meta_data.block_id,
|
||||
row_metas: block_meta_data.rows.into_iter().map(Arc::new).collect::<Vec<_>>(),
|
||||
rows: block_meta_data.rows.into_iter().map(Arc::new).collect::<Vec<_>>(),
|
||||
delta,
|
||||
}
|
||||
}
|
||||
@ -254,7 +250,7 @@ mod tests {
|
||||
let change = pad.add_row_meta(row, None).unwrap().unwrap();
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":29},{"insert":"{\"id\":\"1\",\"block_id\":\"1\",\"cell_by_field_id\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
r#"[{"retain":24},{"insert":"{\"id\":\"1\",\"block_id\":\"1\",\"cells\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
);
|
||||
}
|
||||
|
||||
@ -268,24 +264,24 @@ mod tests {
|
||||
let change = pad.add_row_meta(row_1.clone(), None).unwrap().unwrap();
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":29},{"insert":"{\"id\":\"1\",\"block_id\":\"1\",\"cell_by_field_id\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
r#"[{"retain":24},{"insert":"{\"id\":\"1\",\"block_id\":\"1\",\"cells\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
);
|
||||
|
||||
let change = pad.add_row_meta(row_2.clone(), None).unwrap().unwrap();
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":106},{"insert":",{\"id\":\"2\",\"block_id\":\"1\",\"cell_by_field_id\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
r#"[{"retain":90},{"insert":",{\"id\":\"2\",\"block_id\":\"1\",\"cells\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
);
|
||||
|
||||
let change = pad.add_row_meta(row_3.clone(), Some("2".to_string())).unwrap().unwrap();
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":114},{"insert":"3\",\"block_id\":\"1\",\"cell_by_field_id\":{},\"height\":0,\"visibility\":false},{\"id\":\""},{"retain":72}]"#
|
||||
r#"[{"retain":157},{"insert":",{\"id\":\"3\",\"block_id\":\"1\",\"cells\":{},\"height\":0,\"visibility\":false}"},{"retain":2}]"#
|
||||
);
|
||||
|
||||
assert_eq!(*pad.row_metas[0], row_1);
|
||||
assert_eq!(*pad.row_metas[1], row_3);
|
||||
assert_eq!(*pad.row_metas[2], row_2);
|
||||
assert_eq!(*pad.rows[0], row_1);
|
||||
assert_eq!(*pad.rows[1], row_2);
|
||||
assert_eq!(*pad.rows[2], row_3);
|
||||
}
|
||||
|
||||
fn test_row_meta(id: &str, pad: &GridBlockMetaPad) -> RowMeta {
|
||||
@ -309,9 +305,9 @@ mod tests {
|
||||
let _ = pad.add_row_meta(row_2.clone(), None).unwrap().unwrap();
|
||||
let _ = pad.add_row_meta(row_3.clone(), Some("1".to_string())).unwrap().unwrap();
|
||||
|
||||
assert_eq!(*pad.row_metas[0], row_3);
|
||||
assert_eq!(*pad.row_metas[1], row_1);
|
||||
assert_eq!(*pad.row_metas[2], row_2);
|
||||
assert_eq!(*pad.rows[0], row_3);
|
||||
assert_eq!(*pad.rows[1], row_1);
|
||||
assert_eq!(*pad.rows[2], row_2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -325,9 +321,9 @@ mod tests {
|
||||
let _ = pad.add_row_meta(row_2.clone(), None).unwrap().unwrap();
|
||||
let _ = pad.add_row_meta(row_3.clone(), Some("".to_string())).unwrap().unwrap();
|
||||
|
||||
assert_eq!(*pad.row_metas[0], row_3);
|
||||
assert_eq!(*pad.row_metas[1], row_1);
|
||||
assert_eq!(*pad.row_metas[2], row_2);
|
||||
assert_eq!(*pad.rows[0], row_3);
|
||||
assert_eq!(*pad.rows[1], row_1);
|
||||
assert_eq!(*pad.rows[2], row_2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@ -346,7 +342,7 @@ mod tests {
|
||||
let change = pad.delete_rows(vec![Cow::Borrowed(&row.id)]).unwrap().unwrap();
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":29},{"delete":77},{"retain":2}]"#
|
||||
r#"[{"retain":24},{"delete":66},{"retain":2}]"#
|
||||
);
|
||||
|
||||
assert_eq!(pad.delta_str(), pre_delta_str);
|
||||
@ -375,18 +371,17 @@ mod tests {
|
||||
|
||||
assert_eq!(
|
||||
change.delta.to_delta_str(),
|
||||
r#"[{"retain":85},{"insert":"10"},{"retain":15},{"insert":"tru"},{"delete":4},{"retain":4}]"#
|
||||
r#"[{"retain":69},{"insert":"10"},{"retain":15},{"insert":"tru"},{"delete":4},{"retain":4}]"#
|
||||
);
|
||||
|
||||
assert_eq!(
|
||||
pad.to_json().unwrap(),
|
||||
r#"{"block_id":"1","row_metas":[{"id":"1","block_id":"1","cell_by_field_id":{},"height":100,"visibility":true}]}"#
|
||||
r#"{"block_id":"1","rows":[{"id":"1","block_id":"1","cells":{},"height":100,"visibility":true}]}"#
|
||||
);
|
||||
}
|
||||
|
||||
fn test_pad() -> GridBlockMetaPad {
|
||||
let delta =
|
||||
GridBlockMetaDelta::from_delta_str(r#"[{"insert":"{\"block_id\":\"1\",\"row_metas\":[]}"}]"#).unwrap();
|
||||
let delta = GridBlockMetaDelta::from_delta_str(r#"[{"insert":"{\"block_id\":\"1\",\"rows\":[]}"}]"#).unwrap();
|
||||
GridBlockMetaPad::from_delta(delta).unwrap()
|
||||
}
|
||||
}
|
||||
|
@ -13,9 +13,9 @@ impl GridBuilder {
|
||||
}
|
||||
|
||||
pub fn add_empty_row(mut self) -> Self {
|
||||
let row = RowMeta::new(&self.build_context.block_metas.block_id);
|
||||
let row = RowMeta::new(&self.build_context.block_meta.block_id);
|
||||
self.build_context.block_meta_data.rows.push(row);
|
||||
self.build_context.block_metas.row_count += 1;
|
||||
self.build_context.block_meta.row_count += 1;
|
||||
self
|
||||
}
|
||||
|
||||
@ -57,7 +57,7 @@ mod tests {
|
||||
let grid_meta = GridMeta {
|
||||
grid_id,
|
||||
fields: build_context.field_metas,
|
||||
blocks: vec![build_context.block_metas],
|
||||
blocks: vec![build_context.block_meta],
|
||||
};
|
||||
|
||||
let grid_meta_delta = make_grid_delta(&grid_meta);
|
||||
|
Reference in New Issue
Block a user