rust_sdk.dart 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 appFlowyDocumentDirectory();
  19. context.getIt<FlowySDK>().setEnv(getAppFlowyEnv());
  20. await context.getIt<FlowySDK>().init(dir);
  21. }
  22. }
  23. AppFlowyEnv getAppFlowyEnv() {
  24. final supabaseConfig = SupabaseConfiguration(
  25. url: Env.supabaseUrl,
  26. key: Env.supabaseKey,
  27. jwt_secret: Env.supabaseJwtSecret,
  28. );
  29. final collabTableConfig =
  30. CollabTableConfig(enable: true, table_name: Env.supabaseCollabTable);
  31. final supbaseDBConfig = SupabaseDBConfig(
  32. url: Env.supabaseUrl,
  33. key: Env.supabaseKey,
  34. jwt_secret: Env.supabaseJwtSecret,
  35. collab_table_config: collabTableConfig,
  36. );
  37. return AppFlowyEnv(
  38. supabase_config: supabaseConfig,
  39. supabase_db_config: supbaseDBConfig,
  40. );
  41. }
  42. Future<Directory> appFlowyDocumentDirectory() async {
  43. switch (integrationEnv()) {
  44. case IntegrationMode.develop:
  45. Directory documentsDir = await getApplicationSupportDirectory()
  46. ..create();
  47. return Directory(path.join(documentsDir.path, 'data_dev')).create();
  48. case IntegrationMode.release:
  49. Directory documentsDir = await getApplicationSupportDirectory();
  50. return Directory(path.join(documentsDir.path, 'data')).create();
  51. case IntegrationMode.test:
  52. return Directory(path.join(Directory.current.path, '.sandbox'));
  53. }
  54. }