Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
185 commits
Select commit Hold shift + click to select a range
e70cc9c
commit con html de inicio de sesion y registro mobile y desktop
dvnielx Dec 29, 2022
8876764
commit seccion de registro en mobile y desktop
dvnielx Dec 29, 2022
b64c4c3
Merge pull request #16 from dvnielx/main
MiriamDiaz2306 Jan 1, 2023
7c60b20
interaccion en js de boton registrar
dvnielx Jan 3, 2023
847986e
Merge pull request #1 from dvnielx/feature-daniela
maryyfry Jan 3, 2023
a34f07d
Merge pull request #1 from maryyfry/main
dvnielx Jan 3, 2023
82df528
commit previo a merge con funcion en boton registrar
dvnielx Jan 3, 2023
f21d08f
Merge pull request #17 from dvnielx/main
MiriamDiaz2306 Jan 3, 2023
e5ab690
pruebas dos
maryyfry Jan 3, 2023
fff8a93
boton de registrate funciona y crea nuevas usuarias
dvnielx Jan 4, 2023
d872ee8
merge entre ramas
dvnielx Jan 4, 2023
542ba76
prueba2
MiriamDiaz2306 Jan 4, 2023
b2959a3
boton con logo de google para inicio de sesion y registro
dvnielx Jan 4, 2023
18e6153
merge que tiene cambios de firebase y btn google
maryyfry Jan 4, 2023
d9df19c
Merge branch 'feature-rangel' into feature-daniela
maryyfry Jan 4, 2023
87c198a
Merge pull request #3 from dvnielx/feature-daniela
maryyfry Jan 4, 2023
b7cb818
commit previo a merge con btn google
dvnielx Jan 4, 2023
f9a1e81
cambio para funcion de firebase
MiriamDiaz2306 Jan 4, 2023
4b308e6
Merge branch 'feature-daniela' of https://github.com/dvnielx/DEV002-s…
dvnielx Jan 4, 2023
e4ba7a5
Merge branch 'feature-Diaz' into feature-daniela
MiriamDiaz2306 Jan 4, 2023
af5601c
Merge pull request #29 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 4, 2023
3061b11
carpetas con firebase y components
MiriamDiaz2306 Jan 5, 2023
8a9be68
Merge pull request #2 from MiriamDiaz2306/feature-Diaz
dvnielx Jan 5, 2023
cb5a69b
Merge pull request #4 from MiriamDiaz2306/feature-Diaz
maryyfry Jan 5, 2023
0a9fef9
carpetas de firebase y componentes
dvnielx Jan 5, 2023
4e7447b
experimentando con router
dvnielx Jan 11, 2023
1acc862
router login y register en prueba
dvnielx Jan 11, 2023
b65f4aa
routes de login y register funcionando
dvnielx Jan 11, 2023
e5a7daf
Merge pull request #5 from dvnielx/feature-daniela
maryyfry Jan 11, 2023
da23798
registro con correo y contrasenia funcionando de nuevo
dvnielx Jan 11, 2023
797eb8a
nuevos cambios ya funcionando
maryyfry Jan 11, 2023
81c7a1c
probando nuevo index
maryyfry Jan 11, 2023
8c25c1f
Merge pull request #6 from dvnielx/feature-daniela
maryyfry Jan 11, 2023
300f28e
Merge pull request #31 from dvnielx/main
MiriamDiaz2306 Jan 11, 2023
d206d3e
inborramos index y solo dejamos root
dvnielx Jan 11, 2023
6b8699d
solo se dejo root en index
maryyfry Jan 11, 2023
d42b27d
Merge pull request #8 from MiriamDiaz2306/feature-Diaz
maryyfry Jan 11, 2023
c89cd8a
se arreglo problema de servidor
maryyfry Jan 12, 2023
3ae0221
errores de registro funcionan
dvnielx Jan 12, 2023
73f91a7
Merge branch 'feature-rangel' into main
maryyfry Jan 12, 2023
850d8bd
Merge pull request #9 from dvnielx/main
maryyfry Jan 12, 2023
c3999b1
Merge pull request #32 from dvnielx/main
MiriamDiaz2306 Jan 12, 2023
4488910
registrarse e iniciar sesion funcionan en inicioDeSesionCorreo y regi…
maryyfry Jan 13, 2023
c19fba1
Merge pull request #33 from maryyfry/feature-carmen
MiriamDiaz2306 Jan 13, 2023
614e1a6
Boton de ingresar y registrate te dirigen a timeLine
maryyfry Jan 13, 2023
b014c91
Inicio de sesion con google sin popUp
maryyfry Jan 14, 2023
07d5ac1
Funciona singInWithGoogle con popUp y se registra en firebase
maryyfry Jan 14, 2023
3bf0b8e
Merge pull request #34 from maryyfry/feature-carmen
MiriamDiaz2306 Jan 16, 2023
1e7bc0f
Funciona login con correo, google y se regitra en firebase y se agreg…
maryyfry Jan 16, 2023
6439e04
Merge pull request #35 from maryyfry/feature-carmen
MiriamDiaz2306 Jan 16, 2023
27dab4c
Se agrego html de perfil y timeLine
maryyfry Jan 17, 2023
2a6ad29
agregue imagen user
maryyfry Jan 17, 2023
fb41942
Merge pull request #3 from maryyfry/feature-carmen
dvnielx Jan 17, 2023
b2326cd
Merge pull request #36 from maryyfry/feature-carmen
MiriamDiaz2306 Jan 18, 2023
059052b
Se enlazo boton de google con timeLine
maryyfry Jan 18, 2023
0f92b77
Se agrego ruta profile
maryyfry Jan 18, 2023
5d193ed
Se agregan rutas de cerrar sesion, perfil y time line
maryyfry Jan 18, 2023
d825d75
boton de google que redirige a timeline
dvnielx Jan 18, 2023
c48190d
Se limpia codigo y carpetas que no tienen uso
maryyfry Jan 18, 2023
8a6ba68
merge con conflictos resueltos
dvnielx Jan 18, 2023
0a515fe
rutas listas y firebase funcionando
dvnielx Jan 18, 2023
35e02b5
Merge pull request #44 from maryyfry/feature-carmen
MiriamDiaz2306 Jan 18, 2023
9679028
alerta de contraseña editada y perfil actualizado
dvnielx Jan 19, 2023
225e9e9
Se quito publicar en la pagina de proile
maryyfry Jan 19, 2023
0bfba74
Cambio de perfil y leyenda de contraseña
MiriamDiaz2306 Jan 19, 2023
38b3e9c
errores ESLint resueltos, quedan 11 de signInGoogle
dvnielx Jan 19, 2023
23bb02a
errores eslint resueltos
dvnielx Jan 20, 2023
721dbfd
se imprimen publicaciones de forma desordenada
dvnielx Jan 21, 2023
62d651f
funcion onGetTasks mejorada
dvnielx Jan 21, 2023
719e041
grid eliminado de contenedor publiciones2
dvnielx Jan 21, 2023
9442712
funcion borrar funcionando
dvnielx Jan 21, 2023
d47469d
funcion de editar datos funciona
dvnielx Jan 21, 2023
91be577
agregamos la funcion para actualizar datos editados y que no se publi…
dvnielx Jan 21, 2023
a325064
Merge branch 'feature-Diaz' into feature-daniela
MiriamDiaz2306 Jan 21, 2023
67dd801
Merge pull request #47 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 21, 2023
c6a9540
Merge branch 'feature-carmen' into feature-daniela
maryyfry Jan 23, 2023
2ef6544
Merge pull request #10 from dvnielx/feature-daniela
maryyfry Jan 23, 2023
13ef2c3
se agregan logos de editar y de eliminar con fucionalidad
maryyfry Jan 23, 2023
5819f67
Merge pull request #6 from maryyfry/feature-carmen
dvnielx Jan 23, 2023
b17042d
commit previo a merge con avances de estilos
dvnielx Jan 23, 2023
eaab8ff
avances con estilos css
dvnielx Jan 23, 2023
96aef91
mejoras en style.css, navbar la regresamos a position fixed
dvnielx Jan 24, 2023
01000f7
modificacion desktop.css, agregamos hover y modificamos la barra de n…
dvnielx Jan 24, 2023
ca2d8b7
estilos timeline-desktop listos
dvnielx Jan 24, 2023
09f084a
Merge pull request #48 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 24, 2023
2f7d917
estilos de desktop y mobile listos
dvnielx Jan 24, 2023
d2ad172
ordenamos style.css y desktop.css parte 1
dvnielx Jan 24, 2023
787bd32
ordenamos style.css y desktop.css parte 2
dvnielx Jan 24, 2023
66f82b3
confirmacion antes de borrar una publicacion agregada
dvnielx Jan 25, 2023
d36911d
no se pueden publicar inputs vacios (publicaciones)
dvnielx Jan 25, 2023
5901a97
Merge pull request #55 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 26, 2023
6c045c5
Merge pull request #11 from dvnielx/feature-daniela
maryyfry Jan 26, 2023
540ac9b
cambios con botones
maryyfry Jan 26, 2023
89ba40a
Merge branch 'feature-rangel' of https://github.com/maryyfry/DEV002-s…
maryyfry Jan 26, 2023
6c5aaf5
Arregle problemas en timeline
maryyfry Jan 26, 2023
26f5fe9
funcion de recargar pagina activada
dvnielx Jan 26, 2023
287899a
avances funcion like
dvnielx Jan 26, 2023
714f78a
boton de like y dislike funcionan
dvnielx Jan 27, 2023
1a30085
Merge branch 'feature-carmen' into feature-daniela
maryyfry Jan 27, 2023
6ce1092
Merge pull request #12 from dvnielx/feature-daniela
maryyfry Jan 27, 2023
eb9be6c
nombre (obtenido de gmail) en publicaciones listo
dvnielx Jan 27, 2023
6da8f84
merge fixed
dvnielx Jan 27, 2023
b2eb9f2
Merge pull request #57 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 27, 2023
ed78714
Merge pull request #13 from dvnielx/feature-daniela
maryyfry Jan 27, 2023
30e1fce
commit antes de merge
maryyfry Jan 27, 2023
6209408
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Jan 27, 2023
a278f37
usuarias pueden dar like pero no editar/borrar post si ellas no lo cr…
dvnielx Jan 27, 2023
99a97d3
Merge pull request #14 from dvnielx/feature-daniela
maryyfry Jan 27, 2023
172a802
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Jan 27, 2023
17b2e40
Merge pull request #58 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 27, 2023
ab136c8
Se muestran las publicaciones con fecha y hora pero sin orden
MiriamDiaz2306 Jan 28, 2023
51e344c
se muestra fecha y hora sin order, cons dateTask
MiriamDiaz2306 Jan 28, 2023
733c2fa
Merge pull request #7 from MiriamDiaz2306/feature-Diaz
dvnielx Jan 29, 2023
aaf042d
commit previo a merge
dvnielx Jan 29, 2023
e22d0ab
commit para prueba de merge
dvnielx Jan 29, 2023
a831010
se ordena de forma descendente
dvnielx Jan 29, 2023
925816a
arreglos en style.css y desktop.css
dvnielx Jan 29, 2023
c5ad05f
Merge pull request #15 from dvnielx/feature-daniela
maryyfry Jan 30, 2023
2ffc4cc
fecha y hora
maryyfry Jan 30, 2023
674c156
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Jan 30, 2023
7ce9458
Merge pull request #59 from dvnielx/feature-daniela
MiriamDiaz2306 Jan 30, 2023
bb38395
avances read.me e intento para cambiar null al nombre de registro
dvnielx Jan 30, 2023
f2e4327
avances de read me. falta insertar prototipos de alta y baja fidelidad
dvnielx Jan 30, 2023
8f4e4f7
errores ESLint corregidos parcialmente
dvnielx Jan 31, 2023
cf54082
avances read.me y pagina se recarga automaticamente al dar click al b…
dvnielx Jan 31, 2023
05535c5
Merge branch 'feature-daniela' of https://github.com/dvnielx/DEV002-s…
dvnielx Jan 31, 2023
c418528
prueba - pagina se recarga
dvnielx Jan 31, 2023
100f3fb
Merge pull request #16 from dvnielx/feature-daniela
maryyfry Jan 31, 2023
445dfcd
carga pagina de register en timeline
maryyfry Jan 31, 2023
e7ec01f
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Jan 31, 2023
b3a6117
se muestra coleccion de users en firebase
maryyfry Jan 31, 2023
567711f
Merge pull request #8 from maryyfry/feature-carmen
dvnielx Jan 31, 2023
7d15123
login funciona de nuevo
dvnielx Feb 1, 2023
0c40eeb
login funciona de nuevo, borramos campo de edad
dvnielx Feb 1, 2023
193ad15
Merge pull request #62 from dvnielx/feature-daniela
MiriamDiaz2306 Feb 1, 2023
95b33f6
Aparece el nombre de usuario ya sea desde registrate o google
MiriamDiaz2306 Feb 1, 2023
d46e6a4
Merge pull request #9 from MiriamDiaz2306/feature-Diaz
dvnielx Feb 1, 2023
616e47c
se envía correo de verificación e intento de cierre de sesión :(
dvnielx Feb 2, 2023
d9de275
arreglos en style.css
dvnielx Feb 2, 2023
de6f80d
errores ESLint corregidos parcialmente
dvnielx Feb 2, 2023
abb766b
todos los errores ESLint corregidos
dvnielx Feb 2, 2023
36698a9
Merge pull request #17 from dvnielx/feature-daniela
maryyfry Feb 2, 2023
9b2996b
merge con errores corregidos
maryyfry Feb 2, 2023
e722090
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Feb 2, 2023
8f3e2b1
cerrar sesion funciona (?)
dvnielx Feb 2, 2023
d933ae7
Merge pull request #18 from dvnielx/feature-daniela
maryyfry Feb 2, 2023
a3c8e7a
Merge branch 'feature-carmen' of https://github.com/maryyfry/DEV002-s…
maryyfry Feb 2, 2023
1b48b15
Merge pull request #64 from dvnielx/feature-daniela
MiriamDiaz2306 Feb 2, 2023
2e8c598
cierra sesion pero no aparece nombre
maryyfry Feb 2, 2023
d58ac7e
funciona publicar
MiriamDiaz2306 Feb 3, 2023
1f6d7fa
Merge branch 'feature-Diaz' of https://github.com/MiriamDiaz2306/DEV0…
MiriamDiaz2306 Feb 3, 2023
b578915
logo de cerrar sesion en mobile funciona
dvnielx Feb 3, 2023
dd47c87
Merge branch 'feature-carmen' into feature-daniela
maryyfry Feb 3, 2023
8431796
Merge branch 'feature-Diaz' into feature-daniela
MiriamDiaz2306 Feb 3, 2023
f1b8604
Merge pull request #65 from dvnielx/feature-daniela
MiriamDiaz2306 Feb 3, 2023
156cf3c
Cambios
MiriamDiaz2306 Feb 3, 2023
76a78ba
cambios equis
MiriamDiaz2306 Feb 3, 2023
aef73cb
se pasa funcion de inicio de sesion con email al archivo configuracio…
dvnielx Feb 3, 2023
6220d09
arreglos después de merge
dvnielx Feb 3, 2023
2031327
código arreglado
dvnielx Feb 3, 2023
9fa7b02
comente un console log en firestore 35
MiriamDiaz2306 Feb 3, 2023
eff6f54
Merge branch 'feature-miriam' into feature-daniela
MiriamDiaz2306 Feb 3, 2023
133f72f
borré el archivo de iniciarSesionConCorreo
dvnielx Feb 3, 2023
f74df1c
commit posterior a merge
dvnielx Feb 3, 2023
ba29902
error eslint corregido
dvnielx Feb 3, 2023
fdf6a56
primeros 5 test
dvnielx Feb 4, 2023
2ac7faf
15 tests pasan pero los statements no funcionan
dvnielx Feb 5, 2023
64e74a7
creamos carpeta para tests de firebase petests firebase sin funcionar
dvnielx Feb 5, 2023
2dd5847
24 de 33 tests pasan pero aún no se muestra la cobertura
dvnielx Feb 6, 2023
9ccc761
avances read.me
dvnielx Feb 6, 2023
0a9b9a5
read.me listo y tests listos
dvnielx Feb 6, 2023
3708d7c
index fuera de carpetas para deploy
dvnielx Feb 6, 2023
1d8c77b
index en src de nuevo
dvnielx Feb 6, 2023
5eebfb2
se agrega netlify.toml
dvnielx Feb 6, 2023
25a93f1
errores de btnsdelete y taskform resueltos
dvnielx Feb 6, 2023
f176f5a
intento para hacer deploy
dvnielx Feb 6, 2023
d0449cc
cambio en linea 24 firestore.js. se elimino uid de user()
dvnielx Feb 6, 2023
bea711b
se agrega de nuevo .uid en user
dvnielx Feb 6, 2023
2d4bde9
algunos arreglos en styles.css
dvnielx Feb 7, 2023
5fb6840
agregamos redirect para deploy en netlify
dvnielx Feb 7, 2023
ea41e20
read.me con deploy en netlify
dvnielx Feb 7, 2023
9c1ca82
contenedor de likes centrado
dvnielx Feb 7, 2023
c434a97
se borran console.log
dvnielx Feb 7, 2023
79ce849
se agregan los proyectos desplegados y se hacen correcciones en el re…
dvnielx Feb 7, 2023
292717a
proyecto listo
dvnielx Feb 7, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
541 changes: 118 additions & 423 deletions README.md

Large diffs are not rendered by default.

24 changes: 20 additions & 4 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,19 @@
"test": "jest --coverage",
"start": "serve -s src/"
},

