helper.dart 1003 B

1234567891011121314151617181920212223242526272829303132333435
  1. import 'dart:typed_data';
  2. import 'package:flowy_sdk/protobuf/flowy-observable/protobuf.dart';
  3. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  4. import 'package:flowy_sdk/protobuf/flowy-workspace/observable.pb.dart';
  5. import 'package:dartz/dartz.dart';
  6. class ObservableExtractor {
  7. String id;
  8. void Function(WorkspaceObservable, Either<Uint8List, WorkspaceError>)
  9. callback;
  10. ObservableExtractor({required this.id, required this.callback});
  11. void parse(ObservableSubject subject) {
  12. if (subject.id != id) {
  13. return;
  14. }
  15. final ty = WorkspaceObservable.valueOf(subject.ty);
  16. if (ty == null) {
  17. return;
  18. }
  19. if (subject.hasPayload()) {
  20. final bytes = Uint8List.fromList(subject.error);
  21. callback(ty, left(bytes));
  22. } else if (subject.hasError()) {
  23. final bytes = Uint8List.fromList(subject.error);
  24. final error = WorkspaceError.fromBuffer(bytes);
  25. callback(ty, right(error));
  26. } else {
  27. // do nothing
  28. }
  29. }
  30. }