From 5c155a07bf4ee5f1ec97c51eaebf3bb314ef797c Mon Sep 17 00:00:00 2001 From: appflowy Date: Sat, 5 Mar 2022 21:15:10 +0800 Subject: [PATCH] feat: move handles to flowy-block crate --- .../workspace/application/doc/share_bloc.dart | 2 +- .../application/doc/share_service.dart | 2 +- .../presentation/plugins/doc/document.dart | 2 +- .../packages/flowy_sdk/example/pubspec.lock | 6 +- .../windows/flutter/generated_plugins.cmake | 8 ++ .../dart_event/flowy-block/dart_event.dart | 37 ++++++++ .../flowy_sdk/lib/dispatch/dispatch.dart | 2 + .../entities.pb.dart} | 6 +- .../entities.pbenum.dart} | 2 +- .../entities.pbjson.dart} | 2 +- .../entities.pbserver.dart} | 4 +- .../protobuf/flowy-block/event_map.pb.dart | 11 +++ .../flowy-block/event_map.pbenum.dart | 26 ++++++ .../flowy-block/event_map.pbjson.dart | 21 +++++ .../flowy-block/event_map.pbserver.dart | 9 ++ .../lib/protobuf/flowy-block/protobuf.dart | 3 + .../flowy-folder-data-model/protobuf.dart | 1 - .../app_flowy/packages/flowy_sdk/pubspec.lock | 18 +++- frontend/rust-lib/dart-ffi/Cargo.toml | 4 +- frontend/rust-lib/flowy-block/Cargo.toml | 6 +- frontend/rust-lib/flowy-block/Flowy.toml | 3 + frontend/rust-lib/flowy-block/build.rs | 9 ++ .../rust-lib/flowy-block/src/entities.rs | 0 .../rust-lib/flowy-block/src/event_handler.rs | 29 ++++++ .../rust-lib/flowy-block/src/event_map.rs | 26 ++++++ frontend/rust-lib/flowy-block/src/lib.rs | 4 + .../rust-lib/flowy-block/src/protobuf/mod.rs | 4 + .../src/protobuf/model/entities.rs | 14 +-- .../src/protobuf/model/event_map.rs | 91 +++++++++++++++++++ .../flowy-block/src/protobuf/model/mod.rs | 8 ++ .../src/protobuf/proto/entities.proto | 0 .../src/protobuf/proto/event_map.proto | 6 ++ .../flowy-block/tests/document/edit_script.rs | 2 +- .../rust-lib/flowy-folder/src/event_map.rs | 7 +- frontend/rust-lib/flowy-folder/src/lib.rs | 2 +- .../src/{controller.rs => manager.rs} | 4 +- .../src/services/folder_editor.rs | 2 +- .../src/services/persistence/migration.rs | 2 +- .../src/services/persistence/mod.rs | 2 +- .../src/services/view/controller.rs | 12 --- .../src/services/view/event_handler.rs | 19 ---- .../src/services/workspace/event_handler.rs | 2 +- frontend/rust-lib/flowy-sdk/Cargo.toml | 4 +- .../flowy-sdk/src/deps_resolve/folder_deps.rs | 13 +-- frontend/rust-lib/flowy-sdk/src/lib.rs | 22 ++--- frontend/rust-lib/flowy-sdk/src/module.rs | 8 +- .../src/entities/mod.rs | 1 - .../src/protobuf/model/mod.rs | 3 - 48 files changed, 370 insertions(+), 101 deletions(-) create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-block/dart_event.dart rename frontend/app_flowy/packages/flowy_sdk/lib/protobuf/{flowy-folder-data-model/share.pb.dart => flowy-block/entities.pb.dart} (98%) rename frontend/app_flowy/packages/flowy_sdk/lib/protobuf/{flowy-folder-data-model/share.pbenum.dart => flowy-block/entities.pbenum.dart} (97%) rename frontend/app_flowy/packages/flowy_sdk/lib/protobuf/{flowy-folder-data-model/share.pbjson.dart => flowy-block/entities.pbjson.dart} (98%) rename frontend/app_flowy/packages/flowy_sdk/lib/protobuf/{flowy-folder-data-model/share.pbserver.dart => flowy-block/entities.pbserver.dart} (85%) create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pb.dart create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbenum.dart create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbjson.dart create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbserver.dart create mode 100644 frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/protobuf.dart create mode 100644 frontend/rust-lib/flowy-block/Flowy.toml create mode 100644 frontend/rust-lib/flowy-block/build.rs rename shared-lib/flowy-folder-data-model/src/entities/share.rs => frontend/rust-lib/flowy-block/src/entities.rs (100%) create mode 100644 frontend/rust-lib/flowy-block/src/event_handler.rs create mode 100644 frontend/rust-lib/flowy-block/src/event_map.rs create mode 100644 frontend/rust-lib/flowy-block/src/protobuf/mod.rs rename shared-lib/flowy-folder-data-model/src/protobuf/model/share.rs => frontend/rust-lib/flowy-block/src/protobuf/model/entities.rs (96%) create mode 100644 frontend/rust-lib/flowy-block/src/protobuf/model/event_map.rs create mode 100644 frontend/rust-lib/flowy-block/src/protobuf/model/mod.rs rename shared-lib/flowy-folder-data-model/src/protobuf/proto/share.proto => frontend/rust-lib/flowy-block/src/protobuf/proto/entities.proto (100%) create mode 100644 frontend/rust-lib/flowy-block/src/protobuf/proto/event_map.proto rename frontend/rust-lib/flowy-folder/src/{controller.rs => manager.rs} (99%) diff --git a/frontend/app_flowy/lib/workspace/application/doc/share_bloc.dart b/frontend/app_flowy/lib/workspace/application/doc/share_bloc.dart index fe4b2e7f5c..4e4fe85e54 100644 --- a/frontend/app_flowy/lib/workspace/application/doc/share_bloc.dart +++ b/frontend/app_flowy/lib/workspace/application/doc/share_bloc.dart @@ -1,6 +1,6 @@ import 'package:app_flowy/workspace/application/doc/share_service.dart'; import 'package:app_flowy/workspace/application/markdown/delta_markdown.dart'; -import 'package:flowy_sdk/protobuf/flowy-folder-data-model/share.pb.dart'; +import 'package:flowy_sdk/protobuf/flowy-block/entities.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; diff --git a/frontend/app_flowy/lib/workspace/application/doc/share_service.dart b/frontend/app_flowy/lib/workspace/application/doc/share_service.dart index eedc0913bb..26f27cca99 100644 --- a/frontend/app_flowy/lib/workspace/application/doc/share_service.dart +++ b/frontend/app_flowy/lib/workspace/application/doc/share_service.dart @@ -1,8 +1,8 @@ import 'dart:async'; import 'package:dartz/dartz.dart'; import 'package:flowy_sdk/dispatch/dispatch.dart'; -import 'package:flowy_sdk/protobuf/flowy-folder-data-model/protobuf.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; +import 'package:flowy_sdk/protobuf/flowy-block/protobuf.dart'; class ShareService { Future> export(String docId, ExportType type) { diff --git a/frontend/app_flowy/lib/workspace/presentation/plugins/doc/document.dart b/frontend/app_flowy/lib/workspace/presentation/plugins/doc/document.dart index b5b368fd72..cf09edfc31 100644 --- a/frontend/app_flowy/lib/workspace/presentation/plugins/doc/document.dart +++ b/frontend/app_flowy/lib/workspace/presentation/plugins/doc/document.dart @@ -21,7 +21,7 @@ import 'package:flowy_infra/theme.dart'; import 'package:flowy_infra_ui/flowy_infra_ui.dart'; import 'package:flowy_infra_ui/widget/rounded_button.dart'; import 'package:flowy_sdk/log.dart'; -import 'package:flowy_sdk/protobuf/flowy-folder-data-model/share.pb.dart'; +import 'package:flowy_sdk/protobuf/flowy-block/entities.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/view.pb.dart'; import 'package:flowy_sdk/protobuf/flowy-error/errors.pb.dart'; import 'package:flutter/material.dart'; diff --git a/frontend/app_flowy/packages/flowy_sdk/example/pubspec.lock b/frontend/app_flowy/packages/flowy_sdk/example/pubspec.lock index 921bd4fb2b..4ad6cc1e98 100644 --- a/frontend/app_flowy/packages/flowy_sdk/example/pubspec.lock +++ b/frontend/app_flowy/packages/flowy_sdk/example/pubspec.lock @@ -7,7 +7,7 @@ packages: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.6" + version: "3.1.8" async: dependency: transitive description: @@ -200,7 +200,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" platform: dependency: transitive description: @@ -275,7 +275,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.9" typed_data: dependency: transitive description: diff --git a/frontend/app_flowy/packages/flowy_sdk/example/windows/flutter/generated_plugins.cmake b/frontend/app_flowy/packages/flowy_sdk/example/windows/flutter/generated_plugins.cmake index d71dbaabab..33c0fd0169 100644 --- a/frontend/app_flowy/packages/flowy_sdk/example/windows/flutter/generated_plugins.cmake +++ b/frontend/app_flowy/packages/flowy_sdk/example/windows/flutter/generated_plugins.cmake @@ -6,6 +6,9 @@ list(APPEND FLUTTER_PLUGIN_LIST flowy_sdk ) +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + set(PLUGIN_BUNDLED_LIBRARIES) foreach(plugin ${FLUTTER_PLUGIN_LIST}) @@ -14,3 +17,8 @@ foreach(plugin ${FLUTTER_PLUGIN_LIST}) list(APPEND PLUGIN_BUNDLED_LIBRARIES $) list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-block/dart_event.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-block/dart_event.dart new file mode 100644 index 0000000000..f14e33f7cc --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-block/dart_event.dart @@ -0,0 +1,37 @@ + +/// Auto generate. Do not edit +part of '../../dispatch.dart'; +class BlockEventApplyDocDelta { + BlockDelta request; + BlockEventApplyDocDelta(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = BlockEvent.ApplyDocDelta.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(BlockDelta.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class BlockEventExportDocument { + ExportPayload request; + BlockEventExportDocument(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = BlockEvent.ExportDocument.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(ExportData.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart index b58175af0a..f26efb17e4 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart @@ -21,6 +21,7 @@ import 'package:flowy_sdk/ffi.dart' as ffi; import 'package:flowy_sdk/protobuf/flowy-user-data-model/protobuf.dart'; import 'package:flowy_sdk/protobuf/dart-ffi/protobuf.dart'; import 'package:flowy_sdk/protobuf/flowy-folder-data-model/protobuf.dart'; +import 'package:flowy_sdk/protobuf/flowy-block/protobuf.dart'; import 'package:flowy_sdk/protobuf/flowy-collaboration/protobuf.dart'; import 'package:flowy_sdk/protobuf/flowy-grid-data-model/protobuf.dart'; @@ -33,6 +34,7 @@ part 'dart_event/flowy-folder/dart_event.dart'; part 'dart_event/flowy-net/dart_event.dart'; part 'dart_event/flowy-user/dart_event.dart'; part 'dart_event/flowy-grid/dart_event.dart'; +part 'dart_event/flowy-block/dart_event.dart'; enum FFIException { RequestIsEmpty, diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pb.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pb.dart similarity index 98% rename from frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pb.dart rename to frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pb.dart index c90de870dd..bcd8d6051a 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pb.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pb.dart @@ -1,6 +1,6 @@ /// // Generated code. Do not modify. -// source: share.proto +// source: entities.proto // // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields @@ -9,9 +9,9 @@ import 'dart:core' as $core; import 'package:protobuf/protobuf.dart' as $pb; -import 'share.pbenum.dart'; +import 'entities.pbenum.dart'; -export 'share.pbenum.dart'; +export 'entities.pbenum.dart'; class ExportPayload extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo(const $core.bool.fromEnvironment('protobuf.omit_message_names') ? '' : 'ExportPayload', createEmptyInstance: create) diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbenum.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbenum.dart similarity index 97% rename from frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbenum.dart rename to frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbenum.dart index aa1d037ab7..f5413e61f2 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbenum.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbenum.dart @@ -1,6 +1,6 @@ /// // Generated code. Do not modify. -// source: share.proto +// source: entities.proto // // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbjson.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbjson.dart similarity index 98% rename from frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbjson.dart rename to frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbjson.dart index 8224855b02..4935602b83 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbjson.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbjson.dart @@ -1,6 +1,6 @@ /// // Generated code. Do not modify. -// source: share.proto +// source: entities.proto // // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbserver.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbserver.dart similarity index 85% rename from frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbserver.dart rename to frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbserver.dart index 2fa95db4fe..88741cd6c2 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/share.pbserver.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/entities.pbserver.dart @@ -1,9 +1,9 @@ /// // Generated code. Do not modify. -// source: share.proto +// source: entities.proto // // @dart = 2.12 // ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package -export 'share.pb.dart'; +export 'entities.pb.dart'; diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pb.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pb.dart new file mode 100644 index 0000000000..5bfad20674 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pb.dart @@ -0,0 +1,11 @@ +/// +// Generated code. Do not modify. +// source: event_map.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields + +import 'dart:core' as $core; + +export 'event_map.pbenum.dart'; + diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbenum.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbenum.dart new file mode 100644 index 0000000000..599e220c77 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbenum.dart @@ -0,0 +1,26 @@ +/// +// Generated code. Do not modify. +// source: event_map.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields + +// ignore_for_file: UNDEFINED_SHOWN_NAME +import 'dart:core' as $core; +import 'package:protobuf/protobuf.dart' as $pb; + +class BlockEvent extends $pb.ProtobufEnum { + static const BlockEvent ApplyDocDelta = BlockEvent._(0, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ApplyDocDelta'); + static const BlockEvent ExportDocument = BlockEvent._(1, const $core.bool.fromEnvironment('protobuf.omit_enum_names') ? '' : 'ExportDocument'); + + static const $core.List values = [ + ApplyDocDelta, + ExportDocument, + ]; + + static final $core.Map<$core.int, BlockEvent> _byValue = $pb.ProtobufEnum.initByValue(values); + static BlockEvent? valueOf($core.int value) => _byValue[value]; + + const BlockEvent._($core.int v, $core.String n) : super(v, n); +} + diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbjson.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbjson.dart new file mode 100644 index 0000000000..7ff062a62a --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbjson.dart @@ -0,0 +1,21 @@ +/// +// Generated code. Do not modify. +// source: event_map.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package + +import 'dart:core' as $core; +import 'dart:convert' as $convert; +import 'dart:typed_data' as $typed_data; +@$core.Deprecated('Use blockEventDescriptor instead') +const BlockEvent$json = const { + '1': 'BlockEvent', + '2': const [ + const {'1': 'ApplyDocDelta', '2': 0}, + const {'1': 'ExportDocument', '2': 1}, + ], +}; + +/// Descriptor for `BlockEvent`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List blockEventDescriptor = $convert.base64Decode('CgpCbG9ja0V2ZW50EhEKDUFwcGx5RG9jRGVsdGEQABISCg5FeHBvcnREb2N1bWVudBAB'); diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbserver.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbserver.dart new file mode 100644 index 0000000000..e359d1146c --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/event_map.pbserver.dart @@ -0,0 +1,9 @@ +/// +// Generated code. Do not modify. +// source: event_map.proto +// +// @dart = 2.12 +// ignore_for_file: annotate_overrides,camel_case_types,unnecessary_const,non_constant_identifier_names,library_prefixes,unused_import,unused_shown_name,return_of_invalid_type,unnecessary_this,prefer_final_fields,deprecated_member_use_from_same_package + +export 'event_map.pb.dart'; + diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/protobuf.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/protobuf.dart new file mode 100644 index 0000000000..a2db1d12ab --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-block/protobuf.dart @@ -0,0 +1,3 @@ +// Auto-generated, do not edit +export './entities.pb.dart'; +export './event_map.pb.dart'; diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/protobuf.dart b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/protobuf.dart index 4a0477e02c..4ca4fa1fd1 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/protobuf.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/protobuf/flowy-folder-data-model/protobuf.dart @@ -1,5 +1,4 @@ // Auto-generated, do not edit -export './share.pb.dart'; export './app.pb.dart'; export './view.pb.dart'; export './trash.pb.dart'; diff --git a/frontend/app_flowy/packages/flowy_sdk/pubspec.lock b/frontend/app_flowy/packages/flowy_sdk/pubspec.lock index 5ece223a66..b1c06d8848 100644 --- a/frontend/app_flowy/packages/flowy_sdk/pubspec.lock +++ b/frontend/app_flowy/packages/flowy_sdk/pubspec.lock @@ -214,6 +214,13 @@ packages: description: flutter source: sdk version: "0.0.0" + freezed: + dependency: "direct dev" + description: + name: freezed + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.1+2" freezed_annotation: dependency: "direct main" description: @@ -339,7 +346,7 @@ packages: name: path url: "https://pub.dartlang.org" source: hosted - version: "1.8.0" + version: "1.8.1" pedantic: dependency: transitive description: @@ -394,6 +401,13 @@ packages: description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" source_span: dependency: transitive description: @@ -442,7 +456,7 @@ packages: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.4.8" + version: "0.4.9" timing: dependency: transitive description: diff --git a/frontend/rust-lib/dart-ffi/Cargo.toml b/frontend/rust-lib/dart-ffi/Cargo.toml index 96755db623..046fd85668 100644 --- a/frontend/rust-lib/dart-ffi/Cargo.toml +++ b/frontend/rust-lib/dart-ffi/Cargo.toml @@ -7,8 +7,8 @@ edition = "2018" [lib] name = "dart_ffi" # this value will change depending on the target os -# default staticlib -crate-type = ["staticlib"] +# default cdylib +crate-type = ["cdylib"] [dependencies] diff --git a/frontend/rust-lib/flowy-block/Cargo.toml b/frontend/rust-lib/flowy-block/Cargo.toml index 330e70a61a..3973ff2c6c 100644 --- a/frontend/rust-lib/flowy-block/Cargo.toml +++ b/frontend/rust-lib/flowy-block/Cargo.toml @@ -52,6 +52,10 @@ color-eyre = { version = "0.5", default-features = false } criterion = "0.3" rand = "0.7.3" +[build-dependencies] +lib-infra = { path = "../../../shared-lib/lib-infra", features = ["protobuf_file_gen", "proto_gen"] } + [features] http_server = [] -flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-sync/flowy_unit_test"] \ No newline at end of file +flowy_unit_test = ["lib-ot/flowy_unit_test", "flowy-sync/flowy_unit_test"] +dart = ["lib-infra/dart"] \ No newline at end of file diff --git a/frontend/rust-lib/flowy-block/Flowy.toml b/frontend/rust-lib/flowy-block/Flowy.toml new file mode 100644 index 0000000000..e6a5c4bd8f --- /dev/null +++ b/frontend/rust-lib/flowy-block/Flowy.toml @@ -0,0 +1,3 @@ + +proto_crates = ["src/event_map.rs", "src/entities.rs"] +event_files = ["src/event_map.rs"] \ No newline at end of file diff --git a/frontend/rust-lib/flowy-block/build.rs b/frontend/rust-lib/flowy-block/build.rs new file mode 100644 index 0000000000..4d4d3b13da --- /dev/null +++ b/frontend/rust-lib/flowy-block/build.rs @@ -0,0 +1,9 @@ +use lib_infra::code_gen; + +fn main() { + let crate_name = env!("CARGO_PKG_NAME"); + code_gen::protobuf_file::gen(crate_name, "./src/protobuf/proto"); + + #[cfg(feature = "dart")] + code_gen::dart_event::gen(crate_name); +} diff --git a/shared-lib/flowy-folder-data-model/src/entities/share.rs b/frontend/rust-lib/flowy-block/src/entities.rs similarity index 100% rename from shared-lib/flowy-folder-data-model/src/entities/share.rs rename to frontend/rust-lib/flowy-block/src/entities.rs diff --git a/frontend/rust-lib/flowy-block/src/event_handler.rs b/frontend/rust-lib/flowy-block/src/event_handler.rs new file mode 100644 index 0000000000..c074f8b277 --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/event_handler.rs @@ -0,0 +1,29 @@ +use crate::entities::{ExportData, ExportParams, ExportPayload}; +use crate::BlockManager; +use flowy_collaboration::entities::document_info::BlockDelta; +use flowy_error::FlowyError; +use lib_dispatch::prelude::{data_result, AppData, Data, DataResult}; +use std::convert::TryInto; +use std::sync::Arc; + +pub(crate) async fn apply_delta_handler( + data: Data, + manager: AppData>, +) -> DataResult { + let block_delta = manager.receive_local_delta(data.into_inner()).await?; + data_result(block_delta) +} + +#[tracing::instrument(skip(data, manager), err)] +pub(crate) async fn export_handler( + data: Data, + manager: AppData>, +) -> DataResult { + let params: ExportParams = data.into_inner().try_into()?; + let editor = manager.open_block(¶ms.view_id).await?; + let delta_json = editor.block_json().await?; + data_result(ExportData { + data: delta_json, + export_type: params.export_type, + }) +} diff --git a/frontend/rust-lib/flowy-block/src/event_map.rs b/frontend/rust-lib/flowy-block/src/event_map.rs new file mode 100644 index 0000000000..9997d7ca20 --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/event_map.rs @@ -0,0 +1,26 @@ +use crate::event_handler::*; +use crate::BlockManager; +use flowy_derive::{Flowy_Event, ProtoBuf_Enum}; +use lib_dispatch::prelude::Module; +use std::sync::Arc; +use strum_macros::Display; + +pub fn create(block_manager: Arc) -> Module { + let mut module = Module::new().name(env!("CARGO_PKG_NAME")).data(block_manager); + + module = module + .event(BlockEvent::ApplyDocDelta, apply_delta_handler) + .event(BlockEvent::ExportDocument, export_handler); + + module +} + +#[derive(Clone, Copy, PartialEq, Eq, Debug, Display, Hash, ProtoBuf_Enum, Flowy_Event)] +#[event_err = "FlowyError"] +pub enum BlockEvent { + #[event(input = "BlockDelta", output = "BlockDelta")] + ApplyDocDelta = 0, + + #[event(input = "ExportPayload", output = "ExportData")] + ExportDocument = 1, +} diff --git a/frontend/rust-lib/flowy-block/src/lib.rs b/frontend/rust-lib/flowy-block/src/lib.rs index 0995bd2136..8f15fd7e31 100644 --- a/frontend/rust-lib/flowy-block/src/lib.rs +++ b/frontend/rust-lib/flowy-block/src/lib.rs @@ -1,8 +1,12 @@ pub mod block_editor; +mod entities; +mod event_handler; +pub mod event_map; pub mod manager; mod queue; mod web_socket; +pub mod protobuf; pub use manager::*; pub mod errors { pub use flowy_error::{internal_error, ErrorCode, FlowyError}; diff --git a/frontend/rust-lib/flowy-block/src/protobuf/mod.rs b/frontend/rust-lib/flowy-block/src/protobuf/mod.rs new file mode 100644 index 0000000000..da97aad28a --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/protobuf/mod.rs @@ -0,0 +1,4 @@ +#![cfg_attr(rustfmt, rustfmt::skip)] +// Auto-generated, do not edit +mod model; +pub use model::*; \ No newline at end of file diff --git a/shared-lib/flowy-folder-data-model/src/protobuf/model/share.rs b/frontend/rust-lib/flowy-block/src/protobuf/model/entities.rs similarity index 96% rename from shared-lib/flowy-folder-data-model/src/protobuf/model/share.rs rename to frontend/rust-lib/flowy-block/src/protobuf/model/entities.rs index a020837fb0..3846f9c76f 100644 --- a/shared-lib/flowy-folder-data-model/src/protobuf/model/share.rs +++ b/frontend/rust-lib/flowy-block/src/protobuf/model/entities.rs @@ -17,7 +17,7 @@ #![allow(trivial_casts)] #![allow(unused_imports)] #![allow(unused_results)] -//! Generated file from `share.proto` +//! Generated file from `entities.proto` /// Generated files are compatible only with the same version /// of protobuf runtime. @@ -457,12 +457,12 @@ impl ::protobuf::reflect::ProtobufValue for ExportType { } static file_descriptor_proto_data: &'static [u8] = b"\ - \n\x0bshare.proto\"V\n\rExportPayload\x12\x17\n\x07view_id\x18\x01\x20\ - \x01(\tR\x06viewId\x12,\n\x0bexport_type\x18\x02\x20\x01(\x0e2\x0b.Expor\ - tTypeR\nexportType\"N\n\nExportData\x12\x12\n\x04data\x18\x01\x20\x01(\t\ - R\x04data\x12,\n\x0bexport_type\x18\x02\x20\x01(\x0e2\x0b.ExportTypeR\ne\ - xportType*.\n\nExportType\x12\x08\n\x04Text\x10\0\x12\x0c\n\x08Markdown\ - \x10\x01\x12\x08\n\x04Link\x10\x02b\x06proto3\ + \n\x0eentities.proto\"V\n\rExportPayload\x12\x17\n\x07view_id\x18\x01\ + \x20\x01(\tR\x06viewId\x12,\n\x0bexport_type\x18\x02\x20\x01(\x0e2\x0b.E\ + xportTypeR\nexportType\"N\n\nExportData\x12\x12\n\x04data\x18\x01\x20\ + \x01(\tR\x04data\x12,\n\x0bexport_type\x18\x02\x20\x01(\x0e2\x0b.ExportT\ + ypeR\nexportType*.\n\nExportType\x12\x08\n\x04Text\x10\0\x12\x0c\n\x08Ma\ + rkdown\x10\x01\x12\x08\n\x04Link\x10\x02b\x06proto3\ "; static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; diff --git a/frontend/rust-lib/flowy-block/src/protobuf/model/event_map.rs b/frontend/rust-lib/flowy-block/src/protobuf/model/event_map.rs new file mode 100644 index 0000000000..3078739cf8 --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/protobuf/model/event_map.rs @@ -0,0 +1,91 @@ +// This file is generated by rust-protobuf 2.25.2. Do not edit +// @generated + +// https://github.com/rust-lang/rust-clippy/issues/702 +#![allow(unknown_lints)] +#![allow(clippy::all)] + +#![allow(unused_attributes)] +#![cfg_attr(rustfmt, rustfmt::skip)] + +#![allow(box_pointers)] +#![allow(dead_code)] +#![allow(missing_docs)] +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] +#![allow(non_upper_case_globals)] +#![allow(trivial_casts)] +#![allow(unused_imports)] +#![allow(unused_results)] +//! Generated file from `event_map.proto` + +/// Generated files are compatible only with the same version +/// of protobuf runtime. +// const _PROTOBUF_VERSION_CHECK: () = ::protobuf::VERSION_2_25_2; + +#[derive(Clone,PartialEq,Eq,Debug,Hash)] +pub enum BlockEvent { + ApplyDocDelta = 0, + ExportDocument = 1, +} + +impl ::protobuf::ProtobufEnum for BlockEvent { + fn value(&self) -> i32 { + *self as i32 + } + + fn from_i32(value: i32) -> ::std::option::Option { + match value { + 0 => ::std::option::Option::Some(BlockEvent::ApplyDocDelta), + 1 => ::std::option::Option::Some(BlockEvent::ExportDocument), + _ => ::std::option::Option::None + } + } + + fn values() -> &'static [Self] { + static values: &'static [BlockEvent] = &[ + BlockEvent::ApplyDocDelta, + BlockEvent::ExportDocument, + ]; + values + } + + fn enum_descriptor_static() -> &'static ::protobuf::reflect::EnumDescriptor { + static descriptor: ::protobuf::rt::LazyV2<::protobuf::reflect::EnumDescriptor> = ::protobuf::rt::LazyV2::INIT; + descriptor.get(|| { + ::protobuf::reflect::EnumDescriptor::new_pb_name::("BlockEvent", file_descriptor_proto()) + }) + } +} + +impl ::std::marker::Copy for BlockEvent { +} + +impl ::std::default::Default for BlockEvent { + fn default() -> Self { + BlockEvent::ApplyDocDelta + } +} + +impl ::protobuf::reflect::ProtobufValue for BlockEvent { + fn as_ref(&self) -> ::protobuf::reflect::ReflectValueRef { + ::protobuf::reflect::ReflectValueRef::Enum(::protobuf::ProtobufEnum::descriptor(self)) + } +} + +static file_descriptor_proto_data: &'static [u8] = b"\ + \n\x0fevent_map.proto*3\n\nBlockEvent\x12\x11\n\rApplyDocDelta\x10\0\x12\ + \x12\n\x0eExportDocument\x10\x01b\x06proto3\ +"; + +static file_descriptor_proto_lazy: ::protobuf::rt::LazyV2<::protobuf::descriptor::FileDescriptorProto> = ::protobuf::rt::LazyV2::INIT; + +fn parse_descriptor_proto() -> ::protobuf::descriptor::FileDescriptorProto { + ::protobuf::Message::parse_from_bytes(file_descriptor_proto_data).unwrap() +} + +pub fn file_descriptor_proto() -> &'static ::protobuf::descriptor::FileDescriptorProto { + file_descriptor_proto_lazy.get(|| { + parse_descriptor_proto() + }) +} diff --git a/frontend/rust-lib/flowy-block/src/protobuf/model/mod.rs b/frontend/rust-lib/flowy-block/src/protobuf/model/mod.rs new file mode 100644 index 0000000000..a8012019d4 --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/protobuf/model/mod.rs @@ -0,0 +1,8 @@ +#![cfg_attr(rustfmt, rustfmt::skip)] +// Auto-generated, do not edit + +mod entities; +pub use entities::*; + +mod event_map; +pub use event_map::*; diff --git a/shared-lib/flowy-folder-data-model/src/protobuf/proto/share.proto b/frontend/rust-lib/flowy-block/src/protobuf/proto/entities.proto similarity index 100% rename from shared-lib/flowy-folder-data-model/src/protobuf/proto/share.proto rename to frontend/rust-lib/flowy-block/src/protobuf/proto/entities.proto diff --git a/frontend/rust-lib/flowy-block/src/protobuf/proto/event_map.proto b/frontend/rust-lib/flowy-block/src/protobuf/proto/event_map.proto new file mode 100644 index 0000000000..adc99e6941 --- /dev/null +++ b/frontend/rust-lib/flowy-block/src/protobuf/proto/event_map.proto @@ -0,0 +1,6 @@ +syntax = "proto3"; + +enum BlockEvent { + ApplyDocDelta = 0; + ExportDocument = 1; +} diff --git a/frontend/rust-lib/flowy-block/tests/document/edit_script.rs b/frontend/rust-lib/flowy-block/tests/document/edit_script.rs index 441b4cd104..506509f0ae 100644 --- a/frontend/rust-lib/flowy-block/tests/document/edit_script.rs +++ b/frontend/rust-lib/flowy-block/tests/document/edit_script.rs @@ -27,7 +27,7 @@ impl EditorTest { let sdk = FlowySDKTest::default(); let _ = sdk.init_user().await; let test = ViewTest::new(&sdk).await; - let editor = sdk.document_manager.open_block(&test.view.id).await.unwrap(); + let editor = sdk.block_manager.open_block(&test.view.id).await.unwrap(); Self { sdk, editor } } diff --git a/frontend/rust-lib/flowy-folder/src/event_map.rs b/frontend/rust-lib/flowy-folder/src/event_map.rs index bd151f80b0..483de91cc3 100644 --- a/frontend/rust-lib/flowy-folder/src/event_map.rs +++ b/frontend/rust-lib/flowy-folder/src/event_map.rs @@ -1,5 +1,4 @@ use crate::{ - controller::FolderManager, entities::{ app::{App, AppId, CreateAppParams, UpdateAppParams}, trash::{RepeatedTrash, RepeatedTrashId}, @@ -7,6 +6,7 @@ use crate::{ workspace::{CreateWorkspaceParams, RepeatedWorkspace, UpdateWorkspaceParams, Workspace, WorkspaceId}, }, errors::FlowyError, + manager::FolderManager, services::{app::event_handler::*, trash::event_handler::*, view::event_handler::*, workspace::event_handler::*}, }; use flowy_database::DBConnection; @@ -64,8 +64,7 @@ pub fn create(folder: Arc) -> Module { .event(FolderEvent::DeleteView, delete_view_handler) .event(FolderEvent::DuplicateView, duplicate_view_handler) .event(FolderEvent::OpenView, open_view_handler) - .event(FolderEvent::CloseView, close_view_handler) - .event(FolderEvent::ApplyDocDelta, block_delta_handler); + .event(FolderEvent::CloseView, close_view_handler); module = module .event(FolderEvent::ReadTrash, read_trash_handler) @@ -74,8 +73,6 @@ pub fn create(folder: Arc) -> Module { .event(FolderEvent::RestoreAllTrash, restore_all_trash_handler) .event(FolderEvent::DeleteAllTrash, delete_all_trash_handler); - module = module.event(FolderEvent::ExportDocument, export_handler); - module } diff --git a/frontend/rust-lib/flowy-folder/src/lib.rs b/frontend/rust-lib/flowy-folder/src/lib.rs index 7ce085a8dd..0137664274 100644 --- a/frontend/rust-lib/flowy-folder/src/lib.rs +++ b/frontend/rust-lib/flowy-folder/src/lib.rs @@ -8,8 +8,8 @@ mod macros; #[macro_use] extern crate flowy_database; -pub mod controller; mod dart_notification; +pub mod manager; pub mod protobuf; mod util; diff --git a/frontend/rust-lib/flowy-folder/src/controller.rs b/frontend/rust-lib/flowy-folder/src/manager.rs similarity index 99% rename from frontend/rust-lib/flowy-folder/src/controller.rs rename to frontend/rust-lib/flowy-folder/src/manager.rs index 528a602d57..34dca68c4e 100644 --- a/frontend/rust-lib/flowy-folder/src/controller.rs +++ b/frontend/rust-lib/flowy-folder/src/manager.rs @@ -72,7 +72,7 @@ impl FolderManager { user: Arc, cloud_service: Arc, database: Arc, - document_manager: Arc, + block_manager: Arc, web_socket: Arc, ) -> Self { if let Ok(user_id) = user.user_id() { @@ -95,7 +95,7 @@ impl FolderManager { persistence.clone(), cloud_service.clone(), trash_controller.clone(), - document_manager, + block_manager, )); let app_controller = Arc::new(AppController::new( diff --git a/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs b/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs index 6f032964e8..536eef4c9f 100644 --- a/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs +++ b/frontend/rust-lib/flowy-folder/src/services/folder_editor.rs @@ -4,7 +4,7 @@ use flowy_collaboration::{ entities::{revision::Revision, ws_data::ServerRevisionWSData}, }; -use crate::controller::FolderId; +use crate::manager::FolderId; use flowy_collaboration::util::make_delta_from_revisions; use flowy_error::{FlowyError, FlowyResult}; use flowy_sync::{ diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs index 258b8a1e55..3f499fc45f 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs @@ -1,4 +1,4 @@ -use crate::controller::FolderId; +use crate::manager::FolderId; use crate::{ event_map::WorkspaceDatabase, services::persistence::{AppTableSql, TrashTableSql, ViewTableSql, WorkspaceTableSql}, diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs index 77b6d2a6c4..fa473ea063 100644 --- a/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs +++ b/frontend/rust-lib/flowy-folder/src/services/persistence/mod.rs @@ -12,8 +12,8 @@ use tokio::sync::RwLock; pub use version_1::{app_sql::*, trash_sql::*, v1_impl::V1Transaction, view_sql::*, workspace_sql::*}; use crate::{ - controller::FolderId, event_map::WorkspaceDatabase, + manager::FolderId, services::{folder_editor::ClientFolderEditor, persistence::migration::FolderMigration}, }; use flowy_error::{FlowyError, FlowyResult}; diff --git a/frontend/rust-lib/flowy-folder/src/services/view/controller.rs b/frontend/rust-lib/flowy-folder/src/services/view/controller.rs index 57cdeba7d1..e9c16cce16 100644 --- a/frontend/rust-lib/flowy-folder/src/services/view/controller.rs +++ b/frontend/rust-lib/flowy-folder/src/services/view/controller.rs @@ -23,8 +23,6 @@ use crate::{ }; use flowy_block::BlockManager; use flowy_database::kv::KV; -use flowy_folder_data_model::entities::share::{ExportData, ExportParams}; - use lib_infra::uuid; const LATEST_VIEW_ID: &str = "latest_view_id"; @@ -179,16 +177,6 @@ impl ViewController { Ok(()) } - #[tracing::instrument(level = "debug", skip(self, params), err)] - pub(crate) async fn export_view(&self, params: ExportParams) -> Result { - let editor = self.block_manager.open_block(¶ms.view_id).await?; - let delta_json = editor.block_json().await?; - Ok(ExportData { - data: delta_json, - export_type: params.export_type, - }) - } - // belong_to_id will be the app_id or view_id. #[tracing::instrument(level = "debug", skip(self), err)] pub(crate) async fn read_views_belong_to(&self, belong_to_id: &str) -> Result { diff --git a/frontend/rust-lib/flowy-folder/src/services/view/event_handler.rs b/frontend/rust-lib/flowy-folder/src/services/view/event_handler.rs index 002a2ac24f..bde232623d 100644 --- a/frontend/rust-lib/flowy-folder/src/services/view/event_handler.rs +++ b/frontend/rust-lib/flowy-folder/src/services/view/event_handler.rs @@ -9,7 +9,6 @@ use crate::{ services::{TrashController, ViewController}, }; use flowy_collaboration::entities::document_info::BlockDelta; -use flowy_folder_data_model::entities::share::{ExportData, ExportParams, ExportPayload}; use lib_dispatch::prelude::{data_result, AppData, Data, DataResult}; use std::{convert::TryInto, sync::Arc}; @@ -46,14 +45,6 @@ pub(crate) async fn update_view_handler( Ok(()) } -pub(crate) async fn block_delta_handler( - data: Data, - controller: AppData>, -) -> DataResult { - let block_delta = controller.receive_delta(data.into_inner()).await?; - data_result(block_delta) -} - pub(crate) async fn delete_view_handler( data: Data, view_controller: AppData>, @@ -102,13 +93,3 @@ pub(crate) async fn duplicate_view_handler( let _ = controller.duplicate_view(&view_id.value).await?; Ok(()) } - -#[tracing::instrument(skip(data, controller), err)] -pub(crate) async fn export_handler( - data: Data, - controller: AppData>, -) -> DataResult { - let params: ExportParams = data.into_inner().try_into()?; - let data = controller.export_view(params).await?; - data_result(data) -} diff --git a/frontend/rust-lib/flowy-folder/src/services/workspace/event_handler.rs b/frontend/rust-lib/flowy-folder/src/services/workspace/event_handler.rs index 5b464f25e4..02034750ee 100644 --- a/frontend/rust-lib/flowy-folder/src/services/workspace/event_handler.rs +++ b/frontend/rust-lib/flowy-folder/src/services/workspace/event_handler.rs @@ -1,7 +1,7 @@ use crate::{ - controller::FolderManager, dart_notification::{send_dart_notification, FolderNotification}, errors::FlowyError, + manager::FolderManager, services::{get_current_workspace, read_local_workspace_apps, WorkspaceController}, }; use flowy_folder_data_model::entities::{ diff --git a/frontend/rust-lib/flowy-sdk/Cargo.toml b/frontend/rust-lib/flowy-sdk/Cargo.toml index 5f0de22ecd..c20b1cda62 100644 --- a/frontend/rust-lib/flowy-sdk/Cargo.toml +++ b/frontend/rust-lib/flowy-sdk/Cargo.toml @@ -13,7 +13,7 @@ flowy-net = { path = "../flowy-net" } flowy-folder = { path = "../flowy-folder", default-features = false } flowy-grid = { path = "../flowy-grid", default-features = false } flowy-database = { path = "../flowy-database" } -flowy-block = { path = "../flowy-block" } +flowy-block = { path = "../flowy-block", default-features = false } flowy-sync = { path = "../flowy-sync" } tracing = { version = "0.1" } @@ -40,4 +40,4 @@ futures-util = "0.3.15" [features] http_server = ["flowy-user/http_server", "flowy-folder/http_server", "flowy-block/http_server"] use_bunyan = ["lib-log/use_bunyan"] -dart = ["flowy-user/dart", "flowy-net/dart", "flowy-folder/dart", "flowy-collaboration/dart", "flowy-grid/dart"] +dart = ["flowy-user/dart", "flowy-net/dart", "flowy-folder/dart", "flowy-collaboration/dart", "flowy-grid/dart", "flowy-block/dart"] diff --git a/frontend/rust-lib/flowy-sdk/src/deps_resolve/folder_deps.rs b/frontend/rust-lib/flowy-sdk/src/deps_resolve/folder_deps.rs index 3a791888ff..9e79c8c477 100644 --- a/frontend/rust-lib/flowy-sdk/src/deps_resolve/folder_deps.rs +++ b/frontend/rust-lib/flowy-sdk/src/deps_resolve/folder_deps.rs @@ -3,9 +3,9 @@ use flowy_block::BlockManager; use flowy_collaboration::entities::ws_data::ClientRevisionWSData; use flowy_database::ConnectionPool; use flowy_folder::{ - controller::FolderManager, errors::{internal_error, FlowyError}, event_map::{FolderCouldServiceV1, WorkspaceDatabase, WorkspaceUser}, + manager::FolderManager, }; use flowy_net::ClientServerConfiguration; use flowy_net::{ @@ -24,7 +24,7 @@ impl FolderDepsResolver { local_server: Option>, user_session: Arc, server_config: &ClientServerConfiguration, - document_manager: &Arc, + block_manager: &Arc, ws_conn: Arc, ) -> Arc { let user: Arc = Arc::new(WorkspaceUserImpl(user_session.clone())); @@ -36,14 +36,7 @@ impl FolderDepsResolver { }; let folder_manager = Arc::new( - FolderManager::new( - user.clone(), - cloud_service, - database, - document_manager.clone(), - web_socket, - ) - .await, + FolderManager::new(user.clone(), cloud_service, database, block_manager.clone(), web_socket).await, ); if let (Ok(user_id), Ok(token)) = (user.user_id(), user.token()) { diff --git a/frontend/rust-lib/flowy-sdk/src/lib.rs b/frontend/rust-lib/flowy-sdk/src/lib.rs index 5ea59b176d..2390601fce 100644 --- a/frontend/rust-lib/flowy-sdk/src/lib.rs +++ b/frontend/rust-lib/flowy-sdk/src/lib.rs @@ -4,7 +4,7 @@ pub use flowy_net::get_client_server_configuration; use crate::deps_resolve::*; use flowy_block::BlockManager; -use flowy_folder::{controller::FolderManager, errors::FlowyError}; +use flowy_folder::{errors::FlowyError, manager::FolderManager}; use flowy_grid::manager::GridManager; use flowy_net::ClientServerConfiguration; use flowy_net::{ @@ -87,7 +87,7 @@ pub struct FlowySDK { #[allow(dead_code)] config: FlowySDKConfig, pub user_session: Arc, - pub document_manager: Arc, + pub block_manager: Arc, pub folder_manager: Arc, pub grid_manager: Arc, pub dispatcher: Arc, @@ -102,9 +102,9 @@ impl FlowySDK { tracing::debug!("🔥 {:?}", config); let runtime = tokio_default_runtime().unwrap(); let (local_server, ws_conn) = mk_local_server(&config.server_config); - let (user_session, document_manager, folder_manager, local_server, grid_manager) = runtime.block_on(async { + let (user_session, block_manager, folder_manager, local_server, grid_manager) = runtime.block_on(async { let user_session = mk_user_session(&config, &local_server, &config.server_config); - let document_manager = BlockDepsResolver::resolve( + let block_manager = BlockDepsResolver::resolve( local_server.clone(), ws_conn.clone(), user_session.clone(), @@ -115,7 +115,7 @@ impl FlowySDK { local_server.clone(), user_session.clone(), &config.server_config, - &document_manager, + &block_manager, ws_conn.clone(), ) .await; @@ -126,17 +126,11 @@ impl FlowySDK { local_server.run(); } ws_conn.init().await; - ( - user_session, - document_manager, - folder_manager, - local_server, - grid_manager, - ) + (user_session, block_manager, folder_manager, local_server, grid_manager) }); let dispatcher = Arc::new(EventDispatcher::construct(runtime, || { - mk_modules(&ws_conn, &folder_manager, &grid_manager, &user_session) + mk_modules(&ws_conn, &folder_manager, &grid_manager, &user_session, &block_manager) })); _start_listening(&dispatcher, &ws_conn, &user_session, &folder_manager); @@ -144,7 +138,7 @@ impl FlowySDK { Self { config, user_session, - document_manager, + block_manager, folder_manager, grid_manager, dispatcher, diff --git a/frontend/rust-lib/flowy-sdk/src/module.rs b/frontend/rust-lib/flowy-sdk/src/module.rs index 27d9c8dd8c..17179aa59c 100644 --- a/frontend/rust-lib/flowy-sdk/src/module.rs +++ b/frontend/rust-lib/flowy-sdk/src/module.rs @@ -1,4 +1,5 @@ -use flowy_folder::controller::FolderManager; +use flowy_block::BlockManager; +use flowy_folder::manager::FolderManager; use flowy_grid::manager::GridManager; use flowy_net::ws::connection::FlowyWebSocketConnect; use flowy_user::services::UserSession; @@ -10,6 +11,7 @@ pub fn mk_modules( folder_manager: &Arc, grid_manager: &Arc, user_session: &Arc, + block_manager: &Arc, ) -> Vec { let user_module = mk_user_module(user_session.clone()); let folder_module = mk_folder_module(folder_manager.clone()); @@ -33,3 +35,7 @@ fn mk_network_module(ws_conn: Arc) -> Module { fn mk_grid_module(grid_manager: Arc) -> Module { flowy_grid::event_map::create(grid_manager) } + +fn mk_block_module(block_manager: Arc) -> Module { + flowy_block::event_map::create(block_manager) +} diff --git a/shared-lib/flowy-folder-data-model/src/entities/mod.rs b/shared-lib/flowy-folder-data-model/src/entities/mod.rs index a8388db4a3..3ee0f4b591 100644 --- a/shared-lib/flowy-folder-data-model/src/entities/mod.rs +++ b/shared-lib/flowy-folder-data-model/src/entities/mod.rs @@ -1,5 +1,4 @@ pub mod app; -pub mod share; pub mod trash; pub mod view; pub mod workspace; diff --git a/shared-lib/flowy-folder-data-model/src/protobuf/model/mod.rs b/shared-lib/flowy-folder-data-model/src/protobuf/model/mod.rs index fae1a91d08..d12cb83589 100644 --- a/shared-lib/flowy-folder-data-model/src/protobuf/model/mod.rs +++ b/shared-lib/flowy-folder-data-model/src/protobuf/model/mod.rs @@ -1,9 +1,6 @@ #![cfg_attr(rustfmt, rustfmt::skip)] // Auto-generated, do not edit -mod share; -pub use share::*; - mod app; pub use app::*;