| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | import 'package:app_flowy/workspace/domain/i_user.dart';import 'package:flowy_sdk/protobuf/flowy-user/user_profile.pb.dart';import 'package:flowy_sdk/protobuf/flowy-workspace/workspace_create.pb.dart';import 'package:flutter_bloc/flutter_bloc.dart';import 'package:freezed_annotation/freezed_annotation.dart';import 'package:dartz/dartz.dart';part 'menu_user_bloc.freezed.dart';class MenuUserBloc extends Bloc<MenuUserEvent, MenuUserState> {  final IUser iUserImpl;  MenuUserBloc(this.iUserImpl) : super(MenuUserState.initial(iUserImpl.user));  @override  Stream<MenuUserState> mapEventToState(MenuUserEvent event) async* {    yield* event.map(      initial: (_) async* {        // fetch workspaces        iUserImpl.fetchWorkspaces().then((result) {          result.fold(            (workspaces) async* {              yield state.copyWith(workspaces: some(workspaces));            },            (error) async* {              yield state.copyWith(successOrFailure: right(error.msg));            },          );        });      },      fetchWorkspaces: (_FetchWorkspaces value) async* {},    );  }  @override  Future<void> close() async {    super.close();  }}@freezedclass MenuUserEvent with _$MenuUserEvent {  const factory MenuUserEvent.initial() = _Initial;  const factory MenuUserEvent.fetchWorkspaces() = _FetchWorkspaces;}@freezedclass MenuUserState with _$MenuUserState {  const factory MenuUserState({    required UserProfile user,    required Option<List<Workspace>> workspaces,    required Either<Unit, String> successOrFailure,  }) = _MenuUserState;  factory MenuUserState.initial(UserProfile user) => MenuUserState(        user: user,        workspaces: none(),        successOrFailure: left(unit),      );}
 |