Skip to content

Commit fa2cfd7

Browse files
committed
chore: node transform path test
1 parent 9ff0975 commit fa2cfd7

File tree

26 files changed

+514
-226
lines changed

26 files changed

+514
-226
lines changed

frontend/app_flowy/lib/plugins/doc/application/doc_bloc.dart

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
9090
final result = await service.openDocument(docId: view.id);
9191
result.fold(
9292
(block) {
93-
document = _decodeJsonToDocument(block.deltaStr);
93+
document = _decodeJsonToDocument(block.snapshot);
9494
_subscription = document.changes.listen((event) {
9595
final delta = event.item2;
9696
final documentDelta = document.toDelta();
@@ -115,16 +115,12 @@ class DocumentBloc extends Bloc<DocumentEvent, DocumentState> {
115115
void _composeDelta(Delta composedDelta, Delta documentDelta) async {
116116
final json = jsonEncode(composedDelta.toJson());
117117
Log.debug("doc_id: $view.id - Send json: $json");
118-
final result = await service.composeDelta(docId: view.id, data: json);
119-
120-
result.fold((rustDoc) {
121-
// final json = utf8.decode(doc.data);
122-
final rustDelta = Delta.fromJson(jsonDecode(rustDoc.deltaStr));
123-
if (documentDelta != rustDelta) {
124-
Log.error("Receive : $rustDelta");
125-
Log.error("Expected : $documentDelta");
126-
}
127-
}, (r) => null);
118+
final result = await service.applyEdit(docId: view.id, data: json);
119+
120+
result.fold(
121+
(_) {},
122+
(r) => Log.error(r),
123+
);
128124
}
129125

130126
Document _decodeJsonToDocument(String data) {

frontend/app_flowy/lib/plugins/doc/application/doc_service.dart

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,28 @@ import 'package:flowy_sdk/dispatch/dispatch.dart';
44
import 'package:flowy_sdk/protobuf/flowy-folder/view.pb.dart';
55
import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart';
66
import 'package:flowy_sdk/protobuf/flowy-sync/text_block.pb.dart';
7+
import 'package:flowy_sdk/protobuf/flowy-text-block/entities.pb.dart';
78

89
class DocumentService {
9-
Future<Either<TextBlockDeltaPB, FlowyError>> openDocument({
10+
Future<Either<TextBlockPB, FlowyError>> openDocument({
1011
required String docId,
1112
}) async {
1213
await FolderEventSetLatestView(ViewIdPB(value: docId)).send();
1314

1415
final payload = TextBlockIdPB(value: docId);
15-
return TextBlockEventGetBlockData(payload).send();
16+
return TextBlockEventGetTextBlock(payload).send();
1617
}
1718

18-
Future<Either<TextBlockDeltaPB, FlowyError>> composeDelta({required String docId, required String data}) {
19-
final payload = TextBlockDeltaPB.create()
20-
..blockId = docId
21-
..deltaStr = data;
22-
return TextBlockEventApplyDelta(payload).send();
19+
Future<Either<Unit, FlowyError>> applyEdit({
20+
required String docId,
21+
required String data,
22+
String operations = "",
23+
}) {
24+
final payload = EditPayloadPB.create()
25+
..textBlockId = docId
26+
..operations = operations
27+
..delta = data;
28+
return TextBlockEventApplyEdit(payload).send();
2329
}
2430

2531
Future<Either<Unit, FlowyError>> closeDocument({required String docId}) {

frontend/rust-lib/flowy-net/src/http_server/document.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
};
55
use flowy_error::FlowyError;
66
use flowy_sync::entities::text_block::{CreateTextBlockParams, DocumentPB, ResetTextBlockParams, TextBlockIdPB};
7-
use flowy_text_block::BlockCloudService;
7+
use flowy_text_block::TextEditorCloudService;
88
use http_flowy::response::FlowyResponse;
99
use lazy_static::lazy_static;
1010
use lib_infra::future::FutureResult;
@@ -20,20 +20,20 @@ impl BlockHttpCloudService {
2020
}
2121
}
2222

23-
impl BlockCloudService for BlockHttpCloudService {
24-
fn create_block(&self, token: &str, params: CreateTextBlockParams) -> FutureResult<(), FlowyError> {
23+
impl TextEditorCloudService for BlockHttpCloudService {
24+
fn create_text_block(&self, token: &str, params: CreateTextBlockParams) -> FutureResult<(), FlowyError> {
2525
let token = token.to_owned();
2626
let url = self.config.doc_url();
2727
FutureResult::new(async move { create_document_request(&token, params, &url).await })
2828
}
2929

30-
fn read_block(&self, token: &str, params: TextBlockIdPB) -> FutureResult<Option<DocumentPB>, FlowyError> {
30+
fn read_text_block(&self, token: &str, params: TextBlockIdPB) -> FutureResult<Option<DocumentPB>, FlowyError> {
3131
let token = token.to_owned();
3232
let url = self.config.doc_url();
3333
FutureResult::new(async move { read_document_request(&token, params, &url).await })
3434
}
3535

36-
fn update_block(&self, token: &str, params: ResetTextBlockParams) -> FutureResult<(), FlowyError> {
36+
fn update_text_block(&self, token: &str, params: ResetTextBlockParams) -> FutureResult<(), FlowyError> {
3737
let token = token.to_owned();
3838
let url = self.config.doc_url();
3939
FutureResult::new(async move { reset_doc_request(&token, params, &url).await })

frontend/rust-lib/flowy-net/src/local_server/server.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ use flowy_folder::entities::{
261261
use flowy_folder_data_model::revision::{
262262
gen_app_id, gen_workspace_id, AppRevision, TrashRevision, ViewRevision, WorkspaceRevision,
263263
};
264-
use flowy_text_block::BlockCloudService;
264+
use flowy_text_block::TextEditorCloudService;
265265
use flowy_user::entities::{
266266
SignInParams, SignInResponse, SignUpParams, SignUpResponse, UpdateUserProfileParams, UserProfilePB,
267267
};
@@ -414,12 +414,12 @@ impl UserCloudService for LocalServer {
414414
}
415415
}
416416

417-
impl BlockCloudService for LocalServer {
418-
fn create_block(&self, _token: &str, _params: CreateTextBlockParams) -> FutureResult<(), FlowyError> {
417+
impl TextEditorCloudService for LocalServer {
418+
fn create_text_block(&self, _token: &str, _params: CreateTextBlockParams) -> FutureResult<(), FlowyError> {
419419
FutureResult::new(async { Ok(()) })
420420
}
421421

422-
fn read_block(&self, _token: &str, params: TextBlockIdPB) -> FutureResult<Option<DocumentPB>, FlowyError> {
422+
fn read_text_block(&self, _token: &str, params: TextBlockIdPB) -> FutureResult<Option<DocumentPB>, FlowyError> {
423423
let doc = DocumentPB {
424424
block_id: params.value,
425425
text: initial_quill_delta_string(),
@@ -429,7 +429,7 @@ impl BlockCloudService for LocalServer {
429429
FutureResult::new(async { Ok(Some(doc)) })
430430
}
431431

432-
fn update_block(&self, _token: &str, _params: ResetTextBlockParams) -> FutureResult<(), FlowyError> {
432+
fn update_text_block(&self, _token: &str, _params: ResetTextBlockParams) -> FutureResult<(), FlowyError> {
433433
FutureResult::new(async { Ok(()) })
434434
}
435435
}

frontend/rust-lib/flowy-sdk/src/deps_resolve/folder_deps.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use flowy_revision::{RevisionWebSocket, WSStateReceiver};
1818
use flowy_sync::client_document::default::initial_quill_delta_string;
1919
use flowy_sync::entities::revision::{RepeatedRevision, Revision};
2020
use flowy_sync::entities::ws_data::ClientRevisionWSData;
21-
use flowy_text_block::TextBlockManager;
21+
use flowy_text_block::TextEditorManager;
2222
use flowy_user::services::UserSession;
2323
use futures_core::future::BoxFuture;
2424
use lib_infra::future::{BoxResultFuture, FutureResult};
@@ -34,7 +34,7 @@ impl FolderDepsResolver {
3434
user_session: Arc<UserSession>,
3535
server_config: &ClientServerConfiguration,
3636
ws_conn: &Arc<FlowyWebSocketConnect>,
37-
text_block_manager: &Arc<TextBlockManager>,
37+
text_block_manager: &Arc<TextEditorManager>,
3838
grid_manager: &Arc<GridManager>,
3939
) -> Arc<FolderManager> {
4040
let user: Arc<dyn WorkspaceUser> = Arc::new(WorkspaceUserImpl(user_session.clone()));
@@ -63,7 +63,7 @@ impl FolderDepsResolver {
6363
}
6464

6565
fn make_view_data_processor(
66-
text_block_manager: Arc<TextBlockManager>,
66+
text_block_manager: Arc<TextEditorManager>,
6767
grid_manager: Arc<GridManager>,
6868
) -> ViewDataProcessorMap {
6969
let mut map: HashMap<ViewDataTypePB, Arc<dyn ViewDataProcessor + Send + Sync>> = HashMap::new();
@@ -135,7 +135,7 @@ impl WSMessageReceiver for FolderWSMessageReceiverImpl {
135135
}
136136
}
137137

138-
struct TextBlockViewDataProcessor(Arc<TextBlockManager>);
138+
struct TextBlockViewDataProcessor(Arc<TextEditorManager>);
139139
impl ViewDataProcessor for TextBlockViewDataProcessor {
140140
fn initialize(&self) -> FutureResult<(), FlowyError> {
141141
let manager = self.0.clone();
@@ -147,7 +147,7 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
147147
let view_id = view_id.to_string();
148148
let manager = self.0.clone();
149149
FutureResult::new(async move {
150-
let _ = manager.create_block(view_id, repeated_revision).await?;
150+
let _ = manager.create_text_block(view_id, repeated_revision).await?;
151151
Ok(())
152152
})
153153
}
@@ -156,7 +156,7 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
156156
let manager = self.0.clone();
157157
let view_id = view_id.to_string();
158158
FutureResult::new(async move {
159-
let _ = manager.delete_block(view_id)?;
159+
let _ = manager.close_text_editor(view_id)?;
160160
Ok(())
161161
})
162162
}
@@ -165,7 +165,7 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
165165
let manager = self.0.clone();
166166
let view_id = view_id.to_string();
167167
FutureResult::new(async move {
168-
let _ = manager.close_block(view_id)?;
168+
let _ = manager.close_text_editor(view_id)?;
169169
Ok(())
170170
})
171171
}
@@ -174,7 +174,7 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
174174
let view_id = view_id.to_string();
175175
let manager = self.0.clone();
176176
FutureResult::new(async move {
177-
let editor = manager.open_block(view_id).await?;
177+
let editor = manager.open_text_editor(view_id).await?;
178178
let delta_bytes = Bytes::from(editor.delta_str().await?);
179179
Ok(delta_bytes)
180180
})
@@ -195,7 +195,7 @@ impl ViewDataProcessor for TextBlockViewDataProcessor {
195195
let delta_data = Bytes::from(view_data);
196196
let repeated_revision: RepeatedRevision =
197197
Revision::initial_revision(&user_id, &view_id, delta_data.clone()).into();
198-
let _ = manager.create_block(view_id, repeated_revision).await?;
198+
let _ = manager.create_text_block(view_id, repeated_revision).await?;
199199
Ok(delta_data)
200200
})
201201
}

frontend/rust-lib/flowy-sdk/src/deps_resolve/text_block_deps.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use flowy_revision::{RevisionWebSocket, WSStateReceiver};
88
use flowy_sync::entities::ws_data::ClientRevisionWSData;
99
use flowy_text_block::{
1010
errors::{internal_error, FlowyError},
11-
BlockCloudService, TextBlockManager, TextBlockUser,
11+
TextEditorCloudService, TextEditorManager, TextEditorUser,
1212
};
1313
use flowy_user::services::UserSession;
1414
use futures_core::future::BoxFuture;
@@ -23,15 +23,15 @@ impl TextBlockDepsResolver {
2323
ws_conn: Arc<FlowyWebSocketConnect>,
2424
user_session: Arc<UserSession>,
2525
server_config: &ClientServerConfiguration,
26-
) -> Arc<TextBlockManager> {
26+
) -> Arc<TextEditorManager> {
2727
let user = Arc::new(BlockUserImpl(user_session));
2828
let rev_web_socket = Arc::new(TextBlockWebSocket(ws_conn.clone()));
29-
let cloud_service: Arc<dyn BlockCloudService> = match local_server {
29+
let cloud_service: Arc<dyn TextEditorCloudService> = match local_server {
3030
None => Arc::new(BlockHttpCloudService::new(server_config.clone())),
3131
Some(local_server) => local_server,
3232
};
3333

34-
let manager = Arc::new(TextBlockManager::new(cloud_service, user, rev_web_socket));
34+
let manager = Arc::new(TextEditorManager::new(cloud_service, user, rev_web_socket));
3535
let receiver = Arc::new(DocumentWSMessageReceiverImpl(manager.clone()));
3636
ws_conn.add_ws_message_receiver(receiver).unwrap();
3737

@@ -40,7 +40,7 @@ impl TextBlockDepsResolver {
4040
}
4141

4242
struct BlockUserImpl(Arc<UserSession>);
43-
impl TextBlockUser for BlockUserImpl {
43+
impl TextEditorUser for BlockUserImpl {
4444
fn user_dir(&self) -> Result<String, FlowyError> {
4545
let dir = self.0.user_dir().map_err(|e| FlowyError::unauthorized().context(e))?;
4646

@@ -90,7 +90,7 @@ impl RevisionWebSocket for TextBlockWebSocket {
9090
}
9191
}
9292

93-
struct DocumentWSMessageReceiverImpl(Arc<TextBlockManager>);
93+
struct DocumentWSMessageReceiverImpl(Arc<TextEditorManager>);
9494
impl WSMessageReceiver for DocumentWSMessageReceiverImpl {
9595
fn source(&self) -> WSChannel {
9696
WSChannel::Document

frontend/rust-lib/flowy-sdk/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use flowy_net::{
1111
local_server::LocalServer,
1212
ws::connection::{listen_on_websocket, FlowyWebSocketConnect},
1313
};
14-
use flowy_text_block::TextBlockManager;
14+
use flowy_text_block::TextEditorManager;
1515
use flowy_user::services::{notifier::UserStatus, UserSession, UserSessionConfig};
1616
use lib_dispatch::prelude::*;
1717
use lib_dispatch::runtime::tokio_default_runtime;
@@ -89,7 +89,7 @@ pub struct FlowySDK {
8989
#[allow(dead_code)]
9090
config: FlowySDKConfig,
9191
pub user_session: Arc<UserSession>,
92-
pub text_block_manager: Arc<TextBlockManager>,
92+
pub text_block_manager: Arc<TextEditorManager>,
9393
pub folder_manager: Arc<FolderManager>,
9494
pub grid_manager: Arc<GridManager>,
9595
pub dispatcher: Arc<EventDispatcher>,

frontend/rust-lib/flowy-sdk/src/module.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use flowy_folder::manager::FolderManager;
22
use flowy_grid::manager::GridManager;
33
use flowy_net::ws::connection::FlowyWebSocketConnect;
4-
use flowy_text_block::TextBlockManager;
4+
use flowy_text_block::TextEditorManager;
55
use flowy_user::services::UserSession;
66
use lib_dispatch::prelude::Module;
77
use std::sync::Arc;
@@ -11,7 +11,7 @@ pub fn mk_modules(
1111
folder_manager: &Arc<FolderManager>,
1212
grid_manager: &Arc<GridManager>,
1313
user_session: &Arc<UserSession>,
14-
text_block_manager: &Arc<TextBlockManager>,
14+
text_block_manager: &Arc<TextEditorManager>,
1515
) -> Vec<Module> {
1616
let user_module = mk_user_module(user_session.clone());
1717
let folder_module = mk_folder_module(folder_manager.clone());
@@ -43,6 +43,6 @@ fn mk_grid_module(grid_manager: Arc<GridManager>) -> Module {
4343
flowy_grid::event_map::create(grid_manager)
4444
}
4545

46-
fn mk_text_block_module(text_block_manager: Arc<TextBlockManager>) -> Module {
46+
fn mk_text_block_module(text_block_manager: Arc<TextEditorManager>) -> Module {
4747
flowy_text_block::event_map::create(text_block_manager)
4848
}

frontend/rust-lib/flowy-text-block/src/editor.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::web_socket::EditorCommandSender;
22
use crate::{
33
errors::FlowyError,
44
queue::{EditBlockQueue, EditorCommand},
5-
TextBlockUser,
5+
TextEditorUser,
66
};
77
use bytes::Bytes;
88
use flowy_error::{internal_error, FlowyResult};
@@ -24,7 +24,6 @@ use tokio::sync::{mpsc, oneshot};
2424

2525
pub struct TextBlockEditor {
2626
pub doc_id: String,
27-
#[allow(dead_code)]
2827
rev_manager: Arc<RevisionManager>,
2928
#[cfg(feature = "sync")]
3029
ws_manager: Arc<flowy_revision::RevisionWebSocketManager>,
@@ -35,7 +34,7 @@ impl TextBlockEditor {
3534
#[allow(unused_variables)]
3635
pub(crate) async fn new(
3736
doc_id: &str,
38-
user: Arc<dyn TextBlockUser>,
37+
user: Arc<dyn TextEditorUser>,
3938
mut rev_manager: RevisionManager,
4039
rev_web_socket: Arc<dyn RevisionWebSocket>,
4140
cloud_service: Arc<dyn RevisionCloudService>,
@@ -194,7 +193,7 @@ impl std::ops::Drop for TextBlockEditor {
194193

195194
// The edit queue will exit after the EditorCommandSender was dropped.
196195
fn spawn_edit_queue(
197-
user: Arc<dyn TextBlockUser>,
196+
user: Arc<dyn TextEditorUser>,
198197
rev_manager: Arc<RevisionManager>,
199198
delta: TextDelta,
200199
) -> EditorCommandSender {

frontend/rust-lib/flowy-text-block/src/entities.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,52 @@ impl std::convert::From<i32> for ExportType {
2929
}
3030
}
3131

32+
#[derive(Default, ProtoBuf)]
33+
pub struct EditPayloadPB {
34+
#[pb(index = 1)]
35+
pub text_block_id: String,
36+
37+
// Encode in JSON format
38+
#[pb(index = 2)]
39+
pub operations: String,
40+
41+
// Encode in JSON format
42+
#[pb(index = 3)]
43+
pub delta: String,
44+
}
45+
46+
#[derive(Default)]
47+
pub struct EditParams {
48+
pub text_block_id: String,
49+
50+
// Encode in JSON format
51+
pub operations: String,
52+
53+
// Encode in JSON format
54+
pub delta: String,
55+
}
56+
57+
impl TryInto<EditParams> for EditPayloadPB {
58+
type Error = ErrorCode;
59+
fn try_into(self) -> Result<EditParams, Self::Error> {
60+
Ok(EditParams {
61+
text_block_id: self.text_block_id,
62+
operations: self.operations,
63+
delta: self.delta,
64+
})
65+
}
66+
}
67+
68+
#[derive(Default, ProtoBuf)]
69+
pub struct TextBlockPB {
70+
#[pb(index = 1)]
71+
pub text_block_id: String,
72+
73+
/// Encode in JSON format
74+
#[pb(index = 2)]
75+
pub snapshot: String,
76+
}
77+
3278
#[derive(Default, ProtoBuf)]
3379
pub struct ExportPayloadPB {
3480
#[pb(index = 1)]

0 commit comments

Comments
 (0)