mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Feat: add appflowy editor in backend (#1320)
* chore: remove update attributes * chore: format code * chore: extension for transaction * refactor: add document editor trait * chore: add appflowy_document editor * chore: add document serde * chore: add new document editor * chore: add tests * chore: add more test * chore: add test Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
use crate::entities::view::ViewDataTypePB;
|
||||
use crate::entities::ViewLayoutTypePB;
|
||||
use crate::services::folder_editor::FolderRevisionCompactor;
|
||||
use crate::services::folder_editor::FolderRevisionCompress;
|
||||
use crate::{
|
||||
dart_notification::{send_dart_notification, FolderNotification},
|
||||
entities::workspace::RepeatedWorkspacePB,
|
||||
@ -16,7 +16,8 @@ use flowy_error::FlowyError;
|
||||
use flowy_folder_data_model::user_default;
|
||||
use flowy_revision::disk::SQLiteDocumentRevisionPersistence;
|
||||
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket, SQLiteRevisionSnapshotPersistence};
|
||||
use flowy_sync::client_document::default::{initial_document_str, initial_read_me};
|
||||
use flowy_sync::client_document::default::initial_read_me;
|
||||
|
||||
use flowy_sync::{client_folder::FolderPad, entities::ws_data::ServerRevisionWSData};
|
||||
use lazy_static::lazy_static;
|
||||
use lib_infra::future::FutureResult;
|
||||
@ -166,7 +167,7 @@ impl FolderManager {
|
||||
let object_id = folder_id.as_ref();
|
||||
let disk_cache = SQLiteDocumentRevisionPersistence::new(user_id, pool.clone());
|
||||
let rev_persistence = RevisionPersistence::new(user_id, object_id, disk_cache);
|
||||
let rev_compactor = FolderRevisionCompactor();
|
||||
let rev_compactor = FolderRevisionCompress();
|
||||
// let history_persistence = SQLiteRevisionHistoryPersistence::new(object_id, pool.clone());
|
||||
let snapshot_persistence = SQLiteRevisionSnapshotPersistence::new(object_id, pool);
|
||||
let rev_manager = RevisionManager::new(
|
||||
@ -215,16 +216,14 @@ impl DefaultFolderBuilder {
|
||||
set_current_workspace(&workspace_rev.id);
|
||||
for app in workspace_rev.apps.iter() {
|
||||
for (index, view) in app.belongings.iter().enumerate() {
|
||||
let view_data = if index == 0 {
|
||||
initial_read_me().json_str()
|
||||
} else {
|
||||
initial_document_str()
|
||||
};
|
||||
let _ = view_controller.set_latest_view(&view.id);
|
||||
let layout_type = ViewLayoutTypePB::from(view.layout.clone());
|
||||
let _ = view_controller
|
||||
.create_view(&view.id, ViewDataTypePB::Text, layout_type, Bytes::from(view_data))
|
||||
.await?;
|
||||
if index == 0 {
|
||||
let view_data = initial_read_me().json_str();
|
||||
let _ = view_controller.set_latest_view(&view.id);
|
||||
let layout_type = ViewLayoutTypePB::from(view.layout.clone());
|
||||
let _ = view_controller
|
||||
.create_view(&view.id, ViewDataTypePB::Text, layout_type, Bytes::from(view_data))
|
||||
.await?;
|
||||
}
|
||||
}
|
||||
}
|
||||
let folder = FolderPad::new(vec![workspace_rev.clone()], vec![])?;
|
||||
|
@ -112,16 +112,16 @@ impl RevisionObjectDeserializer for FolderRevisionSerde {
|
||||
}
|
||||
|
||||
impl RevisionObjectSerializer for FolderRevisionSerde {
|
||||
fn serialize_revisions(revisions: Vec<Revision>) -> FlowyResult<Bytes> {
|
||||
fn combine_revisions(revisions: Vec<Revision>) -> FlowyResult<Bytes> {
|
||||
let operations = make_operations_from_revisions::<EmptyAttributes>(revisions)?;
|
||||
Ok(operations.json_bytes())
|
||||
}
|
||||
}
|
||||
|
||||
pub struct FolderRevisionCompactor();
|
||||
impl RevisionCompress for FolderRevisionCompactor {
|
||||
fn serialize_revisions(&self, revisions: Vec<Revision>) -> FlowyResult<Bytes> {
|
||||
FolderRevisionSerde::serialize_revisions(revisions)
|
||||
pub struct FolderRevisionCompress();
|
||||
impl RevisionCompress for FolderRevisionCompress {
|
||||
fn combine_revisions(&self, revisions: Vec<Revision>) -> FlowyResult<Bytes> {
|
||||
FolderRevisionSerde::combine_revisions(revisions)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user