12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- use flowy_document2::entities::*;
- use flowy_test::document_event::OpenDocumentData;
- use nanoid::nanoid;
- use std::collections::HashMap;
- pub fn gen_id() -> String {
- nanoid!(10)
- }
- pub struct ParseDocumentData {
- pub doc_id: String,
- pub page_id: String,
- pub blocks: HashMap<String, BlockPB>,
- pub children_map: HashMap<String, ChildrenPB>,
- pub first_block_id: String,
- }
- pub fn parse_document_data(document: OpenDocumentData) -> ParseDocumentData {
- let doc_id = document.id.clone();
- let data = document.data;
- let page_id = data.page_id;
- let blocks = data.blocks;
- let children_map = data.meta.children_map;
- let page_block = blocks.get(&page_id).unwrap();
- let children_id = page_block.children_id.clone();
- let children = children_map.get(&children_id).unwrap();
- let block_id = children.children.get(0).unwrap().to_string();
- ParseDocumentData {
- doc_id,
- page_id,
- blocks,
- children_map,
- first_block_id: block_id,
- }
- }
- pub fn gen_insert_block_action(document: OpenDocumentData) -> BlockActionPB {
- let parse_data = parse_document_data(document);
- let first_block_id = parse_data.first_block_id;
- let block = parse_data.blocks.get(&first_block_id).unwrap();
- let page_id = parse_data.page_id;
- let data = block.data.clone();
- let new_block_id = gen_id();
- let new_block = BlockPB {
- id: new_block_id,
- ty: block.ty.clone(),
- data,
- parent_id: page_id.clone(),
- children_id: gen_id(),
- };
- BlockActionPB {
- action: BlockActionTypePB::Insert,
- payload: BlockActionPayloadPB {
- block: new_block,
- prev_id: Some(first_block_id),
- parent_id: Some(page_id),
- },
- }
- }
|