chat screen

This commit is contained in:
Felipe
2024-04-16 08:46:06 -05:00
parent 34c60af688
commit 61d517aaea
18 changed files with 931 additions and 22 deletions
@@ -0,0 +1,49 @@
import 'package:chat_repository/src/entities/entities.dart';
import 'package:equatable/equatable.dart';
class ChatEntity extends Equatable {
final String? id;
final String userId;
final String professionalId;
final List<MessageEntity> messages;
const ChatEntity({
required this.id,
required this.userId,
required this.professionalId,
required this.messages,
});
static ChatEntity fromDocument(Map<String, dynamic> doc) {
return ChatEntity(
id: doc['id'] as String,
userId: doc['user_id'] as String,
professionalId: doc['professional_id'] as String,
messages: (doc['messages'] as List)
.map((e) => MessageEntity.fromDocument(e as Map<String, dynamic>))
.toList(),
);
}
Map<String, dynamic> toDocument() {
return {
'id': id,
'user_id': userId,
'professional_id': professionalId,
'messages': messages.map((e) => e.toDocument()).toList(),
};
}
@override
List<Object?> get props => [id, userId, professionalId, messages];
@override
String toString() {
return '''ChatEntity{
id: $id,
userId: $userId,
professionalId: $professionalId,
messages: $messages
}''';
}
}
@@ -0,0 +1,2 @@
export '/src/entities/chat_entity.dart';
export '/src/entities/message_entity.dart';
@@ -0,0 +1,45 @@
import 'package:equatable/equatable.dart';
class MessageEntity extends Equatable {
final String ownerId;
final String content;
final DateTime createdAt;
const MessageEntity({
required this.ownerId,
required this.content,
required this.createdAt,
});
static MessageEntity fromDocument(Map<String, dynamic> doc) {
return MessageEntity(
ownerId: doc['owner_id'] as String,
content: doc['content'] as String,
createdAt: DateTime.parse(doc['created_at'] as String),
);
}
Map<String, dynamic> toDocument() {
return {
'owner_id': ownerId,
'content': content,
'created_at': createdAt.toIso8601String(),
};
}
@override
List<Object?> get props => [
ownerId,
content,
createdAt,
];
@override
String toString() {
return '''MessageEntity{
ownerId: $ownerId,
content: $content,
createdAt: $createdAt
}''';
}
}