"devDependencies": {
"@babel/core": "^7.11.4",
"@babel/preset-env": "^7.11.0",
"babel-jest": "^27.0.1",
"eslint": "^8.3.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-base": "^14.2.1",
"eslint-plugin-import": "^2.18.2",
"eslint-plugin-jest": "^25.3.0",
"htmlhint": "^1.0.0",
"jest": "^27.0.1",
"regenerator-runtime": "^0.13.1",
"serve": "^13.0.2",
"serve": "^14.1.2",
"stylelint": "^14.1.0",
"stylelint-config-recommended": "^6.0.0"
},
Expand All @@ -39,5 +40,20 @@
"createdAt": "2022-11-30T16:52:37.204Z",
"version": "5.5.0",
"commit": "51e941edf1cc991930aefd7dd9c406a7c43741c1"
}
}
},
"dependencies": {
"firebase": "^9.15.0"
},
"directories": {
"test": "test"
},
"repository": {
"type": "git",
"url": "git+https://github.com/dvnielx/DEV002-social-network.git"
},
"author": "",
"bugs": {
"url": "https://github.com/dvnielx/DEV002-social-network/issues"
},
"homepage": "https://github.com/dvnielx/DEV002-social-network#readme"
}
1 change: 1 addition & 0 deletions src/_redirects
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/* /index.html 200
202 changes: 202 additions & 0 deletions src/firebase/configuracion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
/* eslint-disable no-unused-vars */
/* eslint-disable max-len */
/* eslint-disable no-alert */
/* eslint-disable no-console */
/* eslint-disable no-shadow */
// Importa la biblioteca de Firebase
// eslint-disable-next-line import/no-unresolved
import { initializeApp } from 'https://www.gstatic.com/firebasejs/9.15.0/firebase-app.js';
import {
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
sendEmailVerification,
GoogleAuthProvider,
onAuthStateChanged,
signInWithPopup,
updateProfile,
getAuth,
signOut,
// eslint-disable-next-line import/no-unresolved
} from 'https://www.gstatic.com/firebasejs/9.15.0/firebase-auth.js';
import {
getFirestore,
arrayRemove,
onSnapshot,
arrayUnion,
collection,
deleteDoc,
updateDoc,
Timestamp,
getDocs,
orderBy,
addDoc,
getDoc,
query,
doc,
// eslint-disable-next-line import/no-unresolved
} from 'https://www.gstatic.com/firebasejs/9.15.0/firebase-firestore.js';

// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: 'AIzaSyAAHfvbH9LChUrOwAbR4cydwCsmHa7Q330',
authDomain: 'usuarias-journey-mates.firebaseapp.com',
projectId: 'usuarias-journey-mates',
storageBucket: 'usuarias-journey-mates.appspot.com',
messagingSenderId: '15257223280',
appId: '1:15257223280:web:eecc0cb646124a2f42b4b5',
measurementId: 'G-4W8ETMYH7S',
};

// Inicializa la aplicación de Firebase
export const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);
export const provider = new GoogleAuthProvider(app);
export const db = getFirestore(app);
export const user = () => auth.currentUser;

export const saveTask = (description) => addDoc(collection(db, 'tasks'), {
description,
name: auth.currentUser.displayName,
uid: auth.currentUser.uid,
likes: [],
createdDateTime: Timestamp.fromDate(new Date()),
});

export const saveUser = (name, uid, email, pais) => addDoc(collection(db, 'users'), {
name,
uid,
email,
pais,
createdDateTime: Timestamp.fromDate(new Date()),
});

// Estas funciones realizan una operación específica en la colección de tareas en Firestore.
export const getTasks = () => getDocs(collection(db, 'tasks'));
export const deleteTask = (id) => deleteDoc(doc(db, 'tasks', id));
export const getTask = (id) => getDoc(doc(db, 'tasks', id));
export const updateTask = (id, newFields) => updateDoc(doc(db, 'tasks', id), newFields);
export const dateTask = (querySnapshot) => {
const q = query(collection(db, 'tasks'), orderBy('createdDateTime', 'desc'));
onSnapshot(q, querySnapshot);
};

