Отображение чатов

This commit is contained in:
Халимов Рустам
2026-05-14 22:56:42 +03:00
parent ccffc5a53c
commit 0b013def2e
29 changed files with 6365 additions and 842 deletions
@@ -1,23 +1,92 @@
import 'dart:async';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../domain/entities/chat.dart';
import '../../domain/entities/message.dart';
import '../../domain/repositories/chat_repository.dart';
import 'chat_event.dart';
import 'chat_state.dart';
class ChatBloc extends Bloc<ChatEvent, ChatState> {
ChatBloc() : super(const ChatState.initial()) {
final ChatRepository chatRepository;
StreamSubscription? _messageSubscription;
ChatBloc({required this.chatRepository}) : super(const ChatState.initial()) {
on<ChatEventStarted>(_onStarted);
on<ChatEventChatsLoaded>(_onChatsLoaded);
on<ChatEventChatSelected>(_onChatSelected);
on<ChatEventMessagesRequested>(_onMessagesRequested);
on<ChatEventMessageSent>(_onMessageSent);
on<ChatEventFavoritesRequested>(_onFavoritesRequested);
_messageSubscription = chatRepository.messageStream.listen((message) {
// Handle real-time messages
add(ChatEvent.messagesRequested(message.chatId));
});
}
Future<void> _onStarted(ChatEventStarted event, emit) async {
emit(const ChatState.loading());
emit(const ChatState.chatsLoaded([]));
Future<void> _onStarted(ChatEventStarted event, Emitter<ChatState> emit) async {
// Start SignalR in background
chatRepository.initSignalR().catchError((e) {
// Log or handle SignalR init error
});
// Immediately trigger chats loading
add(const ChatEvent.chatsLoaded());
}
Future<void> _onChatsLoaded(ChatEventChatsLoaded event, Emitter<ChatState> emit) async {
emit(const ChatState.loading());
final result = await chatRepository.getChats(currentUserId: event.currentUserId);
result.fold(
(error) => emit(ChatState.error(error.message ?? 'Failed to load chats')),
(chats) => emit(ChatState.chatsLoaded(chats)),
);
}
Future<void> _onChatSelected(ChatEventChatSelected event, Emitter<ChatState> emit) async {
emit(const ChatState.loading());
final chatResult = await chatRepository.getChatById(event.chatId);
final messagesResult = await chatRepository.getMessages(event.chatId);
Future<void> _onChatsLoaded(ChatEventChatsLoaded event, emit) async {}
Future<void> _onChatSelected(ChatEventChatSelected event, emit) async {}
Future<void> _onMessagesRequested(ChatEventMessagesRequested event, emit) async {}
Future<void> _onMessageSent(ChatEventMessageSent event, emit) async {}
chatResult.fold(
(error) => emit(ChatState.error(error.message ?? 'Failed to load chat')),
(chat) {
messagesResult.fold(
(error) => emit(ChatState.chatSelected(chat, [])),
(messages) => emit(ChatState.chatSelected(chat, messages)),
);
},
);
}
Future<void> _onMessagesRequested(ChatEventMessagesRequested event, Emitter<ChatState> emit) async {
final result = await chatRepository.getMessages(event.chatId);
result.fold(
(error) => emit(ChatState.error(error.message ?? 'Failed to load messages')),
(messages) => emit(ChatState.messagesLoaded(messages)),
);
}
Future<void> _onMessageSent(ChatEventMessageSent event, Emitter<ChatState> emit) async {
final result = await chatRepository.sendMessage(event.chatId, event.content);
result.fold(
(error) => emit(ChatState.error(error.message ?? 'Failed to send message')),
(_) => add(ChatEvent.messagesRequested(event.chatId)),
);
}
Future<void> _onFavoritesRequested(ChatEventFavoritesRequested event, Emitter<ChatState> emit) async {
emit(const ChatState.loading());
final result = await chatRepository.getOrCreateFavorites();
result.fold(
(error) => emit(ChatState.error(error.message ?? 'Failed to open Favorites')),
(chat) => add(ChatEvent.chatSelected(chat.id)),
);
}
@override
Future<void> close() {
_messageSubscription?.cancel();
chatRepository.disposeSignalR();
return super.close();
}
}
@@ -5,10 +5,9 @@ part 'chat_event.freezed.dart';
@freezed
class ChatEvent with _$ChatEvent {
const factory ChatEvent.started() = ChatEventStarted;
const factory ChatEvent.chatsLoaded() = ChatEventChatsLoaded;
const factory ChatEvent.chatsLoaded({String? currentUserId}) = ChatEventChatsLoaded;
const factory ChatEvent.chatSelected(String chatId) = ChatEventChatSelected;
const factory ChatEvent.messagesRequested(String chatId, {String? lastMessageId}) = ChatEventMessagesRequested;
const factory ChatEvent.messagesRequested(String chatId, {String? cursor}) = ChatEventMessagesRequested;
const factory ChatEvent.messageSent(String chatId, String content) = ChatEventMessageSent;
const factory ChatEvent.messageRead(String chatId, String messageId) = ChatEventMessageRead;
const factory ChatEvent.chatCreated(String title, List<String> participantIds) = ChatEventChatCreated;
const factory ChatEvent.favoritesRequested() = ChatEventFavoritesRequested;
}
File diff suppressed because it is too large Load Diff
@@ -1,4 +1,6 @@
import 'package:freezed_annotation/freezed_annotation.dart';
import '../../domain/entities/chat.dart';
import '../../domain/entities/message.dart';
part 'chat_state.freezed.dart';
@@ -6,9 +8,8 @@ part 'chat_state.freezed.dart';
class ChatState with _$ChatState {
const factory ChatState.initial() = ChatInitial;
const factory ChatState.loading() = ChatLoading;
const factory ChatState.chatsLoaded(List<dynamic> chats) = _ChatsLoaded;
const factory ChatState.chatSelected(String chat, List<dynamic> messages) = _ChatSelected;
const factory ChatState.messagesLoaded(List<dynamic> messages) = _MessagesLoaded;
const factory ChatState.messageSent() = _MessageSent;
const factory ChatState.chatsLoaded(List<Chat> chats) = _ChatsLoaded;
const factory ChatState.chatSelected(Chat chat, List<Message> messages) = _ChatSelected;
const factory ChatState.messagesLoaded(List<Message> messages) = _MessagesLoaded;
const factory ChatState.error(String message) = ChatError;
}
@@ -20,10 +20,9 @@ mixin _$ChatState {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) =>
throw _privateConstructorUsedError;
@@ -31,10 +30,9 @@ mixin _$ChatState {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) =>
throw _privateConstructorUsedError;
@@ -42,10 +40,9 @@ mixin _$ChatState {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) =>
@@ -57,7 +54,6 @@ mixin _$ChatState {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) =>
throw _privateConstructorUsedError;
@@ -68,7 +64,6 @@ mixin _$ChatState {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) =>
throw _privateConstructorUsedError;
@@ -79,7 +74,6 @@ mixin _$ChatState {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) =>
@@ -143,10 +137,9 @@ class _$ChatInitialImpl implements ChatInitial {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return initial();
@@ -157,10 +150,9 @@ class _$ChatInitialImpl implements ChatInitial {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return initial?.call();
@@ -171,10 +163,9 @@ class _$ChatInitialImpl implements ChatInitial {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -192,7 +183,6 @@ class _$ChatInitialImpl implements ChatInitial {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return initial(this);
@@ -206,7 +196,6 @@ class _$ChatInitialImpl implements ChatInitial {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return initial?.call(this);
@@ -220,7 +209,6 @@ class _$ChatInitialImpl implements ChatInitial {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
@@ -275,10 +263,9 @@ class _$ChatLoadingImpl implements ChatLoading {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return loading();
@@ -289,10 +276,9 @@ class _$ChatLoadingImpl implements ChatLoading {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return loading?.call();
@@ -303,10 +289,9 @@ class _$ChatLoadingImpl implements ChatLoading {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -324,7 +309,6 @@ class _$ChatLoadingImpl implements ChatLoading {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return loading(this);
@@ -338,7 +322,6 @@ class _$ChatLoadingImpl implements ChatLoading {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return loading?.call(this);
@@ -352,7 +335,6 @@ class _$ChatLoadingImpl implements ChatLoading {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
@@ -373,7 +355,7 @@ abstract class _$$ChatsLoadedImplCopyWith<$Res> {
_$ChatsLoadedImpl value, $Res Function(_$ChatsLoadedImpl) then) =
__$$ChatsLoadedImplCopyWithImpl<$Res>;
@useResult
$Res call({List<dynamic> chats});
$Res call({List<Chat> chats});
}
/// @nodoc
@@ -393,7 +375,7 @@ class __$$ChatsLoadedImplCopyWithImpl<$Res>
null == chats
? _value._chats
: chats // ignore: cast_nullable_to_non_nullable
as List<dynamic>,
as List<Chat>,
));
}
}
@@ -401,11 +383,11 @@ class __$$ChatsLoadedImplCopyWithImpl<$Res>
/// @nodoc
class _$ChatsLoadedImpl implements _ChatsLoaded {
const _$ChatsLoadedImpl(final List<dynamic> chats) : _chats = chats;
const _$ChatsLoadedImpl(final List<Chat> chats) : _chats = chats;
final List<dynamic> _chats;
final List<Chat> _chats;
@override
List<dynamic> get chats {
List<Chat> get chats {
if (_chats is EqualUnmodifiableListView) return _chats;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_chats);
@@ -439,10 +421,9 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return chatsLoaded(chats);
@@ -453,10 +434,9 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return chatsLoaded?.call(chats);
@@ -467,10 +447,9 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -488,7 +467,6 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return chatsLoaded(this);
@@ -502,7 +480,6 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return chatsLoaded?.call(this);
@@ -516,7 +493,6 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
@@ -528,9 +504,9 @@ class _$ChatsLoadedImpl implements _ChatsLoaded {
}
abstract class _ChatsLoaded implements ChatState {
const factory _ChatsLoaded(final List<dynamic> chats) = _$ChatsLoadedImpl;
const factory _ChatsLoaded(final List<Chat> chats) = _$ChatsLoadedImpl;
List<dynamic> get chats;
List<Chat> get chats;
@JsonKey(ignore: true)
_$$ChatsLoadedImplCopyWith<_$ChatsLoadedImpl> get copyWith =>
throw _privateConstructorUsedError;
@@ -542,7 +518,9 @@ abstract class _$$ChatSelectedImplCopyWith<$Res> {
_$ChatSelectedImpl value, $Res Function(_$ChatSelectedImpl) then) =
__$$ChatSelectedImplCopyWithImpl<$Res>;
@useResult
$Res call({String chat, List<dynamic> messages});
$Res call({Chat chat, List<Message> messages});
$ChatCopyWith<$Res> get chat;
}
/// @nodoc
@@ -563,26 +541,34 @@ class __$$ChatSelectedImplCopyWithImpl<$Res>
null == chat
? _value.chat
: chat // ignore: cast_nullable_to_non_nullable
as String,
as Chat,
null == messages
? _value._messages
: messages // ignore: cast_nullable_to_non_nullable
as List<dynamic>,
as List<Message>,
));
}
@override
@pragma('vm:prefer-inline')
$ChatCopyWith<$Res> get chat {
return $ChatCopyWith<$Res>(_value.chat, (value) {
return _then(_value.copyWith(chat: value));
});
}
}
/// @nodoc
class _$ChatSelectedImpl implements _ChatSelected {
const _$ChatSelectedImpl(this.chat, final List<dynamic> messages)
const _$ChatSelectedImpl(this.chat, final List<Message> messages)
: _messages = messages;
@override
final String chat;
final List<dynamic> _messages;
final Chat chat;
final List<Message> _messages;
@override
List<dynamic> get messages {
List<Message> get messages {
if (_messages is EqualUnmodifiableListView) return _messages;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_messages);
@@ -617,10 +603,9 @@ class _$ChatSelectedImpl implements _ChatSelected {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return chatSelected(chat, messages);
@@ -631,10 +616,9 @@ class _$ChatSelectedImpl implements _ChatSelected {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return chatSelected?.call(chat, messages);
@@ -645,10 +629,9 @@ class _$ChatSelectedImpl implements _ChatSelected {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -666,7 +649,6 @@ class _$ChatSelectedImpl implements _ChatSelected {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return chatSelected(this);
@@ -680,7 +662,6 @@ class _$ChatSelectedImpl implements _ChatSelected {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return chatSelected?.call(this);
@@ -694,7 +675,6 @@ class _$ChatSelectedImpl implements _ChatSelected {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
@@ -706,11 +686,11 @@ class _$ChatSelectedImpl implements _ChatSelected {
}
abstract class _ChatSelected implements ChatState {
const factory _ChatSelected(final String chat, final List<dynamic> messages) =
const factory _ChatSelected(final Chat chat, final List<Message> messages) =
_$ChatSelectedImpl;
String get chat;
List<dynamic> get messages;
Chat get chat;
List<Message> get messages;
@JsonKey(ignore: true)
_$$ChatSelectedImplCopyWith<_$ChatSelectedImpl> get copyWith =>
throw _privateConstructorUsedError;
@@ -722,7 +702,7 @@ abstract class _$$MessagesLoadedImplCopyWith<$Res> {
$Res Function(_$MessagesLoadedImpl) then) =
__$$MessagesLoadedImplCopyWithImpl<$Res>;
@useResult
$Res call({List<dynamic> messages});
$Res call({List<Message> messages});
}
/// @nodoc
@@ -742,7 +722,7 @@ class __$$MessagesLoadedImplCopyWithImpl<$Res>
null == messages
? _value._messages
: messages // ignore: cast_nullable_to_non_nullable
as List<dynamic>,
as List<Message>,
));
}
}
@@ -750,12 +730,12 @@ class __$$MessagesLoadedImplCopyWithImpl<$Res>
/// @nodoc
class _$MessagesLoadedImpl implements _MessagesLoaded {
const _$MessagesLoadedImpl(final List<dynamic> messages)
const _$MessagesLoadedImpl(final List<Message> messages)
: _messages = messages;
final List<dynamic> _messages;
final List<Message> _messages;
@override
List<dynamic> get messages {
List<Message> get messages {
if (_messages is EqualUnmodifiableListView) return _messages;
// ignore: implicit_dynamic_type
return EqualUnmodifiableListView(_messages);
@@ -790,10 +770,9 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return messagesLoaded(messages);
@@ -804,10 +783,9 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return messagesLoaded?.call(messages);
@@ -818,10 +796,9 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -839,7 +816,6 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return messagesLoaded(this);
@@ -853,7 +829,6 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return messagesLoaded?.call(this);
@@ -867,7 +842,6 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
@@ -879,147 +853,15 @@ class _$MessagesLoadedImpl implements _MessagesLoaded {
}
abstract class _MessagesLoaded implements ChatState {
const factory _MessagesLoaded(final List<dynamic> messages) =
const factory _MessagesLoaded(final List<Message> messages) =
_$MessagesLoadedImpl;
List<dynamic> get messages;
List<Message> get messages;
@JsonKey(ignore: true)
_$$MessagesLoadedImplCopyWith<_$MessagesLoadedImpl> get copyWith =>
throw _privateConstructorUsedError;
}
/// @nodoc
abstract class _$$MessageSentImplCopyWith<$Res> {
factory _$$MessageSentImplCopyWith(
_$MessageSentImpl value, $Res Function(_$MessageSentImpl) then) =
__$$MessageSentImplCopyWithImpl<$Res>;
}
/// @nodoc
class __$$MessageSentImplCopyWithImpl<$Res>
extends _$ChatStateCopyWithImpl<$Res, _$MessageSentImpl>
implements _$$MessageSentImplCopyWith<$Res> {
__$$MessageSentImplCopyWithImpl(
_$MessageSentImpl _value, $Res Function(_$MessageSentImpl) _then)
: super(_value, _then);
}
/// @nodoc
class _$MessageSentImpl implements _MessageSent {
const _$MessageSentImpl();
@override
String toString() {
return 'ChatState.messageSent()';
}
@override
bool operator ==(Object other) {
return identical(this, other) ||
(other.runtimeType == runtimeType && other is _$MessageSentImpl);
}
@override
int get hashCode => runtimeType.hashCode;
@override
@optionalTypeArgs
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(String message) error,
}) {
return messageSent();
}
@override
@optionalTypeArgs
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(String message)? error,
}) {
return messageSent?.call();
}
@override
@optionalTypeArgs
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(String message)? error,
required TResult orElse(),
}) {
if (messageSent != null) {
return messageSent();
}
return orElse();
}
@override
@optionalTypeArgs
TResult map<TResult extends Object?>({
required TResult Function(ChatInitial value) initial,
required TResult Function(ChatLoading value) loading,
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return messageSent(this);
}
@override
@optionalTypeArgs
TResult? mapOrNull<TResult extends Object?>({
TResult? Function(ChatInitial value)? initial,
TResult? Function(ChatLoading value)? loading,
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return messageSent?.call(this);
}
@override
@optionalTypeArgs
TResult maybeMap<TResult extends Object?>({
TResult Function(ChatInitial value)? initial,
TResult Function(ChatLoading value)? loading,
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {
if (messageSent != null) {
return messageSent(this);
}
return orElse();
}
}
abstract class _MessageSent implements ChatState {
const factory _MessageSent() = _$MessageSentImpl;
}
/// @nodoc
abstract class _$$ChatErrorImplCopyWith<$Res> {
factory _$$ChatErrorImplCopyWith(
@@ -1086,10 +928,9 @@ class _$ChatErrorImpl implements ChatError {
TResult when<TResult extends Object?>({
required TResult Function() initial,
required TResult Function() loading,
required TResult Function(List<dynamic> chats) chatsLoaded,
required TResult Function(String chat, List<dynamic> messages) chatSelected,
required TResult Function(List<dynamic> messages) messagesLoaded,
required TResult Function() messageSent,
required TResult Function(List<Chat> chats) chatsLoaded,
required TResult Function(Chat chat, List<Message> messages) chatSelected,
required TResult Function(List<Message> messages) messagesLoaded,
required TResult Function(String message) error,
}) {
return error(message);
@@ -1100,10 +941,9 @@ class _$ChatErrorImpl implements ChatError {
TResult? whenOrNull<TResult extends Object?>({
TResult? Function()? initial,
TResult? Function()? loading,
TResult? Function(List<dynamic> chats)? chatsLoaded,
TResult? Function(String chat, List<dynamic> messages)? chatSelected,
TResult? Function(List<dynamic> messages)? messagesLoaded,
TResult? Function()? messageSent,
TResult? Function(List<Chat> chats)? chatsLoaded,
TResult? Function(Chat chat, List<Message> messages)? chatSelected,
TResult? Function(List<Message> messages)? messagesLoaded,
TResult? Function(String message)? error,
}) {
return error?.call(message);
@@ -1114,10 +954,9 @@ class _$ChatErrorImpl implements ChatError {
TResult maybeWhen<TResult extends Object?>({
TResult Function()? initial,
TResult Function()? loading,
TResult Function(List<dynamic> chats)? chatsLoaded,
TResult Function(String chat, List<dynamic> messages)? chatSelected,
TResult Function(List<dynamic> messages)? messagesLoaded,
TResult Function()? messageSent,
TResult Function(List<Chat> chats)? chatsLoaded,
TResult Function(Chat chat, List<Message> messages)? chatSelected,
TResult Function(List<Message> messages)? messagesLoaded,
TResult Function(String message)? error,
required TResult orElse(),
}) {
@@ -1135,7 +974,6 @@ class _$ChatErrorImpl implements ChatError {
required TResult Function(_ChatsLoaded value) chatsLoaded,
required TResult Function(_ChatSelected value) chatSelected,
required TResult Function(_MessagesLoaded value) messagesLoaded,
required TResult Function(_MessageSent value) messageSent,
required TResult Function(ChatError value) error,
}) {
return error(this);
@@ -1149,7 +987,6 @@ class _$ChatErrorImpl implements ChatError {
TResult? Function(_ChatsLoaded value)? chatsLoaded,
TResult? Function(_ChatSelected value)? chatSelected,
TResult? Function(_MessagesLoaded value)? messagesLoaded,
TResult? Function(_MessageSent value)? messageSent,
TResult? Function(ChatError value)? error,
}) {
return error?.call(this);
@@ -1163,7 +1000,6 @@ class _$ChatErrorImpl implements ChatError {
TResult Function(_ChatsLoaded value)? chatsLoaded,
TResult Function(_ChatSelected value)? chatSelected,
TResult Function(_MessagesLoaded value)? messagesLoaded,
TResult Function(_MessageSent value)? messageSent,
TResult Function(ChatError value)? error,
required TResult orElse(),
}) {