Skip to content

Commit

Permalink
ultimos cambios para actualizar
Browse files Browse the repository at this point in the history
  • Loading branch information
DianaJ-Dev committed Oct 23, 2023
1 parent ecf9a12 commit 9750471
Show file tree
Hide file tree
Showing 6 changed files with 277 additions and 231 deletions.
4 changes: 2 additions & 2 deletions src/Components/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function login (navigateTo) {
alert('la contraseña debe tener mínimo 7 caracteres')
}

UsuarioConSesionActiva(emailValue, passwordValue)
UsuarioConSesionActiva(emailValue, passwordValue) // se llamo funcion desde firestore
.then((userCredential) => {
// El usuario ha iniciado sesión con éxito

Expand Down Expand Up @@ -58,7 +58,7 @@ function login (navigateTo) {
googleImg.src = '../Imagenes/g-logo.png'
buttonGoogle.appendChild(googleImg)
buttonGoogle.addEventListener('click', function () {
entrarConGoogle()
entrarConGoogle() // se llama funcion desde Firebase.Fn
.then(() => {
navigateTo('/programmingWall')
}).catch(() => {
Expand Down
40 changes: 19 additions & 21 deletions src/Components/programmingWall.js
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ function programmingWall (navigateTo) {
usersWhoLiked: [],
likesCount: 0
}
createPostProgrammingWall(newPost)
createPostProgrammingWall(newPost) // Lo llamamos desde firestore
.then((docRef) => {
textAreaPost.value = ''
})
Expand Down Expand Up @@ -69,45 +69,43 @@ function programmingWall (navigateTo) {
const btnLike = document.createElement('button')
btnLike.classList.add('btn-like')
console.log(btnLike)
btnLike.textContent = post.likes + ' Me gusta'
btnLike.textContent = post.likes + ' Me gusta' // (post.likes) almacenaa la cantidad de me gusta
btnLike.id = post.id
btnLike.setAttribute('usuario-email', post.email)
btnLike.setAttribute('usuario-email', post.email) // (setAttribute) metodo para agregar o modificar un atributo
btnLike.setAttribute('data-likes-count', '0')
// EVENTO DE LIKE
// const usersWhoLiked = [] // Array para almacenar los usuarios que dieron like
btnLike.addEventListener('click', async (e) => {
// PARA EVITAR QUE EL BOTON SE ACTUALICE
e.preventDefault()
const postLikId = e.target.id
const userEmail = auth.currentUser.email
e.preventDefault() // (preventDefault) evita el comportamiento predeterminado
const postLikId = e.target.id // me da el id encontrado en la consola
const userEmail = auth.currentUser.email // se asigna con el valor del correo autenticado
const postRef = doc(db, 'posts', postLikId)
try {
await runTransaction(db, async (transaction) => {
const postDoc = await transaction.get(postRef)
await runTransaction(db, async (transaction) => { // (runTransaction) funcion de firetore que permite ejecutar una trx
const postDoc = await transaction.get(postRef) // (transaction) representa la trx actual
if (!postDoc.exists()) {
throw new Error('El documento no existe')
}
const currentLikesCount = postDoc.data().likesCount
const currentUsersWhoLiked = postDoc.data().usersWhoLiked || []
const currentLikesCount = postDoc.data().likesCount // Obtiene el valor del campo likesCount estas propiedades se traen desde firebase
const currentUsersWhoLiked = postDoc.data().usersWhoLiked || [] // firestore identifica el correo de quien le dio likes
let newLikesCount = currentLikesCount
if (currentUsersWhoLiked.includes(userEmail)) {
newLikesCount--
const index = currentUsersWhoLiked.indexOf(userEmail)
newLikesCount-- // decrementar en 1
const index = currentUsersWhoLiked.indexOf(userEmail) // (indexOf)metodo para buscar en un array y devolver la primera posicion
currentUsersWhoLiked.splice(index, 1)
} else {
newLikesCount++
newLikesCount++ // aumentar en 1
currentUsersWhoLiked.push(userEmail)
}
console.log(newLikesCount)
console.log(currentUsersWhoLiked)
transaction.update(postRef, {
transaction.update(postRef, { // (update) metodo de firebase para modificar o actualizar datos de un documento en especifico
likesCount: newLikesCount,
usersWhoLiked: currentUsersWhoLiked
})
// null
// Actualiza la interfaz de usuario
btnLike.setAttribute('data-likes-count', newLikesCount.toString())
// nbtnLike.textContent = `${newLikesCount} Me gusta`
btnLike.setAttribute('data-likes-count', newLikesCount.toString()) // metodo para agregar atributos (toString) metodo convertir un objeto en una cadena
})
console.log('Se ha dado "Me gusta" a la publicación correctamente.')
} catch (error) {
Expand All @@ -121,7 +119,7 @@ function programmingWall (navigateTo) {
buttonEdit.classList.add('buttonEdit')
buttonEdit.addEventListener('click', (e) => {
const postEditarId = e.target.id // Obtén el ID de la publicación
const sectionPost = e.target.parentElement
const sectionPost = e.target.parentElement // (ParentElement) Elemento proporciona acceso directo al elemento padre inmediato del elemento actual en el árbol DOM
console.log(e)
// Traer texto original
const textOriginal = sectionPost.querySelector('.contenidoPost p')
Expand All @@ -146,7 +144,7 @@ function programmingWall (navigateTo) {
const updatedData = { // Almacena los datos actualizados
text: updatedText
}
editPost(postEditarId, updatedData)
editPost(postEditarId, updatedData) // editPost viene desde firestore
.then(() => {
const updatedTextElement = document.createElement('p')
updatedTextElement.textContent = updatedText
Expand All @@ -170,7 +168,7 @@ function programmingWall (navigateTo) {
const postIdToDelete = e.target.id // Aquí ingresamos al evento.target que es donde lo encontramos en la consola
console.log(e.target.id)
console.log(e)
deletePost(postIdToDelete)
deletePost(postIdToDelete) // firebase me lo da
.then(() => {
sectionPost.remove()
console.log('Post eliminado con éxito')
Expand All @@ -192,7 +190,7 @@ function programmingWall (navigateTo) {
buttonReturn.textContent = 'cerrar'
buttonReturn.classList.add('btn-cerrar')
buttonReturn.addEventListener('click', function () {
exit()
exit() // llamo funcion de firestore
})
// append agrega nuevo elemento al contenedor en este caso agrega tittle a section que es el principal
section.append(title, buttonReturn, textAreaPost, divPostContent, buttonCrear)
Expand Down
4 changes: 2 additions & 2 deletions src/Components/register.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ function register (navigateTo) {
if (passwordValue.length < 7) {
alert('La contraseña debe tener mínimo 7 caracteres') // Sale de la función si la contraseña es demasiado corta
}
// LO TESTEO CON EL MOCK YA QUE ES FIREBASE
registrarConCorreoContrasena(emailValue, passwordValue)

registrarConCorreoContrasena(emailValue, passwordValue) // funcion desde Firebase
.then((userCredential) => {
// El usuario se creó con éxito
const user = userCredential.user
Expand Down
12 changes: 6 additions & 6 deletions src/FirebaseFn.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ export const UsuarioConSesionActiva = (email, password) => {
}
// FUNCION PARA CREAR POST
export const createPostProgrammingWall = (obj) => {
if (auth.currentUser) {
if (auth.currentUser) { // valida si hay un usuario autenticado
const newObj = {
...obj,
email: auth.currentUser.email
email: auth.currentUser.email // agrega nueva propiedad llamada email del usuario autenticado
}
return addDoc(collection(db, 'posts'), newObj)
return addDoc(collection(db, 'posts'), newObj) // agrega un documento a coleccion de post
.then((docRef) => {
return docRef // Devolver docRef en caso de éxito
})
Expand All @@ -34,9 +34,9 @@ export const createPostProgrammingWall = (obj) => {
})
}
}
export const q = query(collection(db, 'posts'))
export const getPosts = (callback) => {
onSnapshot(q, callback)
export const q = query(collection(db, 'posts')) // Consulta de coleccion de post
export const getPosts = (callback) => { // Ejecuta callback proporcionando datos
onSnapshot(q, callback) // metodo de firestore que recibe notificaciones en tiempo real
}
// FUNCION PARA CERRAR SESION
export const exit = () => signOut(auth)
Expand Down
3 changes: 2 additions & 1 deletion src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,12 @@ window.onpopstate = () => { // El evento onpopstate se dispara cuando el usuario
navigateTo(window.location.pathname) // En este caso, se utiliza para llamar a la función navigateTo y mostrar el componente correspondiente según la ruta actual.
}

// USUARIO AUTENTICADO
navigateTo(window.location.pathname || defaultRoute) // Llamamos a la función navigateTo con la ruta actual o la ruta predeterminada.
onAuthStateChanged(getAuth(), (user) => { // Utilizamos onAuthStateChanged de Firebase para detectar cambios en el estado de autenticación.
console.log(user)
if (user) {
navigateTo('/programmingWall') // Si hay un usuario autenticado, navegamos a la ruta "/programmingWall".
navigateTo('/programmingWall') // navegamos a la ruta "/programmingWall".
} else {
navigateTo('/') // Si no hay un usuario autenticado, navegamos a la ruta principal ("/").
}
Expand Down
Loading

1 comment on commit 9750471

@vercel
Copy link

@vercel vercel bot commented on 9750471 Oct 23, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.