rust_sdk.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import 'dart:io';
  2. import 'package:appflowy/env/env.dart';
  3. import 'package:appflowy_backend/appflowy_backend.dart';
  4. import 'package:appflowy_backend/env_serde.dart';
  5. import 'package:path_provider/path_provider.dart';
  6. import 'package:path/path.dart' as path;
  7. import '../startup.dart';
  8. class InitRustSDKTask extends LaunchTask {
  9. const InitRustSDKTask({
  10. this.directory,
  11. });
  12. // Customize the RustSDK initialization path
  13. final Directory? directory;
  14. @override
  15. LaunchTaskType get type => LaunchTaskType.dataProcessing;
  16. @override
  17. Future<void> initialize(LaunchContext context) async {
  18. final dir = directory ?? await appFlowyApplicationDataDirectory();
  19. final env = getAppFlowyEnv();
  20. context.getIt<FlowySDK>().setEnv(env);
  21. await context.getIt<FlowySDK>().init(dir);
  22. }
  23. }
  24. AppFlowyEnv getAppFlowyEnv() {
  25. final supabaseConfig = SupabaseConfiguration(
  26. enable_sync: true,
  27. url: Env.supabaseUrl,
  28. anon_key: Env.supabaseAnonKey,
  29. );
  30. final appflowyCloudConfig = AppFlowyCloudConfiguration(
  31. base_url: Env.afCloudBaseUrl,
  32. base_ws_url: Env.afCloudBaseWSUrl,
  33. );
  34. return AppFlowyEnv(
  35. supabase_config: supabaseConfig,
  36. appflowy_cloud_config: appflowyCloudConfig,
  37. );
  38. }
  39. /// The default directory to store the user data. The directory can be
  40. /// customized by the user via the [ApplicationDataStorage]
  41. Future<Directory> appFlowyApplicationDataDirectory() async {
  42. switch (integrationMode()) {
  43. case IntegrationMode.develop:
  44. final Directory documentsDir = await getApplicationSupportDirectory()
  45. ..create();
  46. return Directory(path.join(documentsDir.path, 'data_dev')).create();
  47. case IntegrationMode.release:
  48. final Directory documentsDir = await getApplicationSupportDirectory();
  49. return Directory(path.join(documentsDir.path, 'data')).create();
  50. case IntegrationMode.unitTest:
  51. case IntegrationMode.integrationTest:
  52. return Directory(path.join(Directory.current.path, '.sandbox'));
  53. }
  54. }