i_view_impl.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import 'package:app_flowy/workspace/domain/i_view.dart';
  2. import 'package:app_flowy/workspace/infrastructure/repos/view_repo.dart';
  3. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  4. import 'package:dartz/dartz.dart';
  5. import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
  6. class IViewImpl extends IView {
  7. ViewRepository repo;
  8. IViewImpl({required this.repo});
  9. @override
  10. View get view => repo.view;
  11. @override
  12. Future<Either<Unit, WorkspaceError>> delete() {
  13. return repo.delete().then((result) {
  14. return result.fold(
  15. (_) => left(unit),
  16. (error) => right(error),
  17. );
  18. });
  19. }
  20. @override
  21. Future<Either<View, WorkspaceError>> rename(String newName) {
  22. return repo.updateView(name: newName);
  23. }
  24. @override
  25. Future<Either<Unit, WorkspaceError>> duplicate() {
  26. return repo.duplicate();
  27. }
  28. }
  29. class IViewListenerImpl extends IViewListener {
  30. final ViewListenerRepository repo;
  31. IViewListenerImpl({
  32. required this.repo,
  33. });
  34. @override
  35. void start({ViewUpdatedCallback? updatedCallback}) {
  36. repo.startWatching(update: updatedCallback);
  37. }
  38. @override
  39. Future<void> stop() async {
  40. await repo.close();
  41. }
  42. }