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/flowy-folder/dart_event.dart similarity index 72% rename from frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart rename to frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-folder/dart_event.dart index 72789a1366..21f7f3c598 100644 --- a/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event.dart +++ b/frontend/app_flowy/packages/flowy_sdk/lib/dispatch/dart_event/flowy-folder/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); @@ -411,158 +411,3 @@ class FolderEventExportDocument { } } -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)), - )); - } -} - -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/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..afb089458b 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,16 +4,27 @@ 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; pub fn gen(crate_name: &str) { + if std::env::var("CARGO_MAKE_WORKING_DIRECTORY").is_err() { + log::warn!("CARGO_MAKE_WORKING_DIRECTORY was not set, skip generate dart pb"); + return; + } + + if std::env::var("FLUTTER_FLOWY_SDK_PATH").is_err() { + log::warn!("FLUTTER_FLOWY_SDK_PATH was not set, skip generate dart pb"); + return; + } + let crate_path = std::fs::canonicalize(".").unwrap().as_path().display().to_string(); let event_crates = parse_dart_event_files(vec![crate_path]); 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 +33,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/{}", + std::env::var("CARGO_MAKE_WORKING_DIRECTORY").unwrap(), + std::env::var("FLUTTER_FLOWY_SDK_PATH").unwrap(), + 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 +66,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) {