en este caso tengo un fork con la solución y todo comiteado poco a poco
https://github.com/YuniorGlez/eoi-vue-firebase/commits/feature/firebase-implementing-global-chat/
Añadimos simplemente en el Appvue unos botoncitos para poder navegar a la página de chat nueva y a login/register
Incorporamos esta nueva página de ChatView en el router
Preparamos en el ChatView una parte para mostrar los mensajes del chat y añadir uno nuevo
Preparamos en el ChatView una parte para mostrar los mensajes del chat y añadir uno nuevo
También averiguamos quien es el usuario actual logeado y cargamos los mensajes en el mounted
Tenemos que decidir, como guardar en la base de datos los chats o los mensajes
Aquí hace falta lo de siempre, mucho papel y lápiz:
- ¿Es un único chat comun para todo el mundo?
- ¿El chat se crea por parte de un owner y le pertenece e invita a otros? ¿Hay más chats?
- ¿Hay un concepto de "grupo" y el chat es de un grupo?
Para este tipo de decisiones por suerte ya no estás solo, le puedes comentar a tu nuevo patito de goma (chatgpt) tu situación y preguntarle cual considera que es la mejor forma de guardar esa información en tu bd de firebase
Un modo
Otro modo, una única colección de "messages" porque el chat es común
Otro modo, una única colección de "messages" porque el chat es común
Cargar los mensajes, se usa onSnapshot
onSnapshot se ejecuta en tiempo real
Otro modo, una única colección de "messages" porque el chat es común
Para guardar los mensajes nuevos, usas el addDoc
Otro modo, una única colección de "messages" porque el chat es común
Recuerda los imports
<script>
import { collection, addDoc, onSnapshot, query } from "firebase/firestore";
import { auth, db } from "@/firebase/config";
import { onAuthStateChanged, updateProfile } from "firebase/auth";
Listo, solo nos queda una cosa, que el mensaje "se sepa de quien es"
Listo, solo nos queda una cosa, que el mensaje "se sepa de quien es"
Depende del proveedor que haya usado el usuario para hacer login, a lo mejor si que tienes un displayName
En nuestro caso, como al crearse la cuenta no lo tiene, pues se lo pedimos en esta vista y lo dejamos guardado
REPO DE ANDREY QUE TENEMOS QUE FORKEAR : https://github.com/andreycattalin/eoi-vue-firebase
Mi rama por si os perdéis demasiado y no recordáis nada :) Recuerda que tienes los commits de poco a poco
https://github.com/YuniorGlez/eoi-vue-firebase/tree/feature/firebase-implementing-global-chat
Avanzamos los proyectos