i_view_impl.dart 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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_infra/notifier.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  5. import 'package:dartz/dartz.dart';
  6. import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
  7. class IViewImpl extends IView {
  8. ViewRepository repo;
  9. IViewImpl({required this.repo});
  10. @override
  11. View get view => repo.view;
  12. @override
  13. Future<Either<Unit, WorkspaceError>> delete() {
  14. return repo.delete().then((result) {
  15. return result.fold(
  16. (_) => left(unit),
  17. (error) => right(error),
  18. );
  19. });
  20. }
  21. @override
  22. Future<Either<View, WorkspaceError>> rename(String newName) {
  23. return repo.updateView(name: newName);
  24. }
  25. @override
  26. Future<Either<Unit, WorkspaceError>> duplicate() {
  27. return repo.duplicate();
  28. }
  29. }
  30. class IViewListenerImpl extends IViewListener {
  31. final ViewListenerRepository repo;
  32. IViewListenerImpl({
  33. required this.repo,
  34. });
  35. @override
  36. void start() {
  37. repo.start();
  38. }
  39. @override
  40. Future<void> stop() async {
  41. await repo.close();
  42. }
  43. @override
  44. PublishNotifier<DeleteNotifierValue> get deletedNotifier => repo.deletedNotifier;
  45. @override
  46. PublishNotifier<UpdateNotifierValue> get updatedNotifier => repo.updatedNotifier;
  47. @override
  48. PublishNotifier<RestoreNotifierValue> get restoredNotifier => repo.updatedNotifier;
  49. }