i_workspace_impl.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import 'package:app_flowy/workspace/domain/i_workspace.dart';
  2. import 'package:app_flowy/workspace/infrastructure/repos/workspace_repo.dart';
  3. import 'package:dartz/dartz.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-workspace/app_create.pb.dart';
  5. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  6. export 'package:app_flowy/workspace/domain/i_workspace.dart';
  7. class IWorkspaceImpl extends IWorkspace {
  8. WorkspaceRepo repo;
  9. IWorkspaceImpl({
  10. required this.repo,
  11. });
  12. @override
  13. Future<Either<App, WorkspaceError>> createApp({required String name, String? desc}) {
  14. return repo.createApp(name, desc ?? "");
  15. }
  16. @override
  17. Future<Either<List<App>, WorkspaceError>> getApps() {
  18. return repo.getApps().then((result) {
  19. return result.fold(
  20. (apps) => left(apps),
  21. (error) => right(error),
  22. );
  23. });
  24. }
  25. }
  26. class IWorkspaceListenerImpl extends IWorkspaceListener {
  27. WorkspaceListenerRepo repo;
  28. IWorkspaceListenerImpl({
  29. required this.repo,
  30. });
  31. @override
  32. void start({WorkspaceAppsChangedCallback? addAppCallback, WorkspaceUpdatedCallback? updatedCallback}) {
  33. repo.startListening(appsChanged: addAppCallback, update: updatedCallback);
  34. }
  35. @override
  36. Future<void> stop() async {
  37. await repo.close();
  38. }
  39. }