import 'package:stream_chatter/data/stream_api_repository.dart'; import 'package:stream_chatter/domain/models/chat_user.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:stream_chat_flutter/stream_chat_flutter.dart'; class ChatUserState { const ChatUserState(this.chatUser, {this.selected = false}); final ChatUser chatUser; final bool selected; } class FriendsSelectionCubit extends Cubit> { FriendsSelectionCubit(this._streamApiRepository) : super([]); final StreamApiRepository _streamApiRepository; List get selectedUsers => state.where((element) => element.selected).toList(); Future init() async { final chatUsers = (await _streamApiRepository.getChatUsers()).map((e) => ChatUserState(e)).toList(); emit(chatUsers); } void selectUser(ChatUserState chatUser) { final index = state.indexWhere((element) => element.chatUser.id == chatUser.chatUser.id); state[index] = ChatUserState(state[index].chatUser, selected: !chatUser.selected); emit(List.from(state)); } Future createFriendChannel(ChatUserState chatUserState) async { return await _streamApiRepository.createSimpleChat(chatUserState.chatUser.id); } } class FriendsGroupCubit extends Cubit { FriendsGroupCubit() : super(false); void changeToGroup() => emit(!state); }