i_app_impl.dart 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import 'package:app_flowy/workspace/infrastructure/repos/app_repo.dart';
  2. import 'package:app_flowy/workspace/infrastructure/repos/doc_repo.dart';
  3. import 'package:dartz/dartz.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  5. import 'package:app_flowy/workspace/domain/i_app.dart';
  6. import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
  7. export 'package:app_flowy/workspace/domain/i_app.dart';
  8. class IAppImpl extends IApp {
  9. AppRepository repo;
  10. IAppImpl({
  11. required this.repo,
  12. });
  13. @override
  14. Future<Either<List<View>, WorkspaceError>> getViews() {
  15. return repo.getViews();
  16. }
  17. @override
  18. Future<Either<View, WorkspaceError>> createView(
  19. {required String name, String? desc, required ViewType viewType}) {
  20. return repo.createView(name, desc ?? "", viewType).then((result) {
  21. return result.fold(
  22. (view) => _createDoc(view),
  23. (r) => right(r),
  24. );
  25. });
  26. }
  27. Future<Either<View, WorkspaceError>> _createDoc(View view) async {
  28. switch (view.viewType) {
  29. case ViewType.Doc:
  30. final docRepo = DocRepository(docId: view.id);
  31. final result = await docRepo.createDoc(name: view.name, desc: "");
  32. return result.fold((l) => left(view), (r) => left(view));
  33. default:
  34. return left(view);
  35. }
  36. }
  37. }
  38. class IAppWatchImpl extends IAppWatch {
  39. AppWatchRepository repo;
  40. IAppWatchImpl({
  41. required this.repo,
  42. });
  43. @override
  44. void startWatching(
  45. {AppAddViewCallback? addViewCallback,
  46. AppUpdatedCallback? updatedCallback}) {
  47. repo.startWatching(
  48. addViewCallback: addViewCallback, updatedCallback: updatedCallback);
  49. }
  50. @override
  51. Future<void> stopWatching() async {
  52. await repo.close();
  53. }
  54. }