historical_user_bloc.dart 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:appflowy/user/application/user_service.dart';
  2. import 'package:appflowy_backend/log.dart';
  3. import 'package:appflowy_backend/protobuf/flowy-user/auth.pb.dart';
  4. import 'package:appflowy_backend/protobuf/flowy-user/user_profile.pb.dart';
  5. import 'package:flutter_bloc/flutter_bloc.dart';
  6. import 'package:freezed_annotation/freezed_annotation.dart';
  7. part 'historical_user_bloc.freezed.dart';
  8. class HistoricalUserBloc
  9. extends Bloc<HistoricalUserEvent, HistoricalUserState> {
  10. HistoricalUserBloc() : super(HistoricalUserState.initial()) {
  11. on<HistoricalUserEvent>((event, emit) async {
  12. await event.when(
  13. initial: () async {
  14. await _loadHistoricalUsers();
  15. },
  16. didLoadHistoricalUsers: (List<HistoricalUserPB> historicalUsers) {
  17. emit(state.copyWith(historicalUsers: historicalUsers));
  18. },
  19. openHistoricalUser: (HistoricalUserPB historicalUser) async {
  20. await UserBackendService.openHistoricalUser(historicalUser);
  21. emit(state.copyWith(openedHistoricalUser: historicalUser));
  22. },
  23. );
  24. });
  25. }
  26. Future<void> _loadHistoricalUsers() async {
  27. final result = await UserBackendService.loadHistoricalUsers();
  28. result.fold(
  29. (historicalUsers) {
  30. historicalUsers
  31. .retainWhere((element) => element.authType == AuthTypePB.Local);
  32. add(HistoricalUserEvent.didLoadHistoricalUsers(historicalUsers));
  33. },
  34. (error) => Log.error(error),
  35. );
  36. }
  37. }
  38. @freezed
  39. class HistoricalUserEvent with _$HistoricalUserEvent {
  40. const factory HistoricalUserEvent.initial() = _Initial;
  41. const factory HistoricalUserEvent.didLoadHistoricalUsers(
  42. List<HistoricalUserPB> historicalUsers,
  43. ) = _DidLoadHistoricalUsers;
  44. const factory HistoricalUserEvent.openHistoricalUser(
  45. HistoricalUserPB historicalUser,
  46. ) = _OpenHistoricalUser;
  47. }
  48. @freezed
  49. class HistoricalUserState with _$HistoricalUserState {
  50. const factory HistoricalUserState({
  51. required List<HistoricalUserPB> historicalUsers,
  52. required HistoricalUserPB? openedHistoricalUser,
  53. }) = _HistoricalUserState;
  54. factory HistoricalUserState.initial() => const HistoricalUserState(
  55. historicalUsers: [],
  56. openedHistoricalUser: null,
  57. );
  58. }