view_bloc.dart 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:dartz/dartz.dart';
  2. import 'package:flowy_sdk/protobuf/flowy-workspace/errors.pb.dart';
  3. import 'package:flowy_sdk/protobuf/flowy-workspace/view_create.pb.dart';
  4. import 'package:flutter_bloc/flutter_bloc.dart';
  5. import 'package:freezed_annotation/freezed_annotation.dart';
  6. import 'package:app_flowy/workspace/domain/i_view.dart';
  7. part 'view_bloc.freezed.dart';
  8. class ViewBloc extends Bloc<ViewEvent, ViewState> {
  9. final IView iViewImpl;
  10. ViewBloc({
  11. required this.iViewImpl,
  12. }) : super(ViewState.initial());
  13. @override
  14. Stream<ViewState> mapEventToState(ViewEvent event) async* {
  15. yield* event.map(initial: (_) async* {
  16. yield state;
  17. });
  18. }
  19. }
  20. @freezed
  21. abstract class ViewEvent with _$ViewEvent {
  22. const factory ViewEvent.initial() = Initial;
  23. }
  24. @freezed
  25. abstract class ViewState implements _$ViewState {
  26. const factory ViewState({
  27. required bool isLoading,
  28. required Option<View> view,
  29. required Either<Unit, WorkspaceError> successOrFailure,
  30. }) = _ViewState;
  31. factory ViewState.initial() => ViewState(
  32. isLoading: false,
  33. view: none(),
  34. successOrFailure: left(unit),
  35. );
  36. }