// Create new users

export function registerUser(email, password, name, pais, callback) {
createUserWithEmailAndPassword(auth, email, password)
.then((userCredential) => {
sendEmailVerification(auth.currentUser);
updateProfile(auth.currentUser, {
displayName: name,

});

const user = userCredential.user;
const userId = user.uid;
user.displayName = name;
saveUser(user.displayName, userId, email, pais);
callback(true); // Se llama una función de callback para indicar que el registro se ha realizado correctamente.
})
.catch((error) => {
console.error(error.code);
if (error.code === 'auth/email-already-in-use') {
alert('Este correo ya está registrado');
} else if (error.code === 'auth/weak-password') {
alert('Tu contraseña debe contener al menos 6 caracteres');
} else if (error.code === 'auth/invalid-email') {
alert('Este correo no existe o es inválido');
} else if (error.code === 'auth/internal-error') {
alert('Completa todos los campos');
}
callback(false);
});
}

// Inicio de sesión con email

export async function inicioDeSesionEmail(email, password) {
try {
const userCredential = await signInWithEmailAndPassword(auth, email, password);
const user = userCredential.user;
const userId = user.uid;
return true; // Si la operación es exitosa, la función imprime un mensaje "signed in" y devuelve true.
} catch (error) {
if (error.code === 'auth/email-already-in-use') {
alert('Este correo ya está registrado');
} else if (error.code === 'auth/weak-password') {
alert('Tu contraseña no es segura');
} else if (error.code === 'auth/invalid-email') {
alert('Este correo no existe o es inválido');
} else if (error.code === 'auth/internal-error') {
alert('Completa todos los campos');
}
return false;
}
}

