diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart index 72789a1366..8767b0c8c4 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart @@ -1,6 +1,6 @@ /// Auto generate. Do not edit -part of 'dispatch.dart'; +part of '../../dispatch.dart'; class FolderEventCreateWorkspace { CreateWorkspaceRequest request; FolderEventCreateWorkspace(this.request); diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-folder/dart_event.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-folder/dart_event.dart new file mode 100644 index 0000000000..21f7f3c598 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-folder/dart_event.dart @@ -0,0 +1,413 @@ + +/// Auto generate. Do not edit +part of '../../dispatch.dart'; +class FolderEventCreateWorkspace { + CreateWorkspaceRequest request; + FolderEventCreateWorkspace(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.CreateWorkspace.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(Workspace.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadCurWorkspace { + FolderEventReadCurWorkspace(); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadCurWorkspace.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (okBytes) => left(CurrentWorkspaceSetting.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadWorkspaces { + QueryWorkspaceRequest request; + FolderEventReadWorkspaces(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadWorkspaces.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(RepeatedWorkspace.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDeleteWorkspace { + QueryWorkspaceRequest request; + FolderEventDeleteWorkspace(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DeleteWorkspace.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventOpenWorkspace { + QueryWorkspaceRequest request; + FolderEventOpenWorkspace(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.OpenWorkspace.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(Workspace.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadWorkspaceApps { + QueryWorkspaceRequest request; + FolderEventReadWorkspaceApps(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadWorkspaceApps.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(RepeatedApp.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventCreateApp { + CreateAppRequest request; + FolderEventCreateApp(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.CreateApp.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(App.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDeleteApp { + QueryAppRequest request; + FolderEventDeleteApp(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DeleteApp.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadApp { + QueryAppRequest request; + FolderEventReadApp(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadApp.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(App.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventUpdateApp { + UpdateAppRequest request; + FolderEventUpdateApp(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.UpdateApp.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventCreateView { + CreateViewRequest request; + FolderEventCreateView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.CreateView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(View.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadView { + QueryViewRequest request; + FolderEventReadView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(View.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventUpdateView { + UpdateViewRequest request; + FolderEventUpdateView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.UpdateView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(View.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDeleteView { + QueryViewRequest request; + FolderEventDeleteView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DeleteView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDuplicateView { + QueryViewRequest request; + FolderEventDuplicateView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DuplicateView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventCopyLink { + FolderEventCopyLink(); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.CopyLink.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventOpenDocument { + QueryViewRequest request; + FolderEventOpenDocument(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.OpenDocument.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(DocumentDelta.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventCloseView { + QueryViewRequest request; + FolderEventCloseView(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.CloseView.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventReadTrash { + FolderEventReadTrash(); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ReadTrash.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (okBytes) => left(RepeatedTrash.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventPutbackTrash { + TrashId request; + FolderEventPutbackTrash(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.PutbackTrash.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDeleteTrash { + RepeatedTrashId request; + FolderEventDeleteTrash(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DeleteTrash.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventRestoreAllTrash { + FolderEventRestoreAllTrash(); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.RestoreAllTrash.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventDeleteAllTrash { + FolderEventDeleteAllTrash(); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.DeleteAllTrash.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventApplyDocDelta { + DocumentDelta request; + FolderEventApplyDocDelta(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.ApplyDocDelta.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(DocumentDelta.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class FolderEventExportDocument { + ExportRequest request; + FolderEventExportDocument(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = FolderEvent.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/dart_event/flowy-net/dart_event.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-net/dart_event.dart new file mode 100644 index 0000000000..19f1bd0f09 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-net/dart_event.dart @@ -0,0 +1,20 @@ + +/// Auto generate. Do not edit +part of '../../dispatch.dart'; +class NetworkEventUpdateNetworkType { + NetworkState request; + NetworkEventUpdateNetworkType(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = NetworkEvent.UpdateNetworkType.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + diff --git a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-user/dart_event.dart b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-user/dart_event.dart new file mode 100644 index 0000000000..c40fdd5a02 --- /dev/null +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-user/dart_event.dart @@ -0,0 +1,141 @@ + +/// Auto generate. Do not edit +part of '../../dispatch.dart'; +class UserEventInitUser { + UserEventInitUser(); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.InitUser.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventSignIn { + SignInRequest request; + UserEventSignIn(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.SignIn.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(UserProfile.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventSignUp { + SignUpRequest request; + UserEventSignUp(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.SignUp.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (okBytes) => left(UserProfile.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventSignOut { + UserEventSignOut(); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.SignOut.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventUpdateUser { + UpdateUserRequest request; + UserEventUpdateUser(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.UpdateUser.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventGetUserProfile { + UserEventGetUserProfile(); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.GetUserProfile.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (okBytes) => left(UserProfile.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventCheckUser { + UserEventCheckUser(); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.CheckUser.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (okBytes) => left(UserProfile.fromBuffer(okBytes)), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventSetAppearanceSetting { + AppearanceSettings request; + UserEventSetAppearanceSetting(this.request); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.SetAppearanceSetting.toString() + ..payload = requestToBytes(this.request); + + return Dispatch.asyncRequest(request) + .then((bytesResult) => bytesResult.fold( + (bytes) => left(unit), + (errBytes) => right(FlowyError.fromBuffer(errBytes)), + )); + } +} + +class UserEventGetAppearanceSetting { + UserEventGetAppearanceSetting(); + + Future> send() { + final request = FFIRequest.create() + ..event = UserEvent.GetAppearanceSetting.toString(); + + return Dispatch.asyncRequest(request).then((bytesResult) => bytesResult.fold( + (okBytes) => left(AppearanceSettings.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 40c7a06867..a376f7d3b0 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dispatch.dart @@ -27,7 +27,9 @@ import 'package:protobuf/protobuf.dart'; import 'dart:convert' show utf8; import 'error.dart'; -part 'dart_event.dart'; +part 'dart_event/flowy-folder/dart_event.dart'; +part 'dart_event/flowy-net/dart_event.dart'; +part 'dart_event/flowy-user/dart_event.dart'; enum FFIException { RequestIsEmpty, diff --git a/frontend/rust-lib/dart-ffi/build.rs b/frontend/rust-lib/dart-ffi/build.rs index 91c656ce10..7f06ab48c8 100644 --- a/frontend/rust-lib/dart-ffi/build.rs +++ b/frontend/rust-lib/dart-ffi/build.rs @@ -1,17 +1,5 @@ use lib_infra::code_gen; -use lib_infra::code_gen::dart_event; fn main() { code_gen::protobuf_file::gen(env!("CARGO_PKG_NAME"), "./src/protobuf/proto"); - #[cfg(feature = "flutter")] - copy_dart_event_files(); -} - -#[cfg(feature = "flutter")] -fn copy_dart_event_files() { - let workspace_dir = std::env::var("CARGO_MAKE_WORKING_DIRECTORY").unwrap(); - let flutter_sdk_path = std::env::var("FLUTTER_FLOWY_SDK_PATH").unwrap(); - let output_file = format!("{}/{}/lib/dispatch/dart_event.dart", workspace_dir, flutter_sdk_path); - println!("cargo:rerun-if-changed={}", output_file); - dart_event::write_dart_event_file(&output_file); } diff --git a/shared-lib/lib-infra/src/code_gen/dart_event/dart_event.rs b/shared-lib/lib-infra/src/code_gen/dart_event/dart_event.rs index 4f21256661..2e8845bf15 100644 --- a/shared-lib/lib-infra/src/code_gen/dart_event/dart_event.rs +++ b/shared-lib/lib-infra/src/code_gen/dart_event/dart_event.rs @@ -4,6 +4,7 @@ use crate::code_gen::util::{cache_dir, is_crate_dir, is_hidden, read_file}; use flowy_ast::{event_ast::*, *}; use std::fs::File; use std::io::Write; +use std::path::Path; use syn::Item; use walkdir::WalkDir; @@ -13,7 +14,7 @@ pub fn gen(crate_name: &str) { let event_ast = event_crates.iter().map(parse_event_crate).flatten().collect::>(); let event_render_ctx = ast_to_event_render_ctx(event_ast.as_ref()); - let mut render_result = String::new(); + let mut render_result = DART_IMPORTED.to_owned(); for (index, render_ctx) in event_render_ctx.into_iter().enumerate() { let mut event_template = EventTemplate::new(); @@ -22,8 +23,19 @@ pub fn gen(crate_name: &str) { } } - let cache_dir = format!("{}/{}", cache_dir(), crate_name); - let dart_event_file_path = format!("{}/dart_event.dart", cache_dir); + let dart_event_folder = format!( + "{}/{}/lib/dispatch/dart_event/{}", + env!("CARGO_MAKE_WORKING_DIRECTORY"), + env!("FLUTTER_FLOWY_SDK_PATH"), + crate_name + ); + + if !Path::new(&dart_event_folder).exists() { + std::fs::create_dir_all(&dart_event_folder).unwrap(); + } + + let dart_event_file_path = format!("{}/dart_event.dart", dart_event_folder); + println!("cargo:rerun-if-changed={}", dart_event_file_path); match std::fs::OpenOptions::new() .create(true) @@ -44,7 +56,7 @@ pub fn gen(crate_name: &str) { const DART_IMPORTED: &str = r#" /// Auto generate. Do not edit -part of 'dispatch.dart'; +part of '../../dispatch.dart'; "#; pub fn write_dart_event_file(file_path: &str) {