rust_sdk.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'dart:io';
  2. import 'package:appflowy_backend/appflowy_backend.dart';
  3. import 'package:path_provider/path_provider.dart';
  4. import 'package:path/path.dart' as path;
  5. import '../startup.dart';
  6. class InitRustSDKTask extends LaunchTask {
  7. InitRustSDKTask({
  8. this.directory,
  9. });
  10. // Customize the RustSDK initialization path
  11. final Future<Directory>? directory;
  12. @override
  13. LaunchTaskType get type => LaunchTaskType.dataProcessing;
  14. @override
  15. Future<void> initialize(LaunchContext context) async {
  16. // use the custom directory
  17. if (directory != null) {
  18. return directory!.then((directory) async {
  19. await context.getIt<FlowySDK>().init(directory);
  20. });
  21. } else {
  22. return appFlowyDocumentDirectory().then((directory) async {
  23. await context.getIt<FlowySDK>().init(directory);
  24. });
  25. }
  26. }
  27. }
  28. Future<Directory> appFlowyDocumentDirectory() async {
  29. switch (integrationEnv()) {
  30. case IntegrationMode.develop:
  31. Directory documentsDir = await getApplicationDocumentsDirectory();
  32. return Directory(path.join(documentsDir.path, 'flowy_dev')).create();
  33. case IntegrationMode.release:
  34. Directory documentsDir = await getApplicationDocumentsDirectory();
  35. return Directory(path.join(documentsDir.path, 'flowy')).create();
  36. case IntegrationMode.test:
  37. return Directory(path.join(Directory.current.path, '.sandbox'));
  38. }
  39. }