// Sign in with Google

export const authGoogle = async () => {
try {
const userResult = await signInWithPopup(auth, provider);
window.location.href = '/timeLine';
} catch (error) {
console.log(error);
}
};

// Cerrar sesión

export const signOutFirebase = (auth) => auth.signOut(); // llama a su método signOut() que termina la sesión actual.

export const onAuth = (auth) => {
auth.onAuthStateChanged((user) => {
if (user) {
console.log('user is signed in');
} else {
console.log('user is signed out');
}
});
};

// Like function

export const tapLike = (id, newLike) => {
updateDoc(doc(db, 'tasks', id), { // Actualiza el documento en la colección "tasks" con el
likes: // identificador "id" agregando un nuevo elemento "newLike" a la lista de "likes"
arrayUnion( // Permite agregar un nuevo elemento a un campo en la base de datos
newLike,
),
});
};

export const dislike = (id, oldLike) => { // Se realiza la operación opuesta, eliminando un elemento "oldLike" de la lista de "likes".
updateDoc(doc(db, 'tasks', id), { // updateDoc actualiza el documento en la base de datos y doc toma como argumentos db, task y id
likes:
arrayRemove( // Permite eliminar un elemento en la base de datos.
oldLike,
),
});
};

export {
createUserWithEmailAndPassword,
signInWithEmailAndPassword,
onAuthStateChanged,
GoogleAuthProvider,
signInWithPopup,
updateProfile,
getFirestore,
arrayRemove,
collection,
onSnapshot,
arrayUnion,
updateDoc,
deleteDoc,
Timestamp,
signOut,
getDocs,
getDoc,
addDoc,
doc,
};
135 changes: 135 additions & 0 deletions src/firebase/firestore.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
/* eslint-disable max-len */
/* eslint-disable no-alert */
/* eslint-disable no-restricted-globals */
/* eslint-disable no-console */
// import { async } from 'regenerator-runtime';
import {
saveTask, deleteTask, getTask, updateTask, tapLike, dislike, user, auth, dateTask,
} from './configuracion.js';

