This commit is contained in:
Juan Felipe Duarte
2023-06-20 11:21:14 -05:00
parent 05fa9438a1
commit a190833b53
10 changed files with 279 additions and 136 deletions
+54 -7
View File
@@ -1,4 +1,5 @@
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:prosappco/src/authentication/authentication_repository.dart';
@@ -7,6 +8,8 @@ import 'package:prosappco/src/components/pop_appbar.dart';
import 'package:prosappco/src/models/chat_model.dart';
import 'package:prosappco/src/models/event_model.dart';
import 'package:prosappco/src/models/user_model.dart';
import 'package:prosappco/src/screens/professional.dart';
import 'package:prosappco/src/screens/professional_info.dart';
class ChatScreen extends StatefulWidget {
final String? eventoId;
@@ -20,6 +23,8 @@ class _ChatScreenState extends State<ChatScreen> {
final _textController = TextEditingController();
final uid = AuthenticationRepository.instance.getCurrentUserUid();
UserModel? user;
Professional? professional;
bool pro = false;
@override
void initState() {
@@ -31,8 +36,10 @@ class _ChatScreenState extends State<ChatScreen> {
(UserModel s) => setState(() => user = s),
);
} else {
Professional.getProfessional(event.professionalId)
.then((value) => {professional = value});
UserModel.getUser(event.professionalId).then(
(UserModel s) => setState(() => user = s),
(UserModel s) => setState(() => {user = s, pro = true}),
);
}
}
@@ -65,12 +72,27 @@ class _ChatScreenState extends State<ChatScreen> {
color: const Color(0xFFD6F4FF),
alignment: Alignment.topCenter,
child: ListTile(
leading: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: ReferencePhoto(
ref: user?.photo,
size: 55,
sizeCircle: 60,
leading: GestureDetector(
onTap: () {
if (pro) {
Navigator.of(context).push(
CupertinoPageRoute(
builder: (BuildContext context) {
return ProfessionalInfoScreen(
professional: professional!,
);
},
),
);
}
},
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: ReferencePhoto(
ref: user?.photo,
size: 55,
sizeCircle: 60,
),
),
),
title: Text(
@@ -119,6 +141,31 @@ class _ChatScreenState extends State<ChatScreen> {
filled: true,
fillColor: Colors.grey[200],
),
onFieldSubmitted: (value) {
String muestra = _textController.text.trim();
if (muestra.isNotEmpty) {
final nuevoMensaje = MessageModel(
user: uid!,
content:
_textController.text.trimLeft().trimRight(),
timestamp: DateTime.now());
final nuevoMensajeMap = {
'user': nuevoMensaje.user,
'content': nuevoMensaje.content,
'timestamp': nuevoMensaje.timestamp,
};
FirebaseFirestore.instance
.collection('chats')
.doc(widget.eventoId)
.update({
'message': FieldValue.arrayUnion([nuevoMensajeMap])
});
_textController.clear();
} else {}
},
),
),
const SizedBox(width: 12),