* app updated * readme updated * rename base folder * update chatty's readme Co-authored-by: Neevash Ramdial <[email protected]>
39 lines
1.3 KiB
Dart
39 lines
1.3 KiB
Dart
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<List<ChatUserState>> {
|
|
FriendsSelectionCubit(this._streamApiRepository) : super([]);
|
|
final StreamApiRepository _streamApiRepository;
|
|
|
|
List<ChatUserState> get selectedUsers => state.where((element) => element.selected).toList();
|
|
|
|
Future<void> 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<ChatUserState>.from(state));
|
|
}
|
|
|
|
Future<Channel> createFriendChannel(ChatUserState chatUserState) async {
|
|
return await _streamApiRepository.createSimpleChat(chatUserState.chatUser.id);
|
|
}
|
|
}
|
|
|
|
class FriendsGroupCubit extends Cubit<bool> {
|
|
FriendsGroupCubit() : super(false);
|
|
|
|
void changeToGroup() => emit(!state);
|
|
}
|