const tasksContainer = document.getElementById('contenedor-publicaciones');
const taskForm = document.getElementById('task-form');

let editStatus = false;
let id = '';

window.addEventListener('DOMContentLoaded', async () => {
dateTask((querySnapshot) => {
let html = '';

querySnapshot.forEach((doc) => {
const task = doc.data();
// const fecha=Timestamp.fromDate(new Date())
const likes = task.likes;
const likesNumber = likes.length;
const userId = user().uid;
const currentLike = likes.indexOf(userId);
let likeSrc = '';
const likeImg = () => {
if (currentLike === -1) {
likeSrc = 'images/like-logo.png';
} else {
likeSrc = './images/heart.png';
}
};
likeImg();

html += `
<div class = 'contenedor-padre'>
<p class="name-post"> ${task.name} </p>
<p class="date">${task.createdDateTime.toDate().toLocaleString('es-ES', {
year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit', minute: '2-digit',
})} </p>
<textarea class ='div-post-publicado'>${task.description}</textarea>`;

if (task.uid === auth.currentUser.uid) {
html += `
<img src="./images/editlogo2.png" class='btn-edit' data-id="${doc.id}">
<img src="./images/deletelogo2.png" class='btn-delete' data-id="${doc.id}">
<div class="contenedor-likes">
<img class="like-logo" data-id="${doc.id}" src='${likeSrc}' alt="heart">
<p class="contadorLikes" data-id="${doc.id}"> ${likesNumber}</p>
</div>
`;
} else {
html += `
<div class="contenedor-likes">
<img class="like-logo" data-id="${doc.id}" src='${likeSrc}' alt="heart">
<p class="contadorLikes" data-id="${doc.id}"> ${likesNumber}</p>
</div>
</div>
`;
}
});

tasksContainer.innerHTML = html;

const userId = user().uid;
const botonLike = tasksContainer.querySelectorAll('.like-logo');

botonLike.forEach((btn) => {
btn.addEventListener('click', async (e) => { // Al hacer clic, se obtiene su identificador único a partir de su atributo 'data-id'
const id1 = e.target.dataset.id;
const doc = await getTask(id1); // se llama a la función 'getTask' pasándole ese identificador como argumento
const likes = doc.data().likes;
const currentLike = likes.indexOf(userId);

if (currentLike === -1) {
tapLike(id1, userId); // se busca el valor 'userId' dentro de ese arreglo y se llama a la función 'tapLike' pasándole el identificador y el 'userId'
} else {
dislike(id1, userId);
}
});
});

const btnsDelete = tasksContainer.querySelectorAll('.btn-delete');
if (btnsDelete) {
btnsDelete.forEach((btn) => {
btn.addEventListener('click', ({ target: { dataset } }) => {
if (confirm('¿Estás segura de que deseas eliminar esta publicación?')) {
deleteTask(dataset.id); // se llama a la función deleteTask(dataset.id), pasándole como argumento el identificador de la tarea (que está almacenado en el atributo de datos dataset.id del botón)
}
});
});
}

const btnsEdit = tasksContainer.querySelectorAll('.btn-edit');
btnsEdit.forEach((btn) => {
btn.addEventListener('click', async (e) => {
const doc = await getTask(e.target.dataset.id); // "target" es utilizada para acceder al elemento que lanzó el evento click
const task = doc.data();

taskForm['task-description'].value = task.description;

editStatus = true;
id = doc.id;

taskForm['btn-publicar'].innerText = 'Publicar';
});
});
});
});

if (taskForm) {
taskForm.addEventListener('submit', (e) => {
e.preventDefault();

const description = taskForm['task-description'];

if (description.value.trim() === '') {
alert('No se pueden publicar campos vacíos :(');
} else {
if (!editStatus) {
saveTask(description.value);
} else {
updateTask(id, {
description: description.value,
});

editStatus = false;
}

taskForm.reset();
}
});
}
Loading