|
@@ -7,6 +7,7 @@ use flowy_folder::{
|
|
event_map::{FolderCouldServiceV1, WorkspaceDatabase, WorkspaceUser},
|
|
event_map::{FolderCouldServiceV1, WorkspaceDatabase, WorkspaceUser},
|
|
manager::FolderManager,
|
|
manager::FolderManager,
|
|
};
|
|
};
|
|
|
|
+use flowy_grid::entities::GridLayout;
|
|
use flowy_grid::manager::{make_grid_view_data, GridManager};
|
|
use flowy_grid::manager::{make_grid_view_data, GridManager};
|
|
use flowy_grid::util::{make_default_board, make_default_grid};
|
|
use flowy_grid::util::{make_default_board, make_default_grid};
|
|
use flowy_grid_data_model::revision::BuildGridContext;
|
|
use flowy_grid_data_model::revision::BuildGridContext;
|
|
@@ -142,7 +143,15 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
|
|
FutureResult::new(async move { manager.init() })
|
|
FutureResult::new(async move { manager.init() })
|
|
}
|
|
}
|
|
|
|
|
|
- fn create_container(&self, user_id: &str, view_id: &str, delta_data: Bytes) -> FutureResult<(), FlowyError> {
|
|
|
|
|
|
+ fn create_container(
|
|
|
|
+ &self,
|
|
|
|
+ user_id: &str,
|
|
|
|
+ view_id: &str,
|
|
|
|
+ layout: ViewLayoutTypePB,
|
|
|
|
+ delta_data: Bytes,
|
|
|
|
+ ) -> FutureResult<(), FlowyError> {
|
|
|
|
+ // Only accept Document type
|
|
|
|
+ debug_assert_eq!(layout, ViewLayoutTypePB::Document);
|
|
let repeated_revision: RepeatedRevision = Revision::initial_revision(user_id, view_id, delta_data).into();
|
|
let repeated_revision: RepeatedRevision = Revision::initial_revision(user_id, view_id, delta_data).into();
|
|
let view_id = view_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let manager = self.0.clone();
|
|
let manager = self.0.clone();
|
|
@@ -196,7 +205,9 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
|
|
_user_id: &str,
|
|
_user_id: &str,
|
|
_view_id: &str,
|
|
_view_id: &str,
|
|
data: Vec<u8>,
|
|
data: Vec<u8>,
|
|
|
|
+ layout: ViewLayoutTypePB,
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
|
|
+ debug_assert_eq!(layout, ViewLayoutTypePB::Document);
|
|
FutureResult::new(async move { Ok(Bytes::from(data)) })
|
|
FutureResult::new(async move { Ok(Bytes::from(data)) })
|
|
}
|
|
}
|
|
|
|
|
|
@@ -211,7 +222,13 @@ impl ViewDataProcessor for GridViewDataProcessor {
|
|
FutureResult::new(async { Ok(()) })
|
|
FutureResult::new(async { Ok(()) })
|
|
}
|
|
}
|
|
|
|
|
|
- fn create_container(&self, user_id: &str, view_id: &str, delta_data: Bytes) -> FutureResult<(), FlowyError> {
|
|
|
|
|
|
+ fn create_container(
|
|
|
|
+ &self,
|
|
|
|
+ user_id: &str,
|
|
|
|
+ view_id: &str,
|
|
|
|
+ _layout: ViewLayoutTypePB,
|
|
|
|
+ delta_data: Bytes,
|
|
|
|
+ ) -> FutureResult<(), FlowyError> {
|
|
let repeated_revision: RepeatedRevision = Revision::initial_revision(user_id, view_id, delta_data).into();
|
|
let repeated_revision: RepeatedRevision = Revision::initial_revision(user_id, view_id, delta_data).into();
|
|
let view_id = view_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let grid_manager = self.0.clone();
|
|
let grid_manager = self.0.clone();
|
|
@@ -246,19 +263,22 @@ impl ViewDataProcessor for GridViewDataProcessor {
|
|
view_id: &str,
|
|
view_id: &str,
|
|
layout: ViewLayoutTypePB,
|
|
layout: ViewLayoutTypePB,
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
- let build_context = match layout {
|
|
|
|
- ViewLayoutTypePB::Grid => make_default_grid(),
|
|
|
|
- ViewLayoutTypePB::Board => make_default_board(),
|
|
|
|
|
|
+ let (build_context, layout) = match layout {
|
|
|
|
+ ViewLayoutTypePB::Grid => (make_default_grid(), GridLayout::Table),
|
|
|
|
+ ViewLayoutTypePB::Board => (make_default_board(), GridLayout::Board),
|
|
ViewLayoutTypePB::Document => {
|
|
ViewLayoutTypePB::Document => {
|
|
return FutureResult::new(async move {
|
|
return FutureResult::new(async move {
|
|
Err(FlowyError::internal().context(format!("Can't handle {:?} layout type", layout)))
|
|
Err(FlowyError::internal().context(format!("Can't handle {:?} layout type", layout)))
|
|
});
|
|
});
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
+
|
|
let user_id = user_id.to_string();
|
|
let user_id = user_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let grid_manager = self.0.clone();
|
|
let grid_manager = self.0.clone();
|
|
- FutureResult::new(async move { make_grid_view_data(&user_id, &view_id, grid_manager, build_context).await })
|
|
|
|
|
|
+ FutureResult::new(
|
|
|
|
+ async move { make_grid_view_data(&user_id, &view_id, layout, grid_manager, build_context).await },
|
|
|
|
+ )
|
|
}
|
|
}
|
|
|
|
|
|
fn create_view_from_delta_data(
|
|
fn create_view_from_delta_data(
|
|
@@ -266,15 +286,26 @@ impl ViewDataProcessor for GridViewDataProcessor {
|
|
user_id: &str,
|
|
user_id: &str,
|
|
view_id: &str,
|
|
view_id: &str,
|
|
data: Vec<u8>,
|
|
data: Vec<u8>,
|
|
|
|
+ layout: ViewLayoutTypePB,
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
) -> FutureResult<Bytes, FlowyError> {
|
|
let user_id = user_id.to_string();
|
|
let user_id = user_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let view_id = view_id.to_string();
|
|
let grid_manager = self.0.clone();
|
|
let grid_manager = self.0.clone();
|
|
|
|
|
|
|
|
+ let layout = match layout {
|
|
|
|
+ ViewLayoutTypePB::Grid => GridLayout::Table,
|
|
|
|
+ ViewLayoutTypePB::Board => GridLayout::Board,
|
|
|
|
+ ViewLayoutTypePB::Document => {
|
|
|
|
+ return FutureResult::new(async move {
|
|
|
|
+ Err(FlowyError::internal().context(format!("Can't handle {:?} layout type", layout)))
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
FutureResult::new(async move {
|
|
FutureResult::new(async move {
|
|
let bytes = Bytes::from(data);
|
|
let bytes = Bytes::from(data);
|
|
let build_context = BuildGridContext::try_from(bytes)?;
|
|
let build_context = BuildGridContext::try_from(bytes)?;
|
|
- make_grid_view_data(&user_id, &view_id, grid_manager, build_context).await
|
|
|
|
|
|
+ make_grid_view_data(&user_id, &view_id, layout, grid_manager, build_context).await
|
|
})
|
|
})
|
|
}
|
|
}
|
|
|
|
|