mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-10-31 01:54:37 +00:00 
			
		
		
		
	
		
			
	
	
		
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
		
		
			
		
	
	
			65 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
|   | import 'package:appflowy/user/application/user_service.dart'; | ||
|  | import 'package:appflowy_backend/log.dart'; | ||
|  | import 'package:appflowy_backend/protobuf/flowy-error/code.pb.dart'; | ||
|  | import 'package:appflowy_backend/protobuf/flowy-user/user_profile.pb.dart'; | ||
|  | import 'package:flutter_bloc/flutter_bloc.dart'; | ||
|  | import 'package:freezed_annotation/freezed_annotation.dart'; | ||
|  | 
 | ||
|  | part 'anon_user_bloc.freezed.dart'; | ||
|  | 
 | ||
|  | class AnonUserBloc extends Bloc<AnonUserEvent, AnonUserState> { | ||
|  |   AnonUserBloc() : super(AnonUserState.initial()) { | ||
|  |     on<AnonUserEvent>((event, emit) async { | ||
|  |       await event.when( | ||
|  |         initial: () async { | ||
|  |           await _loadHistoricalUsers(); | ||
|  |         }, | ||
|  |         didLoadAnonUsers: (List<UserProfilePB> anonUsers) { | ||
|  |           emit(state.copyWith(anonUsers: anonUsers)); | ||
|  |         }, | ||
|  |         openAnonUser: (anonUser) async { | ||
|  |           await UserBackendService.openAnonUser(); | ||
|  |           emit(state.copyWith(openedAnonUser: anonUser)); | ||
|  |         }, | ||
|  |       ); | ||
|  |     }); | ||
|  |   } | ||
|  | 
 | ||
|  |   Future<void> _loadHistoricalUsers() async { | ||
|  |     final result = await UserBackendService.getAnonUser(); | ||
|  |     result.fold( | ||
|  |       (anonUser) { | ||
|  |         add(AnonUserEvent.didLoadAnonUsers([anonUser])); | ||
|  |       }, | ||
|  |       (error) { | ||
|  |         if (error.code != ErrorCode.RecordNotFound) { | ||
|  |           Log.error(error); | ||
|  |         } | ||
|  |       }, | ||
|  |     ); | ||
|  |   } | ||
|  | } | ||
|  | 
 | ||
|  | @freezed | ||
|  | class AnonUserEvent with _$AnonUserEvent { | ||
|  |   const factory AnonUserEvent.initial() = _Initial; | ||
|  |   const factory AnonUserEvent.didLoadAnonUsers( | ||
|  |     List<UserProfilePB> historicalUsers, | ||
|  |   ) = _DidLoadHistoricalUsers; | ||
|  |   const factory AnonUserEvent.openAnonUser(UserProfilePB anonUser) = | ||
|  |       _OpenHistoricalUser; | ||
|  | } | ||
|  | 
 | ||
|  | @freezed | ||
|  | class AnonUserState with _$AnonUserState { | ||
|  |   const factory AnonUserState({ | ||
|  |     required List<UserProfilePB> anonUsers, | ||
|  |     required UserProfilePB? openedAnonUser, | ||
|  |   }) = _AnonUserState; | ||
|  | 
 | ||
|  |   factory AnonUserState.initial() => const AnonUserState( | ||
|  |         anonUsers: [], | ||
|  |         openedAnonUser: null, | ||
|  |       ); | ||
|  | } |