From ee06722f31038d23f4f97368aedf30c23e284458 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Wed, 3 May 2023 09:17:44 -0400 Subject: [PATCH 01/51] se a gregan templates --- src/Templates/home.js | 11 +++++++++++ src/Templates/postsArea.js | 24 ++++++++++++++++++++++++ src/Templates/profile.js | 23 +++++++++++++++++++++++ src/Templates/upload.js | 14 ++++++++++++++ src/index.html | 6 ++++++ 5 files changed, 78 insertions(+) create mode 100644 src/Templates/home.js create mode 100644 src/Templates/postsArea.js create mode 100644 src/Templates/profile.js create mode 100644 src/Templates/upload.js diff --git a/src/Templates/home.js b/src/Templates/home.js new file mode 100644 index 00000000..a634c5df --- /dev/null +++ b/src/Templates/home.js @@ -0,0 +1,11 @@ +export const home= ` +
add logo
+

Email

+ +

Password

+ +

Forgot your password?

+ + + +` \ No newline at end of file diff --git a/src/Templates/postsArea.js b/src/Templates/postsArea.js new file mode 100644 index 00000000..5ae0cf62 --- /dev/null +++ b/src/Templates/postsArea.js @@ -0,0 +1,24 @@ +export const postArea= ` + +
+
+
+ foto perfil + fecha + 3 puntitos +
+
+ foto/video +
+
+ logo likes + cant likes + comentarios + descripcion +
+
+
+` \ No newline at end of file diff --git a/src/Templates/profile.js b/src/Templates/profile.js new file mode 100644 index 00000000..8d46624d --- /dev/null +++ b/src/Templates/profile.js @@ -0,0 +1,23 @@ +export const profile= ` + +
+
+ add foto +
+
+ +

Name

+ +

Email

+ +

Number

+ +

Password

+ + +
+
+` \ No newline at end of file diff --git a/src/Templates/upload.js b/src/Templates/upload.js new file mode 100644 index 00000000..85227055 --- /dev/null +++ b/src/Templates/upload.js @@ -0,0 +1,14 @@ +export const upload= ` + +
+ add fto + +

Description

+ + + +
+` \ No newline at end of file diff --git a/src/index.html b/src/index.html index 788db3c9..181480e4 100644 --- a/src/index.html +++ b/src/index.html @@ -1,12 +1,18 @@ + Document + +
+
+ + \ No newline at end of file From 41231aa6fa9c372dfb52208eaabec8b17577199e Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 5 May 2023 10:10:15 -0400 Subject: [PATCH 02/51] test --- src/style.css | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/style.css diff --git a/src/style.css b/src/style.css new file mode 100644 index 00000000..6b72d292 --- /dev/null +++ b/src/style.css @@ -0,0 +1,52 @@ +body { + background: #98DEE9; +} + +#root { + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 20px; +} + +header { + height: 220px; + display:flex; + align-items: flex-end; +} + +.easygym{ +height: 200px; +width: auto; +} + +p { + font-size: 24px; + color: #0A4D68; +} + +.insertInfo { + background: #D9D9D9; + width: 318px; + height: 58px; + border: 1px solid #000000; + box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + border-radius: 25px; + display: flex; + text-align: center; +} + +textarea::placeholder { + font-size: 18px; + } + +.buttons { + background: #279A82; + width: 230px; + height: 40px; + border: 1px solid #000000; + box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + border-radius: 25px; + color: #FFFFFF; +} \ No newline at end of file From a57c8c7e750c3ced4b4b92262205a52e37785ee2 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 5 May 2023 11:17:31 -0400 Subject: [PATCH 03/51] css + firebase --- src/lib/index.js | 23 +++++++++++++++++++---- src/main.js | 13 ++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/lib/index.js b/src/lib/index.js index d1930899..8438d5f8 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -1,6 +1,21 @@ -// aqui exportaras las funciones que necesites +// Import the functions you need from the SDKs you need +import { initializeApp } from "firebase/app"; +import { getAuth } from 'firebase/auth'; +import { getFirestore } from "firebase/firestore"; +// TODO: Add SDKs for Firebase products that you want to use +// https://firebase.google.com/docs/web/setup#available-libraries -export const myFunction = () => { - // aqui tu codigo - console.log('Hola mundo!'); +// Your web app's Firebase configuration +const firebaseConfig = { + apiKey: 'AIzaSyBy7ytwRVA7WutSM-B2pbYrMohGBfYU9ys', + authDomain: 'socialnetwork-easygym.firebaseapp.com', + projectId: 'socialnetwork-easygym', + storageBucket: 'socialnetwork-easygym.appspot.com', + messagingSenderId: '306165904230', + appId: '1:306165904230:web:9b9dd7bd7e0fdf5d248ea7' }; + +// Initialize Firebase +export const app = initializeApp(firebaseConfig); +export const auth = getAuth(app); +export const db = getFirestore(app) diff --git a/src/main.js b/src/main.js index ac27e91a..acd90538 100644 --- a/src/main.js +++ b/src/main.js @@ -1,5 +1,12 @@ -// Este es el punto de entrada de tu aplicacion +import {home} from "./templates/home.js" -import { myFunction } from './lib/index.js'; -myFunction(); +const root = document.getElementById("root"); + +const routes = [ + { path: '/', component: home } + +] +//const default= '/'; + +root.innerHTML= home From 684504b405c2d0f5df425b11318fd1f12b9477d8 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 5 May 2023 11:19:19 -0400 Subject: [PATCH 04/51] image --- src/images/logo completo.png | Bin 0 -> 205263 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/images/logo completo.png diff --git a/src/images/logo completo.png b/src/images/logo completo.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7644031421bde104b7723d473ca5bfee6d3513 GIT binary patch literal 205263 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 vgT@i$?LYBgyiq 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

Wi_IqduAEUS5FXHliz=r~n*$QEl0;d=UX5D>J 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 literal 0 HcmV?d00001 From 6e69e67d940e9280f6ab8300431a16757d697956 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Mon, 8 May 2023 11:44:18 -0500 Subject: [PATCH 05/51] primeros pasos autenticacionFirebase --- .../{logo completo.png => logoCompleto.png} | Bin src/images/logoEasygym.png | Bin 0 -> 69057 bytes src/images/logoNameEasygym.png | Bin 0 -> 21248 bytes src/index.html | 4 +- src/lib/index.js | 21 ++++--- src/main.js | 52 ++++++++++++++++-- src/{Templates => pages}/home.js | 2 +- src/{Templates => pages}/postsArea.js | 0 src/{Templates => pages}/profile.js | 0 src/{Templates => pages}/upload.js | 0 src/style.css | 31 +++++++---- 11 files changed, 83 insertions(+), 27 deletions(-) rename src/images/{logo completo.png => logoCompleto.png} (100%) create mode 100644 src/images/logoEasygym.png create mode 100644 src/images/logoNameEasygym.png rename src/{Templates => pages}/home.js (94%) rename src/{Templates => pages}/postsArea.js (100%) rename src/{Templates => pages}/profile.js (100%) rename src/{Templates => pages}/upload.js (100%) diff --git a/src/images/logo completo.png b/src/images/logoCompleto.png similarity index 100% rename from src/images/logo completo.png rename to src/images/logoCompleto.png diff --git a/src/images/logoEasygym.png b/src/images/logoEasygym.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e7a15709c1a362d4a635961878749c1d166f1e GIT binary patch literal 69057 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 literal 0 HcmV?d00001 diff --git a/src/images/logoNameEasygym.png b/src/images/logoNameEasygym.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f1a410a280d09316a397d963bfc4156ed2c220 GIT binary patch literal 21248 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 I8n#jY2fSGOS^xk5 literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html index 181480e4..8c280c89 100644 --- a/src/index.html +++ b/src/index.html @@ -5,7 +5,8 @@ - Document + + Easy Gym @@ -13,6 +14,7 @@ + \ No newline at end of file diff --git a/src/lib/index.js b/src/lib/index.js index 8438d5f8..f8eedeef 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -1,21 +1,24 @@ // Import the functions you need from the SDKs you need -import { initializeApp } from "firebase/app"; +import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; -import { getFirestore } from "firebase/firestore"; +import { getFirestore } from 'firebase/firestore'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries // Your web app's Firebase configuration const firebaseConfig = { - apiKey: 'AIzaSyBy7ytwRVA7WutSM-B2pbYrMohGBfYU9ys', - authDomain: 'socialnetwork-easygym.firebaseapp.com', - projectId: 'socialnetwork-easygym', - storageBucket: 'socialnetwork-easygym.appspot.com', - messagingSenderId: '306165904230', - appId: '1:306165904230:web:9b9dd7bd7e0fdf5d248ea7' + apiKey: 'AIzaSyCe2vaz8aRBEWYlG2J1sf7ZtCOHZ-vdA2E', + authDomain: 'easygym-sn-d107b.firebaseapp.com', + projectId: 'easygym-sn-d107b', + storageBucket: 'easygym-sn-d107b.appspot.com', + messagingSenderId: '510233203554', + appId: '1:510233203554:web:d9d74905e251918902923b', + measurementId: 'G-EKGBH6JRB2', }; // Initialize Firebase export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); -export const db = getFirestore(app) +export const db = getFirestore(app); + +console.log(app); diff --git a/src/main.js b/src/main.js index acd90538..4d78a5a3 100644 --- a/src/main.js +++ b/src/main.js @@ -1,12 +1,52 @@ -import {home} from "./templates/home.js" +/* eslint-disable no-console */ +/* eslint-disable no-dupe-else-if */ +/* eslint-disable no-alert */ +/* eslint-disable no-unused-vars */ +//Importar las vistas +import { createUserWithEmailAndPassword } from 'firebase/auth'; +import { home } from './pages/home.js'; +import { auth } from './lib/index.js'; -const root = document.getElementById("root"); +const root = document.getElementById('root'); const routes = [ - { path: '/', component: home } + { path: '/', component: home }, -] -//const default= '/'; +]; -root.innerHTML= home +// const default= '/'; + +root.innerHTML = home; + +const loginForm = document.querySelector('form'); + +loginForm.addEventListener('submit', async (e) => { + e.preventDefault(); + + const email = loginForm.querySelector('input[type="email"]').value; + const password = loginForm.querySelector('input[type="password"]').value; + + console.log(email, password); + // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) + // await espera que la funcion cumpla con los parametros para ver un resultado o error + try { + const userCredentials = await createUserWithEmailAndPassword(auth, email, password); + console.log(userCredentials); + } catch (error) { + console.log(error.message); + console.log(error.code); + + if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); + } else if (error.code === 'auth/weak-password') { + alert('Your password must have a minimum of 6 characters '); + } else if (error.code === 'auth/invalid-email' && error.code === 'auth/weak-password') { + alert('Your email and password are invalid'); + } else if (error.code) { + alert('Something went wrong'); + } + } +}); diff --git a/src/Templates/home.js b/src/pages/home.js similarity index 94% rename from src/Templates/home.js rename to src/pages/home.js index a634c5df..4b499b18 100644 --- a/src/Templates/home.js +++ b/src/pages/home.js @@ -1,4 +1,4 @@ -export const home= ` +export const home = `

add logo

Email

diff --git a/src/Templates/postsArea.js b/src/pages/postsArea.js similarity index 100% rename from src/Templates/postsArea.js rename to src/pages/postsArea.js diff --git a/src/Templates/profile.js b/src/pages/profile.js similarity index 100% rename from src/Templates/profile.js rename to src/pages/profile.js diff --git a/src/Templates/upload.js b/src/pages/upload.js similarity index 100% rename from src/Templates/upload.js rename to src/pages/upload.js diff --git a/src/style.css b/src/style.css index 6b72d292..56f26241 100644 --- a/src/style.css +++ b/src/style.css @@ -1,5 +1,11 @@ body { background: #98DEE9; + padding: 5px; +} +form{ + display: flex; + flex-direction: column; + gap: 10px; } #root { @@ -11,37 +17,40 @@ body { } header { - height: 220px; + height: 250px; display:flex; align-items: flex-end; } .easygym{ height: 200px; -width: auto; + } -p { - font-size: 24px; +label { + font-size: 20px; color: #0A4D68; } .insertInfo { background: #D9D9D9; - width: 318px; - height: 58px; + width: 250px; + height: 35px; border: 1px solid #000000; box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); border-radius: 25px; display: flex; text-align: center; + margin-bottom: 10px; } -textarea::placeholder { - font-size: 18px; + +input::placeholder { + font-size: 15px; } -.buttons { + .button { + font-size: 17px; background: #279A82; width: 230px; height: 40px; @@ -49,4 +58,6 @@ textarea::placeholder { box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); border-radius: 25px; color: #FFFFFF; -} \ No newline at end of file +} + + From 9aff8f5ef1ee79888dab33414d324c178ba24c1b Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Mon, 8 May 2023 11:06:01 -0600 Subject: [PATCH 06/51] prueba --- src/images/{logo completo.png => logoCompleto.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename src/images/{logo completo.png => logoCompleto.png} (100%) diff --git a/src/images/logo completo.png b/src/images/logoCompleto.png similarity index 100% rename from src/images/logo completo.png rename to src/images/logoCompleto.png From eb83ae0689a1a167c78c81df7748caf473b817d5 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Mon, 8 May 2023 14:41:53 -0500 Subject: [PATCH 07/51] cambio a nodos home --- src/index.html | 3 +-- src/lib/index.js | 1 + src/main.js | 11 ++------- src/pages/home.js | 61 ++++++++++++++++++++++++++++++++++++++--------- 4 files changed, 54 insertions(+), 22 deletions(-) diff --git a/src/index.html b/src/index.html index 8c280c89..0827033e 100644 --- a/src/index.html +++ b/src/index.html @@ -10,8 +10,7 @@ -
-
+
diff --git a/src/lib/index.js b/src/lib/index.js index f8eedeef..0cafb4cf 100644 --- a/src/lib/index.js +++ b/src/lib/index.js @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ // Import the functions you need from the SDKs you need import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; diff --git a/src/main.js b/src/main.js index 4d78a5a3..2e1b7bee 100644 --- a/src/main.js +++ b/src/main.js @@ -1,24 +1,17 @@ /* eslint-disable no-console */ -/* eslint-disable no-dupe-else-if */ -/* eslint-disable no-alert */ -/* eslint-disable no-unused-vars */ -//Importar las vistas +// Importar las vistas import { createUserWithEmailAndPassword } from 'firebase/auth'; import { home } from './pages/home.js'; import { auth } from './lib/index.js'; - const root = document.getElementById('root'); const routes = [ { path: '/', component: home }, - ]; - +home(root); // const default= '/'; -root.innerHTML = home; - const loginForm = document.querySelector('form'); loginForm.addEventListener('submit', async (e) => { diff --git a/src/pages/home.js b/src/pages/home.js index 4b499b18..ae760e6a 100644 --- a/src/pages/home.js +++ b/src/pages/home.js @@ -1,11 +1,50 @@ -export const home = ` -
add logo
-

Email

- -

Password

- -

Forgot your password?

- - - -` \ No newline at end of file +export function home(container) { + // Crear elementos + const header = document.createElement('header'); + const logo = document.createElement('img'); + const form = document.createElement('form'); + const emailLabel = document.createElement('label'); + const emailInput = document.createElement('input'); + const passwordLabel = document.createElement('label'); + const passwordInput = document.createElement('input'); + const forgotPasswordLink = document.createElement('a'); + const loginButton = document.createElement('button'); + const signupButton = document.createElement('button'); + const continueWithGoogleButton = document.createElement('button'); + + // Establecer atributos y contenido + logo.setAttribute('src', './images/logoNameEasygym.png'); + emailLabel.textContent = 'Email'; + emailInput.classList.add('insertInfo'); + emailInput.setAttribute('placeholder', 'example@gmail.com'); + passwordLabel.textContent = 'Password'; + passwordInput.classList.add('insertInfo'); + emailInput.setAttribute('type', 'email'); + passwordInput.setAttribute('type', 'password'); + passwordInput.setAttribute('placeholder', 'Mypassword'); + forgotPasswordLink.textContent = 'Forgot your password?'; + forgotPasswordLink.setAttribute('href', '#'); + loginButton.classList.add('button'); + loginButton.textContent = 'Log In'; + signupButton.classList.add('button'); + signupButton.textContent = 'Sign Up'; + continueWithGoogleButton.classList.add('button'); + continueWithGoogleButton.textContent = 'Continue with Google'; + + // Agregar elementos al header + header.appendChild(logo); + + // Agregar elementos al formulario + form.appendChild(emailLabel); + form.appendChild(emailInput); + form.appendChild(passwordLabel); + form.appendChild(passwordInput); + form.appendChild(forgotPasswordLink); + form.appendChild(loginButton); + form.appendChild(signupButton); + form.appendChild(continueWithGoogleButton); + + // Agregar elementos al contenedor (div) especificado + container.appendChild(header); + container.appendChild(form); +} From 9c345bbf47535eda6d4fd3fa252efc7a9545d58b Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 9 May 2023 22:46:43 -0500 Subject: [PATCH 08/51] rutero funcionando --- src/images/logoEasygymOnly.png | Bin 0 -> 19055 bytes src/index.html | 2 +- src/lib/{index.js => firebase.js} | 3 +- src/main.js | 131 +++++++++++++++++++--------- src/pages/createAccount.js | 84 ++++++++++++++++++ src/pages/home.js | 67 ++++++-------- src/pages/{profile.js => signIn.js} | 2 +- src/pages/upload.js | 14 --- src/pages/{postsArea.js => wall.js} | 0 src/routes.js | 12 +++ src/style.css | 25 +++++- 11 files changed, 242 insertions(+), 98 deletions(-) create mode 100644 src/images/logoEasygymOnly.png rename src/lib/{index.js => firebase.js} (90%) create mode 100644 src/pages/createAccount.js rename src/pages/{profile.js => signIn.js} (91%) delete mode 100644 src/pages/upload.js rename src/pages/{postsArea.js => wall.js} (100%) create mode 100644 src/routes.js diff --git a/src/images/logoEasygymOnly.png b/src/images/logoEasygymOnly.png new file mode 100644 index 0000000000000000000000000000000000000000..e983c96d1e28a75bf1e1a75aaa486402362f7352 GIT binary patch literal 19055 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 literal 0 HcmV?d00001 diff --git a/src/index.html b/src/index.html index 0827033e..6a4683f3 100644 --- a/src/index.html +++ b/src/index.html @@ -13,7 +13,7 @@

- + \ No newline at end of file diff --git a/src/lib/index.js b/src/lib/firebase.js similarity index 90% rename from src/lib/index.js rename to src/lib/firebase.js index 0cafb4cf..833f2c6a 100644 --- a/src/lib/index.js +++ b/src/lib/firebase.js @@ -1,5 +1,4 @@ -/* eslint-disable no-console */ -// Import the functions you need from the SDKs you need + import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; diff --git a/src/main.js b/src/main.js index 2e1b7bee..8c16903a 100644 --- a/src/main.js +++ b/src/main.js @@ -1,45 +1,96 @@ -/* eslint-disable no-console */ // Importar las vistas -import { createUserWithEmailAndPassword } from 'firebase/auth'; + import { home } from './pages/home.js'; -import { auth } from './lib/index.js'; +import { createAccount } from './pages/createAccount.js'; const root = document.getElementById('root'); -const routes = [ - { path: '/', component: home }, -]; -home(root); -// const default= '/'; - -const loginForm = document.querySelector('form'); - -loginForm.addEventListener('submit', async (e) => { - e.preventDefault(); - - const email = loginForm.querySelector('input[type="email"]').value; - const password = loginForm.querySelector('input[type="password"]').value; - - console.log(email, password); - // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) - // await espera que la funcion cumpla con los parametros para ver un resultado o error - try { - const userCredentials = await createUserWithEmailAndPassword(auth, email, password); - console.log(userCredentials); - } catch (error) { - console.log(error.message); - console.log(error.code); - - if (error.code === 'auth/email-already-in-use') { - alert('Email already in use'); - } else if (error.code === 'auth/invalid-email') { - alert('Invalid email'); - } else if (error.code === 'auth/weak-password') { - alert('Your password must have a minimum of 6 characters '); - } else if (error.code === 'auth/invalid-email' && error.code === 'auth/weak-password') { - alert('Your email and password are invalid'); - } else if (error.code) { - alert('Something went wrong'); - } - } -}); +const routes = { + '/': home, + '/createAccount': createAccount, +}; + +export const navigateTo = (pathname) => { + window.history.pushState({}, pathname, window.location.origin + pathname); + root.innerHTML = ''; + root.appendChild(routes[pathname](navigateTo)); +}; + +window.onpopstate = () => { + root.innerHTML = ''; + root.appendChild(routes[window.location.pathname](navigateTo)); +}; + +navigateTo('/'); + +/* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +* +export const navigateTo = (pathname) => { + /* window.history.pushState( + {}, + pathname, + window.location.origin + pathname, + ); + // root.removeChild(root.firstChild); + root.innerHTML = ''; + root.appendChild(routes[pathname](this)); +}; */ + +/* const getDefaultComponent = () => { +// Puedes reemplazar esto con un componente de error personalizado si lo deseas + const errorComponent = document.createElement('div'); + errorComponent.innerText = 'Error: Ruta no encontrada'; + return errorComponent; +}; */ + +/* window.onpopstate = () => { + // const component = routes[window.location.pathname] // || getDefaultComponent; + const path = window.location.pathname; + // root.removeChild(root.firstChild); + // root.appendChild(component()); + navigateTo(path); +}; */ + +// navigateTo('/'); + +// const initialComponent = routes[window.location.pathname] || getDefaultComponent; +// root.appendChild(initialComponent()); + +// const routes = (route) => { +// root.innerHTML = ''; + +// switch (route) { +// case './': { +// return root.appendChild(home()); +// break; +// } +// case './createAccount': { +// return root.appendChild(createAccount()); +// } +// // Agrega más casos de rutas aquí si es necesario +// default: { +// // Puedes agregar una ruta predeterminada o manejar casos no coincidentes +// break; +// } +// } +// }; + +// export {routes} diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js new file mode 100644 index 00000000..25a67e55 --- /dev/null +++ b/src/pages/createAccount.js @@ -0,0 +1,84 @@ +import { createUserWithEmailAndPassword } from 'firebase/auth'; +import { auth } from '../lib/firebase.js'; + +export function createAccount() { + // Crear elementos + const container = document.createElement('div'); + const header = document.createElement('header'); + const logo = document.createElement('img'); + const form = document.createElement('form'); + const emailLabel = document.createElement('label'); + const emailInput = document.createElement('input'); + const passwordLabel = document.createElement('label'); + const passwordInput = document.createElement('input'); + const questionAccount = document.createElement('p'); + const linkSignIn = document.createElement('a'); + const createButton = document.createElement('button'); + const continueWithGoogleButton = document.createElement('button'); + + // Establecer atributos y contenido + logo.setAttribute('src', './images/logoNameEasygym.png'); + emailLabel.textContent = 'Email'; + emailInput.classList.add('insertInfo'); + emailInput.setAttribute('placeholder', 'example@gmail.com'); + passwordLabel.textContent = 'Password'; + passwordInput.classList.add('insertInfo'); + emailInput.setAttribute('type', 'email'); + passwordInput.setAttribute('type', 'password'); + passwordInput.setAttribute('placeholder', 'Mypassword'); + questionAccount.textContent = 'Already have an account?'; + linkSignIn.setAttribute('href', '#'); + linkSignIn.textContent = 'Sign In'; + createButton.classList.add('button'); + createButton.textContent = 'Create account'; + continueWithGoogleButton.classList.add('button'); + continueWithGoogleButton.textContent = 'Create with Google'; + + // Agregar elementos al header + header.appendChild(logo); + + // Agregar elementos al formulario + form.appendChild(emailLabel); + form.appendChild(emailInput); + form.appendChild(passwordLabel); + form.appendChild(passwordInput); + form.appendChild(createButton); + form.appendChild(continueWithGoogleButton); + form.appendChild(questionAccount); + form.appendChild(linkSignIn); + + // Agregar elementos al contenedor (div) especificado + container.appendChild(header); + container.appendChild(form); + + // Add event listeners + + createButton.addEventListener('click', async (e) => { + e.preventDefault(); + + const email = emailInput.value; + const password = passwordInput.value; + + console.log(email, password); + // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) + // await espera que la funcion cumpla con los parametros para ver un resultado o error + try { + const userCredentials = await createUserWithEmailAndPassword(auth, email, password); + console.log(userCredentials); + } catch (error) { + console.log(error.message); + console.log(error.code); + + if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); + } else if (error.code === 'auth/weak-password') { + alert('Your password must have a minimum of 6 characters '); + } else if (error.code) { + alert('Something went wrong'); + } + } + }); + return container; +} diff --git a/src/pages/home.js b/src/pages/home.js index ae760e6a..13da3b6c 100644 --- a/src/pages/home.js +++ b/src/pages/home.js @@ -1,50 +1,41 @@ -export function home(container) { - // Crear elementos +export function home(navigateTo) { + const container = document.createElement('div'); const header = document.createElement('header'); const logo = document.createElement('img'); - const form = document.createElement('form'); - const emailLabel = document.createElement('label'); - const emailInput = document.createElement('input'); - const passwordLabel = document.createElement('label'); - const passwordInput = document.createElement('input'); - const forgotPasswordLink = document.createElement('a'); - const loginButton = document.createElement('button'); - const signupButton = document.createElement('button'); - const continueWithGoogleButton = document.createElement('button'); + const divButtons = document.createElement('div'); + const description = document.createElement('p'); + const signInButton = document.createElement('button'); + const createAccount = document.createElement('button'); // Establecer atributos y contenido - logo.setAttribute('src', './images/logoNameEasygym.png'); - emailLabel.textContent = 'Email'; - emailInput.classList.add('insertInfo'); - emailInput.setAttribute('placeholder', 'example@gmail.com'); - passwordLabel.textContent = 'Password'; - passwordInput.classList.add('insertInfo'); - emailInput.setAttribute('type', 'email'); - passwordInput.setAttribute('type', 'password'); - passwordInput.setAttribute('placeholder', 'Mypassword'); - forgotPasswordLink.textContent = 'Forgot your password?'; - forgotPasswordLink.setAttribute('href', '#'); - loginButton.classList.add('button'); - loginButton.textContent = 'Log In'; - signupButton.classList.add('button'); - signupButton.textContent = 'Sign Up'; - continueWithGoogleButton.classList.add('button'); - continueWithGoogleButton.textContent = 'Continue with Google'; + logo.setAttribute('src', './images/logoEasygymOnly.png'); + divButtons.classList.add('descriptionPage'); + description.textContent = 'We are a community where you can view and share quick routines to perform from anywhere in the world.'; + signInButton.classList.add('button'); + signInButton.textContent = 'Sign In'; + createAccount.classList.add('button'); + createAccount.textContent = 'Create account'; // Agregar elementos al header header.appendChild(logo); - // Agregar elementos al formulario - form.appendChild(emailLabel); - form.appendChild(emailInput); - form.appendChild(passwordLabel); - form.appendChild(passwordInput); - form.appendChild(forgotPasswordLink); - form.appendChild(loginButton); - form.appendChild(signupButton); - form.appendChild(continueWithGoogleButton); + // Agregar elementos al div + divButtons.appendChild(description); + divButtons.appendChild(signInButton); + divButtons.appendChild(createAccount); // Agregar elementos al contenedor (div) especificado container.appendChild(header); - container.appendChild(form); + container.appendChild(divButtons); + + // llamado a los botones + createAccount.addEventListener('click', () => { + navigateTo('/createAccount'); + }); + + signInButton.addEventListener('click', () => { + navigateTo('/signIn'); + }); + + return container; } diff --git a/src/pages/profile.js b/src/pages/signIn.js similarity index 91% rename from src/pages/profile.js rename to src/pages/signIn.js index 8d46624d..14f3fecc 100644 --- a/src/pages/profile.js +++ b/src/pages/signIn.js @@ -17,7 +17,7 @@ export const profile= `

Password

- + ` \ No newline at end of file diff --git a/src/pages/upload.js b/src/pages/upload.js deleted file mode 100644 index 85227055..00000000 --- a/src/pages/upload.js +++ /dev/null @@ -1,14 +0,0 @@ -export const upload= ` - -
- add fto - -

Description

- - - -
-` \ No newline at end of file diff --git a/src/pages/postsArea.js b/src/pages/wall.js similarity index 100% rename from src/pages/postsArea.js rename to src/pages/wall.js diff --git a/src/routes.js b/src/routes.js new file mode 100644 index 00000000..4014b0db --- /dev/null +++ b/src/routes.js @@ -0,0 +1,12 @@ +const root = document.getElementById('root'); + +export const routes = { + '/': home, + '/createAccount': createAccount, +}; + +export const navigateTo = (pathname) => { + window.history.pushState({}, pathname, window.location.origin + pathname); + root.innerHTML = ''; + root.appendChild(routes[pathname]()); +}; diff --git a/src/style.css b/src/style.css index 56f26241..bc2efc0b 100644 --- a/src/style.css +++ b/src/style.css @@ -5,10 +5,12 @@ body { form{ display: flex; flex-direction: column; + align-items: center; gap: 10px; } #root { + margin-top: 5%; display: flex; flex-direction: column; align-items: center; @@ -47,9 +49,9 @@ label { input::placeholder { font-size: 15px; - } +} - .button { +.button { font-size: 17px; background: #279A82; width: 230px; @@ -58,6 +60,25 @@ input::placeholder { box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); border-radius: 25px; color: #FFFFFF; + cursor: pointer; +} + +.button:hover { + background-color: #1f836d; } +/* CSS DE PAGE HOME */ +.descriptionPage { + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; + width: 60%; +} + +p{ + font-size:25px; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; + color: #0A4D68; +} \ No newline at end of file From 61125ac28df1cae6bc0e50280ab6f031f09c3550 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 9 May 2023 23:04:27 -0500 Subject: [PATCH 09/51] funciones organizadas --- src/main.js | 85 +++++------------------------------------------ src/pages/home.js | 3 ++ 2 files changed, 11 insertions(+), 77 deletions(-) diff --git a/src/main.js b/src/main.js index 8c16903a..cc04e30a 100644 --- a/src/main.js +++ b/src/main.js @@ -10,87 +10,18 @@ const routes = { '/createAccount': createAccount, }; -export const navigateTo = (pathname) => { - window.history.pushState({}, pathname, window.location.origin + pathname); +function navigateTo(pathname) { + window.history.pushState({}, pathname, window.location.origin + pathname); // Guada el historial root.innerHTML = ''; - root.appendChild(routes[pathname](navigateTo)); -}; + const view = routes[pathname]; + root.appendChild(view(navigateTo)); +} window.onpopstate = () => { root.innerHTML = ''; - root.appendChild(routes[window.location.pathname](navigateTo)); + const path = window.location.pathname; + const view = routes[path]; + root.appendChild(view(navigateTo)); }; navigateTo('/'); - -/* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -* -export const navigateTo = (pathname) => { - /* window.history.pushState( - {}, - pathname, - window.location.origin + pathname, - ); - // root.removeChild(root.firstChild); - root.innerHTML = ''; - root.appendChild(routes[pathname](this)); -}; */ - -/* const getDefaultComponent = () => { -// Puedes reemplazar esto con un componente de error personalizado si lo deseas - const errorComponent = document.createElement('div'); - errorComponent.innerText = 'Error: Ruta no encontrada'; - return errorComponent; -}; */ - -/* window.onpopstate = () => { - // const component = routes[window.location.pathname] // || getDefaultComponent; - const path = window.location.pathname; - // root.removeChild(root.firstChild); - // root.appendChild(component()); - navigateTo(path); -}; */ - -// navigateTo('/'); - -// const initialComponent = routes[window.location.pathname] || getDefaultComponent; -// root.appendChild(initialComponent()); - -// const routes = (route) => { -// root.innerHTML = ''; - -// switch (route) { -// case './': { -// return root.appendChild(home()); -// break; -// } -// case './createAccount': { -// return root.appendChild(createAccount()); -// } -// // Agrega más casos de rutas aquí si es necesario -// default: { -// // Puedes agregar una ruta predeterminada o manejar casos no coincidentes -// break; -// } -// } -// }; - -// export {routes} diff --git a/src/pages/home.js b/src/pages/home.js index 13da3b6c..6be7e59d 100644 --- a/src/pages/home.js +++ b/src/pages/home.js @@ -1,3 +1,6 @@ +/* +* @param [function] navigateTo: metodo para navegar a otra vista +*/ export function home(navigateTo) { const container = document.createElement('div'); const header = document.createElement('header'); From c77d4ff946edcd68d2cf6f19de815047f2ea9777 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 9 May 2023 23:16:47 -0500 Subject: [PATCH 10/51] css container nuevo --- src/main.js | 2 +- src/pages/createAccount.js | 2 ++ src/pages/home.js | 1 + src/routes.js | 12 ------------ src/style.css | 6 ++++++ 5 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 src/routes.js diff --git a/src/main.js b/src/main.js index cc04e30a..6ad4bf4c 100644 --- a/src/main.js +++ b/src/main.js @@ -11,7 +11,7 @@ const routes = { }; function navigateTo(pathname) { - window.history.pushState({}, pathname, window.location.origin + pathname); // Guada el historial + window.history.pushState({}, pathname, window.location.origin + pathname); // Guarda el historial root.innerHTML = ''; const view = routes[pathname]; root.appendChild(view(navigateTo)); diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 25a67e55..46e0acbe 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -1,3 +1,4 @@ +// eslint-disable-next-line import/no-extraneous-dependencies import { createUserWithEmailAndPassword } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; @@ -17,6 +18,7 @@ export function createAccount() { const continueWithGoogleButton = document.createElement('button'); // Establecer atributos y contenido + container.classList.add('container'); logo.setAttribute('src', './images/logoNameEasygym.png'); emailLabel.textContent = 'Email'; emailInput.classList.add('insertInfo'); diff --git a/src/pages/home.js b/src/pages/home.js index 6be7e59d..208d5576 100644 --- a/src/pages/home.js +++ b/src/pages/home.js @@ -11,6 +11,7 @@ export function home(navigateTo) { const createAccount = document.createElement('button'); // Establecer atributos y contenido + container.classList.add('container'); logo.setAttribute('src', './images/logoEasygymOnly.png'); divButtons.classList.add('descriptionPage'); description.textContent = 'We are a community where you can view and share quick routines to perform from anywhere in the world.'; diff --git a/src/routes.js b/src/routes.js deleted file mode 100644 index 4014b0db..00000000 --- a/src/routes.js +++ /dev/null @@ -1,12 +0,0 @@ -const root = document.getElementById('root'); - -export const routes = { - '/': home, - '/createAccount': createAccount, -}; - -export const navigateTo = (pathname) => { - window.history.pushState({}, pathname, window.location.origin + pathname); - root.innerHTML = ''; - root.appendChild(routes[pathname]()); -}; diff --git a/src/style.css b/src/style.css index bc2efc0b..2c3d68f4 100644 --- a/src/style.css +++ b/src/style.css @@ -69,6 +69,12 @@ input::placeholder { /* CSS DE PAGE HOME */ +.container{ + display: flex; + flex-direction: column; + align-items: center; +} + .descriptionPage { display: flex; flex-direction: column; From 347316d1efb8a5bab21ba49646503e640962d7a8 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Wed, 10 May 2023 15:44:16 -0400 Subject: [PATCH 11/51] log in con google --- src/pages/createAccount.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 46e0acbe..9a3a932b 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -1,8 +1,8 @@ // eslint-disable-next-line import/no-extraneous-dependencies -import { createUserWithEmailAndPassword } from 'firebase/auth'; +import { createUserWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; -export function createAccount() { +export function createAccount(navigateTo) { // Crear elementos const container = document.createElement('div'); const header = document.createElement('header'); @@ -82,5 +82,17 @@ export function createAccount() { } } }); + console.log('hola'); + continueWithGoogleButton.addEventListener('click', async (e) => { + e.preventDefault(); + const provider = new GoogleAuthProvider(); + + try { + const credentials = await signInWithPopup(auth, provider); + console.log(credentials); + } catch (error) { + console.log(error); + } + }); return container; } From 64571b97a7255158b5c88ece08a61971d72f84b6 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Thu, 11 May 2023 14:28:17 -0600 Subject: [PATCH 12/51] Errores & SignIn --- src/main.js | 4 ++ src/pages/createAccount.js | 25 +++++-- src/pages/signIn.js | 129 ++++++++++++++++++++++++++++++------- 3 files changed, 130 insertions(+), 28 deletions(-) diff --git a/src/main.js b/src/main.js index 6ad4bf4c..c571ac3e 100644 --- a/src/main.js +++ b/src/main.js @@ -1,13 +1,17 @@ +/* eslint-disable import/named */ +/* eslint-disable no-unused-vars */ // Importar las vistas import { home } from './pages/home.js'; import { createAccount } from './pages/createAccount.js'; +import { signIn } from './pages/signIn.js'; const root = document.getElementById('root'); const routes = { '/': home, '/createAccount': createAccount, + '/signIn': signIn, }; function navigateTo(pathname) { diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 9a3a932b..e1a924b0 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -1,3 +1,4 @@ +/* eslint-disable no-alert */ // eslint-disable-next-line import/no-extraneous-dependencies import { createUserWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; @@ -8,6 +9,8 @@ export function createAccount(navigateTo) { const header = document.createElement('header'); const logo = document.createElement('img'); const form = document.createElement('form'); + const nameLabel = document.createElement('label'); + const nameInput = document.createElement('input'); const emailLabel = document.createElement('label'); const emailInput = document.createElement('input'); const passwordLabel = document.createElement('label'); @@ -20,6 +23,9 @@ export function createAccount(navigateTo) { // Establecer atributos y contenido container.classList.add('container'); logo.setAttribute('src', './images/logoNameEasygym.png'); + nameLabel.textContent = 'Name'; + nameInput.classList.add('insertInfo'); + nameInput.setAttribute('placeholder', 'My name'); emailLabel.textContent = 'Email'; emailInput.classList.add('insertInfo'); emailInput.setAttribute('placeholder', 'example@gmail.com'); @@ -34,12 +40,14 @@ export function createAccount(navigateTo) { createButton.classList.add('button'); createButton.textContent = 'Create account'; continueWithGoogleButton.classList.add('button'); - continueWithGoogleButton.textContent = 'Create with Google'; + continueWithGoogleButton.textContent = 'Continue with Google'; // Agregar elementos al header header.appendChild(logo); // Agregar elementos al formulario + form.appendChild(nameLabel); + form.appendChild(nameInput); form.appendChild(emailLabel); form.appendChild(emailInput); form.appendChild(passwordLabel); @@ -54,10 +62,14 @@ export function createAccount(navigateTo) { container.appendChild(form); // Add event listeners + linkSignIn.addEventListener('click', (e) => { + e.preventDefault(); + navigateTo('/signIn'); + }); createButton.addEventListener('click', async (e) => { e.preventDefault(); - + // const name = nameInput.value; const email = emailInput.value; const password = passwordInput.value; @@ -73,16 +85,19 @@ export function createAccount(navigateTo) { if (error.code === 'auth/email-already-in-use') { alert('Email already in use'); - } else if (error.code === 'auth/invalid-email') { - alert('Invalid email'); + } else if (error.code === 'auth/missing-email') { + alert('Introduce your email'); } else if (error.code === 'auth/weak-password') { alert('Your password must have a minimum of 6 characters '); + } else if (error.code === 'auth/missing-password') { + alert('Introduce your password'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); } else if (error.code) { alert('Something went wrong'); } } }); - console.log('hola'); continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); const provider = new GoogleAuthProvider(); diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 14f3fecc..a3cb805d 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -1,23 +1,106 @@ -export const profile= ` - -
-
- add foto -
-
- -

Name

- -

Email

- -

Number

- -

Password

- - -
-
-` \ No newline at end of file +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable no-alert */ +import { signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; +import { auth } from '../lib/firebase.js'; + +export function signIn(navigateTo) { + // Crear elementos + const container = document.createElement('div'); + const header = document.createElement('header'); + const logo = document.createElement('img'); + const form = document.createElement('form'); + const emailLabel = document.createElement('label'); + const emailInput = document.createElement('input'); + const passwordLabel = document.createElement('label'); + const passwordInput = document.createElement('input'); + const questionAccount = document.createElement('p'); + const linkSignIn = document.createElement('a'); + const signInButton = document.createElement('button'); + const continueWithGoogleButton = document.createElement('button'); + + // Establecer atributos y contenido + container.classList.add('container'); + logo.setAttribute('src', './images/logoNameEasygym.png'); + emailLabel.textContent = 'Email'; + emailInput.classList.add('insertInfo'); + emailInput.setAttribute('placeholder', 'example@gmail.com'); + passwordLabel.textContent = 'Password'; + passwordInput.classList.add('insertInfo'); + emailInput.setAttribute('type', 'email'); + passwordInput.setAttribute('type', 'password'); + passwordInput.setAttribute('placeholder', 'Mypassword'); + questionAccount.textContent = 'Don\'t have an account?'; + linkSignIn.setAttribute('href', '#'); + linkSignIn.textContent = 'Create account'; + signInButton.classList.add('button'); + signInButton.textContent = 'Sign In'; + continueWithGoogleButton.classList.add('button'); + continueWithGoogleButton.textContent = 'Continue with Google'; + + // Agregar elementos al header + header.appendChild(logo); + + // Agregar elementos al formulario + form.appendChild(emailLabel); + form.appendChild(emailInput); + form.appendChild(passwordLabel); + form.appendChild(passwordInput); + form.appendChild(signInButton); + form.appendChild(continueWithGoogleButton); + form.appendChild(questionAccount); + form.appendChild(linkSignIn); + + // Agregar elementos al contenedor (div) especificado + container.appendChild(header); + container.appendChild(form); + + // Add event listeners + linkSignIn.addEventListener('click', (e) => { + e.preventDefault(); + navigateTo('/createAccount'); + }); + + signInButton.addEventListener('click', async (e) => { + e.preventDefault(); + + const email = emailInput.value; + const password = passwordInput.value; + + console.log(email, password); + // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) + // await espera que la funcion cumpla con los parametros para ver un resultado o error + try { + const userCredentials = await signInWithEmailAndPassword(auth, email, password); + console.log(userCredentials); + } catch (error) { + console.log(error.message); + console.log(error.code); + + if (error.code === 'auth/wrong-password') { + alert('Wrong password !'); + } else if (error.code === 'auth/user-not-found') { + alert('User not found !'); + } else if (error.code === 'auth/missing-password') { + alert('Introduce your password'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid user !'); + } else if (error.code === 'auth/internal-error') { + alert('Internal error, try again !'); + } else if (error.code) { + alert('Something went wrong !'); + } + } + }); + continueWithGoogleButton.addEventListener('click', async (e) => { + e.preventDefault(); + const provider = new GoogleAuthProvider(); + + try { + const credentials = await signInWithPopup(auth, provider); + console.log(credentials); + } catch (error) { + console.log(error); + } + }); + return container; +} From 4de86ee8815073e99f8cb8d42d91a1f600b15e0f Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Thu, 11 May 2023 16:34:02 -0400 Subject: [PATCH 13/51] para hacer pull --- src/main.js | 3 +++ src/pages/createAccount.js | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/main.js b/src/main.js index 6ad4bf4c..6fbce96a 100644 --- a/src/main.js +++ b/src/main.js @@ -11,12 +11,15 @@ const routes = { }; function navigateTo(pathname) { + /*objeto que proporciona acceso y control sobre el historial de navegación del navegador*/ + /*pushState (state, title, url) es un método del objeto history que permite modificar la URL del navegador sin recargar la página*/ window.history.pushState({}, pathname, window.location.origin + pathname); // Guarda el historial root.innerHTML = ''; const view = routes[pathname]; root.appendChild(view(navigateTo)); } +/*window.onpopstate se utiliza para manejar el evento de cambio en el historial de navegación del navegador*/ window.onpopstate = () => { root.innerHTML = ''; const path = window.location.pathname; diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 9a3a932b..da644b58 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -55,6 +55,10 @@ export function createAccount(navigateTo) { // Add event listeners + linkSignIn.addEventListener('click', () => { + navigateTo('/signIn'); + }); + createButton.addEventListener('click', async (e) => { e.preventDefault(); From bec761c468df7fe2e1fa6f8d32efec74fd6d2aa5 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Thu, 11 May 2023 20:09:28 -0400 Subject: [PATCH 14/51] view wall --- src/main.js | 2 ++ src/pages/signIn.js | 1 + src/pages/wall.js | 48 +++++++++++++++++++++++++++++++++------------ src/style.css | 17 +++++++++++++--- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/main.js b/src/main.js index 14aac3f4..2abd17b9 100644 --- a/src/main.js +++ b/src/main.js @@ -5,6 +5,7 @@ import { home } from './pages/home.js'; import { createAccount } from './pages/createAccount.js'; import { signIn } from './pages/signIn.js'; +import { wall } from './pages/wall.js'; const root = document.getElementById('root'); @@ -12,6 +13,7 @@ const routes = { '/': home, '/createAccount': createAccount, '/signIn': signIn, + '/wall' :wall, }; function navigateTo(pathname) { diff --git a/src/pages/signIn.js b/src/pages/signIn.js index a3cb805d..83a49d31 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -90,6 +90,7 @@ export function signIn(navigateTo) { alert('Something went wrong !'); } } + navigateTo('/wall') }); continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); diff --git a/src/pages/wall.js b/src/pages/wall.js index 5ae0cf62..e875368f 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,15 +1,38 @@ -export const postArea= ` - -
-
+export function wall(navigateTo) { + // Crear elementos + const container = document.createElement('div'); + const navegator = document.createElement('nav'); + const main = document.createElement('main'); + const logoRefresh = document.createElement('img'); + // const exitButton = document.createElement('button'); + const divposts = document.createElement('div'); + + // Establecer atributos y contenido + logoRefresh.setAttribute('src', './images/logoEasygym.png'); + logoRefresh.setAttribute('onclick','location.reload()'); + divposts.id = 'posts'; + // exitButton.id = 'exit'; + logoRefresh.classList.add('refresh'); + +// Agregar elementos a nav +navegator.appendChild(logoRefresh); + +// Agregar elementos a main + // main.appendChild(exitButton); + + // Agregar elementos al contenedor (div) especificado + container.appendChild(navegator); + container.appendChild(main); + + return container; +} + +/* +
- foto perfil - fecha - 3 puntitos + + + img src>
foto/video @@ -20,5 +43,4 @@ export const postArea= ` descripcion
-
-` \ No newline at end of file +*/ diff --git a/src/style.css b/src/style.css index 2c3d68f4..46271f33 100644 --- a/src/style.css +++ b/src/style.css @@ -24,9 +24,20 @@ header { align-items: flex-end; } -.easygym{ -height: 200px; - +nav { + height: 7vh; + width: 100vw; + background: #dfa0a0; + display: flex; + margin-top: -52px; + justify-content: center; +} +.refresh{ + height: 100%; +} +#exit{ + width: 50px; + height: 200px; } label { From 9adeace0af9ade11769f1fe2fa14a8b30dcfc9b9 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Mon, 15 May 2023 11:29:54 -0400 Subject: [PATCH 15/51] currentPage --- src/main.js | 23 ++++++++++++++++++----- src/pages/signIn.js | 12 +++++++++++- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/main.js b/src/main.js index 2abd17b9..a59adae6 100644 --- a/src/main.js +++ b/src/main.js @@ -13,19 +13,19 @@ const routes = { '/': home, '/createAccount': createAccount, '/signIn': signIn, - '/wall' :wall, + '/wall': wall, }; function navigateTo(pathname) { - /*objeto que proporciona acceso y control sobre el historial de navegación del navegador*/ - /*pushState (state, title, url) es un método del objeto history que permite modificar la URL del navegador sin recargar la página*/ + /* objeto que proporciona acceso y control sobre el historial de navegación del navegador */ + /* pushState (state, title, url) es un método del objeto history que permite modificar la URL del navegador sin recargar la página */ window.history.pushState({}, pathname, window.location.origin + pathname); // Guarda el historial root.innerHTML = ''; const view = routes[pathname]; root.appendChild(view(navigateTo)); } -/*window.onpopstate se utiliza para manejar el evento de cambio en el historial de navegación del navegador*/ +/* window.onpopstate se utiliza para manejar el evento de cambio en el historial de navegación del navegador */ window.onpopstate = () => { root.innerHTML = ''; const path = window.location.pathname; @@ -33,4 +33,17 @@ window.onpopstate = () => { root.appendChild(view(navigateTo)); }; -navigateTo('/'); +function reloadPage() { + const currentPath = window.location.pathname; + localStorage.setItem('currentPage', currentPath); + window.location.reload(); +} + +// Obtener la página actual almacenada en localStorage +const currentPage = window.location.pathname; +console.log(currentPage); +if (currentPage && routes[currentPage]) { + navigateTo(currentPage); +} else { + navigateTo('/'); +} diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 83a49d31..2366f68f 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -1,6 +1,6 @@ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-alert */ -import { signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; +import { signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup,setPersistence, browserLocalPersistence } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; export function signIn(navigateTo) { @@ -69,6 +69,16 @@ export function signIn(navigateTo) { console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error + + setPersistence(auth, browserLocalPersistence) + .then(() => { + console.log('Persistence set successfully.'); + // Continuar con el inicio de sesión + }) + .catch((error) => { + console.log('Error setting persistence:', error); + }); + try { const userCredentials = await signInWithEmailAndPassword(auth, email, password); console.log(userCredentials); From eaa7352c22883aa38471100463ec2a42fe5e3c92 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Mon, 15 May 2023 15:21:34 -0500 Subject: [PATCH 16/51] avance posts --- src/lib/firebase.js | 2 +- src/main.js | 2 +- src/pages/signIn.js | 20 ++++++----- src/pages/wall.js | 87 +++++++++++++++++++++++++++++---------------- 4 files changed, 70 insertions(+), 41 deletions(-) diff --git a/src/lib/firebase.js b/src/lib/firebase.js index 833f2c6a..cb60cc1f 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -1,4 +1,4 @@ - +/* eslint-disable import/no-extraneous-dependencies */ import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; diff --git a/src/main.js b/src/main.js index a59adae6..1c42d99f 100644 --- a/src/main.js +++ b/src/main.js @@ -1,12 +1,12 @@ /* eslint-disable import/named */ /* eslint-disable no-unused-vars */ // Importar las vistas - import { home } from './pages/home.js'; import { createAccount } from './pages/createAccount.js'; import { signIn } from './pages/signIn.js'; import { wall } from './pages/wall.js'; + const root = document.getElementById('root'); const routes = { diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 2366f68f..0ea29c60 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -1,6 +1,8 @@ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-alert */ -import { signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup,setPersistence, browserLocalPersistence } from 'firebase/auth'; +import { + signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup, setPersistence, browserLocalPersistence, +} from 'firebase/auth'; import { auth } from '../lib/firebase.js'; export function signIn(navigateTo) { @@ -69,15 +71,15 @@ export function signIn(navigateTo) { console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - + setPersistence(auth, browserLocalPersistence) - .then(() => { - console.log('Persistence set successfully.'); + .then(() => { + console.log('Persistence set successfully.'); // Continuar con el inicio de sesión - }) - .catch((error) => { - console.log('Error setting persistence:', error); - }); + }) + .catch((error) => { + console.log('Error setting persistence:', error); + }); try { const userCredentials = await signInWithEmailAndPassword(auth, email, password); @@ -100,7 +102,7 @@ export function signIn(navigateTo) { alert('Something went wrong !'); } } - navigateTo('/wall') + navigateTo('/wall'); }); continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); diff --git a/src/pages/wall.js b/src/pages/wall.js index e875368f..95ffd401 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,46 +1,73 @@ -export function wall(navigateTo) { +/* eslint-disable no-undef */ +/* eslint-disable no-console */ +/* eslint-disable import/no-extraneous-dependencies */ +import { collection, getDocs } from 'firebase/firestore'; +import { db } from '../lib/firebase'; + +export function wall() { // Crear elementos const container = document.createElement('div'); const navegator = document.createElement('nav'); const main = document.createElement('main'); const logoRefresh = document.createElement('img'); - // const exitButton = document.createElement('button'); + // const exitButton = document.createElement('button'); const divposts = document.createElement('div'); // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); - logoRefresh.setAttribute('onclick','location.reload()'); + logoRefresh.setAttribute('onclick', 'location.reload()'); divposts.id = 'posts'; - // exitButton.id = 'exit'; + // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); -// Agregar elementos a nav -navegator.appendChild(logoRefresh); + // Agregar elementos a nav + navegator.appendChild(logoRefresh); -// Agregar elementos a main - // main.appendChild(exitButton); + // Agregar elementos a main + // main.appendChild(exitButton); - // Agregar elementos al contenedor (div) especificado - container.appendChild(navegator); - container.appendChild(main); + // Agregar elementos al contenedor (div) especificado + container.appendChild(navegator); + container.appendChild(main); + + const getPost = () => getDocs(collection(db, 'Posts')); - return container; -} + window.addEventListener('DOMContentLoaded', async () => { + const querySnapshot = await getPost(); + querySnapshot.forEach((doc) => { + console.log(doc.data()); + }); + }); + + const createPost = (poster) => { + // crear que va a mostrar + const post = document.createElement('div'); + const header = document.createElement('div'); + const img1 = document.createElement('img'); + const dateInput = document.createElement('input'); + const img2 = document.createElement('img'); + const photoOrVideo = document.createElement('div'); + const descriptionAndLikes = document.createElement('p'); -/* -
-
- - - img src> -
-
- foto/video -
-
- logo likes + cant likes - comentarios - descripcion -
-
-*/ + // Establecer las propiedades de los elementos + post.className = 'post'; + header.className = 'header'; + img1.src = poster.avatar; + dateInput.type = poster.fecha; + img2.src = 'ruta/al/imagen2'; + photoOrVideo.className = 'photoOrVideo'; + photoOrVideo.textContent = 'foto/video'; + descriptionAndLikes.textContent = poster.descripción; + + // Armar la estructura del nodo + header.appendChild(img1); + header.appendChild(dateInput); + header.appendChild(img2); + post.appendChild(header); + post.appendChild(photoOrVideo); + post.appendChild(descriptionAndLikes); + root.appendChild(post); + }; + + return container; +} From f5d5b026732170bc512433c927b0e1cd1d459d44 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Tue, 16 May 2023 10:13:32 -0600 Subject: [PATCH 17/51] =?UTF-8?q?Despliegue=20de=20colecci=C3=B3n=20en=20p?= =?UTF-8?q?antalla?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/wall.js | 23 ++++++++++++----------- src/style.css | 12 ++++++++++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index 95ffd401..f98b0751 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -25,22 +25,16 @@ export function wall() { // Agregar elementos a main // main.appendChild(exitButton); + main.appendChild(divposts); // Agregar elementos al contenedor (div) especificado container.appendChild(navegator); container.appendChild(main); - - const getPost = () => getDocs(collection(db, 'Posts')); - window.addEventListener('DOMContentLoaded', async () => { - const querySnapshot = await getPost(); - querySnapshot.forEach((doc) => { - console.log(doc.data()); - }); - }); + const getPost = () => getDocs(collection(db, 'Posts')); const createPost = (poster) => { - // crear que va a mostrar + // crear que va a mostrar const post = document.createElement('div'); const header = document.createElement('div'); const img1 = document.createElement('img'); @@ -56,7 +50,7 @@ export function wall() { dateInput.type = poster.fecha; img2.src = 'ruta/al/imagen2'; photoOrVideo.className = 'photoOrVideo'; - photoOrVideo.textContent = 'foto/video'; + // photoOrVideo.textContent = 'foto/video'; descriptionAndLikes.textContent = poster.descripción; // Armar la estructura del nodo @@ -66,8 +60,15 @@ export function wall() { post.appendChild(header); post.appendChild(photoOrVideo); post.appendChild(descriptionAndLikes); - root.appendChild(post); + divposts.appendChild(post); }; + window.addEventListener('DOMContentLoaded', async () => { + const querySnapshot = await getPost(); + querySnapshot.forEach((doc) => { + const postdata = doc.data(); + createPost(postdata); + }); + }); return container; } diff --git a/src/style.css b/src/style.css index 46271f33..e8172968 100644 --- a/src/style.css +++ b/src/style.css @@ -1,3 +1,8 @@ +main{ + margin: 0; + justify-content: center; +} + body { background: #98DEE9; padding: 5px; @@ -98,4 +103,11 @@ p{ font-size:25px; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; color: #0A4D68; +} + +#posts{ + background: rgb(14, 38, 92)(255, 0, 149); + width: 80%; + justify-content: center; + } \ No newline at end of file From 3604ff24c69b77e3cfe39a596f54e26e93f6314e Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 16 May 2023 12:57:37 -0500 Subject: [PATCH 18/51] algo de css --- src/lib/firebase.js | 1 + src/main.js | 3 ++- src/pages/signIn.js | 14 ++++---------- src/pages/wall.js | 43 ++++++++++++++++++++----------------------- src/style.css | 27 +++++++++++++++++++++------ 5 files changed, 48 insertions(+), 40 deletions(-) diff --git a/src/lib/firebase.js b/src/lib/firebase.js index cb60cc1f..af54b5c2 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; diff --git a/src/main.js b/src/main.js index 1c42d99f..ad7034cd 100644 --- a/src/main.js +++ b/src/main.js @@ -1,3 +1,5 @@ +/* eslint-disable no-console */ +/* eslint-disable max-len */ /* eslint-disable import/named */ /* eslint-disable no-unused-vars */ // Importar las vistas @@ -6,7 +8,6 @@ import { createAccount } from './pages/createAccount.js'; import { signIn } from './pages/signIn.js'; import { wall } from './pages/wall.js'; - const root = document.getElementById('root'); const routes = { diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 0ea29c60..1f720687 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -1,7 +1,9 @@ +/* eslint-disable max-len */ +/* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-alert */ import { - signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup, setPersistence, browserLocalPersistence, + signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup, } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; @@ -72,15 +74,6 @@ export function signIn(navigateTo) { // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - setPersistence(auth, browserLocalPersistence) - .then(() => { - console.log('Persistence set successfully.'); - // Continuar con el inicio de sesión - }) - .catch((error) => { - console.log('Error setting persistence:', error); - }); - try { const userCredentials = await signInWithEmailAndPassword(auth, email, password); console.log(userCredentials); @@ -104,6 +97,7 @@ export function signIn(navigateTo) { } navigateTo('/wall'); }); + continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); const provider = new GoogleAuthProvider(); diff --git a/src/pages/wall.js b/src/pages/wall.js index f98b0751..7ec6db3e 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -8,9 +8,7 @@ export function wall() { // Crear elementos const container = document.createElement('div'); const navegator = document.createElement('nav'); - const main = document.createElement('main'); const logoRefresh = document.createElement('img'); - // const exitButton = document.createElement('button'); const divposts = document.createElement('div'); // Establecer atributos y contenido @@ -23,42 +21,41 @@ export function wall() { // Agregar elementos a nav navegator.appendChild(logoRefresh); - // Agregar elementos a main - // main.appendChild(exitButton); - main.appendChild(divposts); - // Agregar elementos al contenedor (div) especificado container.appendChild(navegator); - container.appendChild(main); + container.appendChild(divposts); const getPost = () => getDocs(collection(db, 'Posts')); const createPost = (poster) => { // crear que va a mostrar const post = document.createElement('div'); - const header = document.createElement('div'); - const img1 = document.createElement('img'); - const dateInput = document.createElement('input'); - const img2 = document.createElement('img'); - const photoOrVideo = document.createElement('div'); + const infoUser = document.createElement('div'); + const avatar = document.createElement('img'); + const publicDate = document.createElement('time'); + const userName = document.createElement('h5'); + const imagenPost = document.createElement('img'); const descriptionAndLikes = document.createElement('p'); // Establecer las propiedades de los elementos + post.className = 'post'; - header.className = 'header'; - img1.src = poster.avatar; - dateInput.type = poster.fecha; - img2.src = 'ruta/al/imagen2'; - photoOrVideo.className = 'photoOrVideo'; - // photoOrVideo.textContent = 'foto/video'; + avatar.className = 'avatar'; + publicDate.className = 'header'; + avatar.src = poster.avatar; + publicDate.setAttribute('datetime', '2023-05-16'); + publicDate.textContent = '16 de mayo de 2023'; + publicDate.type = poster.fecha; + userName.textContent = 'user email'; + imagenPost.src = 'ruta/al/imagen2'; descriptionAndLikes.textContent = poster.descripción; // Armar la estructura del nodo - header.appendChild(img1); - header.appendChild(dateInput); - header.appendChild(img2); - post.appendChild(header); - post.appendChild(photoOrVideo); + infoUser.id = 'infoUser'; + infoUser.appendChild(avatar); + infoUser.appendChild(userName); + infoUser.appendChild(publicDate); + post.appendChild(infoUser); post.appendChild(descriptionAndLikes); divposts.appendChild(post); }; diff --git a/src/style.css b/src/style.css index e8172968..b9b4901e 100644 --- a/src/style.css +++ b/src/style.css @@ -19,7 +19,6 @@ form{ display: flex; flex-direction: column; align-items: center; - text-align: center; gap: 20px; } @@ -99,15 +98,31 @@ input::placeholder { width: 60%; } -p{ +p { font-size:25px; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; color: #0A4D68; } -#posts{ - background: rgb(14, 38, 92)(255, 0, 149); - width: 80%; - justify-content: center; +#posts { + display: flex; + flex-direction: column; + background: coral; + width: 60%; + margin-right: 20%; + margin-left: 20%; + +} + + +.avatar { + width: 50px; + border-radius: 50%; + margin-left: 0; +} + +.infoUser { + display: flex; + flex-direction: row; } \ No newline at end of file From 5950572ca72f28eac8c91ebbb3141669b670c4b1 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Tue, 16 May 2023 15:39:10 -0400 Subject: [PATCH 19/51] wall css esquema con colores --- src/style.css | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/style.css b/src/style.css index b9b4901e..201f1c92 100644 --- a/src/style.css +++ b/src/style.css @@ -4,6 +4,7 @@ main{ } body { + height: 100%; background: #98DEE9; padding: 5px; } @@ -15,6 +16,7 @@ form{ } #root { + height: 92vh; margin-top: 5%; display: flex; flex-direction: column; @@ -104,17 +106,25 @@ p { color: #0A4D68; } +#container{ + height: 100%; +} + #posts { display: flex; flex-direction: column; background: coral; width: 60%; + height: 100%; margin-right: 20%; margin-left: 20%; + gap:20px; } - +.post{ +background-color: #FFFFFF; +} .avatar { width: 50px; From 533de7fcf3ed016d8004b02a030047612b6754b1 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Tue, 16 May 2023 15:14:49 -0600 Subject: [PATCH 20/51] =?UTF-8?q?Modificaci=C3=B3n=20de=20wall=20con=20con?= =?UTF-8?q?tainers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/wall.js | 4 +++- src/style.css | 36 +++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index 7ec6db3e..a9e99180 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -14,6 +14,7 @@ export function wall() { // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); + container.id = 'container'; divposts.id = 'posts'; // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -41,7 +42,8 @@ export function wall() { post.className = 'post'; avatar.className = 'avatar'; - publicDate.className = 'header'; + userName.className = 'userName'; + publicDate.className = 'publicDate'; avatar.src = poster.avatar; publicDate.setAttribute('datetime', '2023-05-16'); publicDate.textContent = '16 de mayo de 2023'; diff --git a/src/style.css b/src/style.css index 201f1c92..e4ab269a 100644 --- a/src/style.css +++ b/src/style.css @@ -6,7 +6,7 @@ main{ body { height: 100%; background: #98DEE9; - padding: 5px; + } form{ display: flex; @@ -16,8 +16,9 @@ form{ } #root { - height: 92vh; - margin-top: 5%; + + margin-top: 0; + height: 95vh; display: flex; flex-direction: column; align-items: center; @@ -35,7 +36,6 @@ nav { width: 100vw; background: #dfa0a0; display: flex; - margin-top: -52px; justify-content: center; } .refresh{ @@ -87,6 +87,8 @@ input::placeholder { /* CSS DE PAGE HOME */ .container{ + margin-top: 5%; + height: 100%; display: flex; flex-direction: column; align-items: center; @@ -106,10 +108,6 @@ p { color: #0A4D68; } -#container{ - height: 100%; -} - #posts { display: flex; flex-direction: column; @@ -123,16 +121,32 @@ p { } .post{ -background-color: #FFFFFF; +background-color: #FFFFFF; +padding: 10px; } .avatar { width: 50px; border-radius: 50%; margin-left: 0; + } -.infoUser { +#infoUser { + align-items: center; display: flex; - flex-direction: row; +} + +.userName{ + margin-top: 5px; +} +.publicDate{ + margin-top: 25px; + margin-left: -65px; +} +#container{ + margin-top: 0; + padding: 0%; + height: 100%; + } \ No newline at end of file From efe6579fba1469fccb506190180652523d82859b Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Tue, 16 May 2023 17:24:54 -0400 Subject: [PATCH 21/51] css wall --- src/pages/wall.js | 6 ++++-- src/style.css | 36 +++++++++++++++++++++++++----------- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index 7ec6db3e..f8e50c08 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -14,6 +14,7 @@ export function wall() { // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); + container.id = 'container'; divposts.id = 'posts'; // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -41,7 +42,8 @@ export function wall() { post.className = 'post'; avatar.className = 'avatar'; - publicDate.className = 'header'; + userName.className = 'userName'; + publicDate.className = 'publicDate'; avatar.src = poster.avatar; publicDate.setAttribute('datetime', '2023-05-16'); publicDate.textContent = '16 de mayo de 2023'; @@ -68,4 +70,4 @@ export function wall() { }); }); return container; -} +} \ No newline at end of file diff --git a/src/style.css b/src/style.css index 201f1c92..e4ab269a 100644 --- a/src/style.css +++ b/src/style.css @@ -6,7 +6,7 @@ main{ body { height: 100%; background: #98DEE9; - padding: 5px; + } form{ display: flex; @@ -16,8 +16,9 @@ form{ } #root { - height: 92vh; - margin-top: 5%; + + margin-top: 0; + height: 95vh; display: flex; flex-direction: column; align-items: center; @@ -35,7 +36,6 @@ nav { width: 100vw; background: #dfa0a0; display: flex; - margin-top: -52px; justify-content: center; } .refresh{ @@ -87,6 +87,8 @@ input::placeholder { /* CSS DE PAGE HOME */ .container{ + margin-top: 5%; + height: 100%; display: flex; flex-direction: column; align-items: center; @@ -106,10 +108,6 @@ p { color: #0A4D68; } -#container{ - height: 100%; -} - #posts { display: flex; flex-direction: column; @@ -123,16 +121,32 @@ p { } .post{ -background-color: #FFFFFF; +background-color: #FFFFFF; +padding: 10px; } .avatar { width: 50px; border-radius: 50%; margin-left: 0; + } -.infoUser { +#infoUser { + align-items: center; display: flex; - flex-direction: row; +} + +.userName{ + margin-top: 5px; +} +.publicDate{ + margin-top: 25px; + margin-left: -65px; +} +#container{ + margin-top: 0; + padding: 0%; + height: 100%; + } \ No newline at end of file From a6e0de9945cd23042c915d77bbd23b2ee3047fee Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Thu, 18 May 2023 11:28:49 -0400 Subject: [PATCH 22/51] post adn wall --- src/pages/wall.js | 46 ++++++++++++++++++++++++++++++++++++---------- src/style.css | 4 +++- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index f8e50c08..ddf9a42b 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,7 +1,8 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs } from 'firebase/firestore'; +import { collection, getDocs,addDoc } from 'firebase/firestore'; +import { async } from 'regenerator-runtime'; import { db } from '../lib/firebase'; export function wall() { @@ -10,12 +11,18 @@ export function wall() { const navegator = document.createElement('nav'); const logoRefresh = document.createElement('img'); const divposts = document.createElement('div'); + const button = document.createElement('button'); + const textarea = document.createElement('textarea'); // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); container.id = 'container'; divposts.id = 'posts'; + button.classList.add('bttn'); + button.textContent = 'Crear Post'; + textarea.classList.add('textArea'); + // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -23,11 +30,11 @@ export function wall() { navegator.appendChild(logoRefresh); // Agregar elementos al contenedor (div) especificado + container.appendChild(button); + container.appendChild(textarea); container.appendChild(navegator); container.appendChild(divposts); - const getPost = () => getDocs(collection(db, 'Posts')); - const createPost = (poster) => { // crear que va a mostrar const post = document.createElement('div'); @@ -46,9 +53,9 @@ export function wall() { publicDate.className = 'publicDate'; avatar.src = poster.avatar; publicDate.setAttribute('datetime', '2023-05-16'); - publicDate.textContent = '16 de mayo de 2023'; + publicDate.textContent = poster.fecha.toLocaleString(); publicDate.type = poster.fecha; - userName.textContent = 'user email'; + userName.textContent = poster.usuario; imagenPost.src = 'ruta/al/imagen2'; descriptionAndLikes.textContent = poster.descripción; @@ -62,12 +69,31 @@ export function wall() { divposts.appendChild(post); }; - window.addEventListener('DOMContentLoaded', async () => { - const querySnapshot = await getPost(); + const postPromise = getDocs(collection(db, 'Posts')); + postPromise.then((querySnapshot) => { querySnapshot.forEach((doc) => { - const postdata = doc.data(); - createPost(postdata); + const postData = doc.data(); + createPost(postData); }); }); + + button.addEventListener('click', async () => { + const data = { + avatar: 'fto', + descripción: textarea.value, + fecha: 'hoy', + usuario: 'yo', + }; + const result = await addDoc(collection(db, 'Posts'), data); + console.log(result); + }); + // DOMContentLoaded se dispara cuando se ha cargado completamente el árbol DOM de una página web por lo q no sirve en este caso ya q se cambia lo q esta en root + // window.addEventListener('DOMContentLoaded', async () => { + // const querySnapshot = await getPost(); + // querySnapshot.forEach((doc) => { + // const postdata = doc.data(); + // createPost(postdata); + // }); + // }); return container; -} \ No newline at end of file +} diff --git a/src/style.css b/src/style.css index e4ab269a..e4153b7c 100644 --- a/src/style.css +++ b/src/style.css @@ -121,7 +121,7 @@ p { } .post{ -background-color: #FFFFFF; +background-color: #e0b4b4; padding: 10px; } @@ -129,6 +129,8 @@ padding: 10px; width: 50px; border-radius: 50%; margin-left: 0; + object-fit: cover; + object-position: center; } From 17c19e577721be48673be8d594b2a764deb959fe Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Thu, 18 May 2023 13:56:09 -0600 Subject: [PATCH 23/51] Login --- src/lib/firebase.js | 29 ++++++++++++++++++++++++++++- src/pages/signIn.js | 17 +++++++++++------ src/pages/wall.js | 3 ++- 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/src/lib/firebase.js b/src/lib/firebase.js index af54b5c2..cd63993b 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -1,7 +1,7 @@ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ import { initializeApp } from 'firebase/app'; -import { getAuth } from 'firebase/auth'; +import { getAuth, signInWithEmailAndPassword } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -23,3 +23,30 @@ export const auth = getAuth(app); export const db = getFirestore(app); console.log(app); + +// export function login(email, password) { +// const auth1 = getAuth(app); +// const resultPromise = signInWithEmailAndPassword(auth1, email, password); +// const promise2 = resultPromise.then((userCredential) => userCredential.email); +// return promise2; +// } + +// function callback(credential) { +// return credential.email; +// } + + +//const callback2 = (credential) => credential.user.email; + +// export function login(email, password) { +// const auth1 = getAuth(app); +// const resultPromise = signInWithEmailAndPassword(auth1, email, password); +// const promise2 = resultPromise.then(callback2); +// return promise2; +// } + +export async function login(email, password) { + const auth1 = getAuth(app); + const result = await signInWithEmailAndPassword(auth1, email, password); + return result.user.email; +} diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 1f720687..7a7061eb 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -2,10 +2,9 @@ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-alert */ -import { - signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup, +import { GoogleAuthProvider, signInWithPopup, } from 'firebase/auth'; -import { auth } from '../lib/firebase.js'; +import { auth, login } from '../lib/firebase.js'; export function signIn(navigateTo) { // Crear elementos @@ -73,10 +72,16 @@ export function signIn(navigateTo) { console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - + try { - const userCredentials = await signInWithEmailAndPassword(auth, email, password); - console.log(userCredentials); + //const userCredentials = await login(email, password); + const userEmail = await login(email, password); + console.log("#########"); + console.log('Este es el email: ', userEmail); + console.log("$$$$$$$$$"); + // export { userEmail }; + + // console.log(userCredentials); } catch (error) { console.log(error.message); console.log(error.code); diff --git a/src/pages/wall.js b/src/pages/wall.js index ddf9a42b..7c52b4d1 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,9 +1,10 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs,addDoc } from 'firebase/firestore'; +import { collection, getDocs, addDoc } from 'firebase/firestore'; import { async } from 'regenerator-runtime'; import { db } from '../lib/firebase'; +// import { userEmail } from './signIn.js'; export function wall() { // Crear elementos From 8a86873d2b7157ad3f9fe6e7324a54c116b12763 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Fri, 19 May 2023 12:50:46 -0500 Subject: [PATCH 24/51] css botones + funciones --- package.json | 5 ++- src/images/logoGoogle.png | Bin 0 -> 66620 bytes src/lib/firebase.js | 29 +-------------- src/lib/functions.js | 60 ++++++++++++++++++++++++++++++ src/pages/createAccount.js | 73 ++++++++++++++++++++++--------------- src/pages/signIn.js | 40 +++++++++++--------- src/pages/wall.js | 2 +- src/style.css | 27 +++++++++++++- 8 files changed, 157 insertions(+), 79 deletions(-) create mode 100644 src/images/logoGoogle.png create mode 100644 src/lib/functions.js diff --git a/package.json b/package.json index 819726b2..9344c74a 100644 --- a/package.json +++ b/package.json @@ -41,5 +41,8 @@ "createdAt": "2023-04-04T20:41:27.023Z", "version": "6.1.1", "commit": "ee8564d1261b2e9c9842d13f9ac49b2624b2ee74" + }, + "dependencies": { + "firebase": "^9.22.0" } -} \ No newline at end of file +} diff --git a/src/images/logoGoogle.png b/src/images/logoGoogle.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0c17a6bc1886cca585a242570083bd78ebbda3 GIT binary patch literal 66620 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 userCredential.email); -// return promise2; -// } - -// function callback(credential) { -// return credential.email; -// } - - -//const callback2 = (credential) => credential.user.email; - -// export function login(email, password) { -// const auth1 = getAuth(app); -// const resultPromise = signInWithEmailAndPassword(auth1, email, password); -// const promise2 = resultPromise.then(callback2); -// return promise2; -// } - -export async function login(email, password) { - const auth1 = getAuth(app); - const result = await signInWithEmailAndPassword(auth1, email, password); - return result.user.email; -} diff --git a/src/lib/functions.js b/src/lib/functions.js new file mode 100644 index 00000000..dc21916a --- /dev/null +++ b/src/lib/functions.js @@ -0,0 +1,60 @@ +/* eslint-disable no-console */ +/* eslint-disable consistent-return */ +/* eslint-disable import/no-extraneous-dependencies */ +/* eslint-disable import/named */ +import { + signInWithEmailAndPassword, + getAuth, + GoogleAuthProvider, + signInWithPopup, + createUserWithEmailAndPassword, +} from 'firebase/auth'; +import { app, auth } from './firebase'; + +// export function login(email, password) { +// const auth1 = getAuth(app); +// const resultPromise = signInWithEmailAndPassword(auth1, email, password); +// const promise2 = resultPromise.then((userCredential) => userCredential.email); +// return promise2; +// } + +// function callback(credential) { +// return credential.email; +// } + +// const callback2 = (credential) => credential.user.email; + +// export function login(email, password) { +// const auth1 = getAuth(app); +// const resultPromise = signInWithEmailAndPassword(auth1, email, password); +// const promise2 = resultPromise.then(callback2); +// return promise2; +// } +// LOGIN CON FIREBASE +export async function login(email, password) { + const auth1 = getAuth(app); + const result = await signInWithEmailAndPassword(auth1, email, password); + return result.user.email; +} + +// CONTINUAR CON GOOGLE DESDE SIGNIN y CREATE ACCOUNT - FIREBASE +export async function signInWithGoogle() { + const provider = new GoogleAuthProvider(); + try { + const credentials = await signInWithPopup(auth, provider); + return credentials.user; + } catch (error) { + console.log(error); + } +} + +// CREATE ACCOUNT CON FIREBASE +export async function register(email, password) { + try { + const userCredentials = await createUserWithEmailAndPassword(auth, email, password); + console.log(userCredentials); + } catch (error) { + console.log(error.message); + console.log(error.code); + } +} diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 9c951b93..2c1d26bc 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -1,7 +1,11 @@ +/* eslint-disable no-undef */ +/* eslint-disable no-console */ +/* eslint-disable no-unused-vars */ /* eslint-disable no-alert */ // eslint-disable-next-line import/no-extraneous-dependencies -import { createUserWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; +import { createUserWithEmailAndPassword } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; +import { signInWithGoogle, register } from '../lib/functions.js'; export function createAccount(navigateTo) { // Crear elementos @@ -18,7 +22,10 @@ export function createAccount(navigateTo) { const questionAccount = document.createElement('p'); const linkSignIn = document.createElement('a'); const createButton = document.createElement('button'); + const or = document.createElement('p'); const continueWithGoogleButton = document.createElement('button'); + const logoGoogle = document.createElement('img'); + logoGoogle.src = './images/logoGoogle.png'; // Establecer atributos y contenido container.classList.add('container'); @@ -39,12 +46,18 @@ export function createAccount(navigateTo) { linkSignIn.textContent = 'Sign In'; createButton.classList.add('button'); createButton.textContent = 'Create account'; + or.textContent = '───────── OR ─────────'; + or.classList.add('or'); continueWithGoogleButton.classList.add('button'); - continueWithGoogleButton.textContent = 'Continue with Google'; + continueWithGoogleButton.classList.add('googleButton'); + logoGoogle.classList.add('logoGoogle'); // Agregar elementos al header header.appendChild(logo); + continueWithGoogleButton.appendChild(logoGoogle); + continueWithGoogleButton.insertAdjacentText('beforeend', 'Continue with Google'); + // Agregar elementos al formulario form.appendChild(nameLabel); form.appendChild(nameInput); @@ -53,6 +66,7 @@ export function createAccount(navigateTo) { form.appendChild(passwordLabel); form.appendChild(passwordInput); form.appendChild(createButton); + form.appendChild(or); form.appendChild(continueWithGoogleButton); form.appendChild(questionAccount); form.appendChild(linkSignIn); @@ -76,42 +90,41 @@ export function createAccount(navigateTo) { // const name = nameInput.value; const email = emailInput.value; const password = passwordInput.value; - + const registerPromise = register(auth, email, password); + registerPromise.then((user) => { + alert('your account was created'); + navigateTo('/wall'); + }).catch((error) => { + alert('Your account wasn´t created'); + }); console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - try { - const userCredentials = await createUserWithEmailAndPassword(auth, email, password); - console.log(userCredentials); - } catch (error) { - console.log(error.message); - console.log(error.code); - if (error.code === 'auth/email-already-in-use') { - alert('Email already in use'); - } else if (error.code === 'auth/missing-email') { - alert('Introduce your email'); - } else if (error.code === 'auth/weak-password') { - alert('Your password must have a minimum of 6 characters '); - } else if (error.code === 'auth/missing-password') { - alert('Introduce your password'); - } else if (error.code === 'auth/invalid-email') { - alert('Invalid email'); - } else if (error.code) { - alert('Something went wrong'); - } + if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code === 'auth/missing-email') { + alert('Introduce your email'); + } else if (error.code === 'auth/weak-password') { + alert('Your password must have a minimum of 6 characters '); + } else if (error.code === 'auth/missing-password') { + alert('Introduce your password'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); + } else if (error.code) { + alert('Something went wrong'); } }); + continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); - const provider = new GoogleAuthProvider(); - - try { - const credentials = await signInWithPopup(auth, provider); - console.log(credentials); - } catch (error) { - console.log(error); - } + const promiseWithGoogle = signInWithGoogle(); + promiseWithGoogle.then((user) => { + alert(`Welcome ${user.displayName}!`); + navigateTo('/wall'); + }).catch((error) => { + alert('Registrateee'); + }); }); return container; } diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 7a7061eb..65a15062 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -1,10 +1,11 @@ +/* eslint-disable no-multi-assign */ +/* eslint-disable no-undef */ +/* eslint-disable no-unused-vars */ /* eslint-disable max-len */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable no-alert */ -import { GoogleAuthProvider, signInWithPopup, -} from 'firebase/auth'; -import { auth, login } from '../lib/firebase.js'; +import { login, signInWithGoogle } from '../lib/functions.js'; export function signIn(navigateTo) { // Crear elementos @@ -19,7 +20,10 @@ export function signIn(navigateTo) { const questionAccount = document.createElement('p'); const linkSignIn = document.createElement('a'); const signInButton = document.createElement('button'); + const or = document.createElement('p'); const continueWithGoogleButton = document.createElement('button'); + const logoGoogle = document.createElement('img'); + logoGoogle.src = './images/logoGoogle.png'; // Establecer atributos y contenido container.classList.add('container'); @@ -37,18 +41,25 @@ export function signIn(navigateTo) { linkSignIn.textContent = 'Create account'; signInButton.classList.add('button'); signInButton.textContent = 'Sign In'; + or.textContent = '───────── OR ─────────'; + or.classList.add('or'); continueWithGoogleButton.classList.add('button'); - continueWithGoogleButton.textContent = 'Continue with Google'; + continueWithGoogleButton.classList.add('googleButton'); + logoGoogle.classList.add('logoGoogle'); // Agregar elementos al header header.appendChild(logo); + continueWithGoogleButton.appendChild(logoGoogle); + continueWithGoogleButton.insertAdjacentText('beforeend', 'Continue with Google'); + // Agregar elementos al formulario form.appendChild(emailLabel); form.appendChild(emailInput); form.appendChild(passwordLabel); form.appendChild(passwordInput); form.appendChild(signInButton); + form.appendChild(or); form.appendChild(continueWithGoogleButton); form.appendChild(questionAccount); form.appendChild(linkSignIn); @@ -65,22 +76,16 @@ export function signIn(navigateTo) { signInButton.addEventListener('click', async (e) => { e.preventDefault(); - const email = emailInput.value; const password = passwordInput.value; console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - try { - //const userCredentials = await login(email, password); const userEmail = await login(email, password); - console.log("#########"); console.log('Este es el email: ', userEmail); - console.log("$$$$$$$$$"); // export { userEmail }; - // console.log(userCredentials); } catch (error) { console.log(error.message); @@ -105,14 +110,13 @@ export function signIn(navigateTo) { continueWithGoogleButton.addEventListener('click', async (e) => { e.preventDefault(); - const provider = new GoogleAuthProvider(); - - try { - const credentials = await signInWithPopup(auth, provider); - console.log(credentials); - } catch (error) { - console.log(error); - } + const promiseWithGoogle = signInWithGoogle(); + promiseWithGoogle.then((user) => { + alert(`Welcome ${user.usuario}!`); + navigateTo('/wall'); + }).catch((error) => { + alert('Registrateee'); + }); }); return container; } diff --git a/src/pages/wall.js b/src/pages/wall.js index 7c52b4d1..b07835a5 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,8 +1,8 @@ +/* eslint-disable max-len */ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ import { collection, getDocs, addDoc } from 'firebase/firestore'; -import { async } from 'regenerator-runtime'; import { db } from '../lib/firebase'; // import { userEmail } from './signIn.js'; diff --git a/src/style.css b/src/style.css index e4153b7c..d48e9811 100644 --- a/src/style.css +++ b/src/style.css @@ -21,6 +21,7 @@ form{ height: 95vh; display: flex; flex-direction: column; + justify-content: center; align-items: center; gap: 20px; } @@ -61,6 +62,7 @@ label { display: flex; text-align: center; margin-bottom: 10px; + justify-content: center; } @@ -117,6 +119,7 @@ p { margin-right: 20%; margin-left: 20%; gap:20px; + } @@ -151,4 +154,26 @@ padding: 10px; padding: 0%; height: 100%; -} \ No newline at end of file +} + +.logoGoogle { + width: 25px; +} + +.googleButton { + display: flex; + align-items: center; + align-content: space-between; + justify-content: space-evenly; + background-color: aliceblue; + color: black; + width: 180px ; + height: 35px; + font-size: 13px; +} + +.or { + margin: 0; + font-size: 13px; +} + From 2ea671dc8c701fbcde7e588077cd833d414d7280 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Mon, 22 May 2023 11:29:00 -0400 Subject: [PATCH 25/51] css wall --- src/pages/wall.js | 28 +++++++----- src/style.css | 108 ++++++++++++++++++++++++++++++++++------------ 2 files changed, 98 insertions(+), 38 deletions(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index b07835a5..c11bc7ab 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,10 +1,10 @@ -/* eslint-disable max-len */ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs, addDoc } from 'firebase/firestore'; +import { + collection, getDocs, addDoc, doc, +} from 'firebase/firestore'; import { db } from '../lib/firebase'; -// import { userEmail } from './signIn.js'; export function wall() { // Crear elementos @@ -12,17 +12,20 @@ export function wall() { const navegator = document.createElement('nav'); const logoRefresh = document.createElement('img'); const divposts = document.createElement('div'); - const button = document.createElement('button'); + const buttonCreatePost = document.createElement('button'); const textarea = document.createElement('textarea'); + const writeAndPost = document.createElement('div'); // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); container.id = 'container'; divposts.id = 'posts'; - button.classList.add('bttn'); - button.textContent = 'Crear Post'; + buttonCreatePost.classList.add('buttonCreatePost'); + buttonCreatePost.textContent = 'Post'; textarea.classList.add('textArea'); + // textarea.setAttribute('rows', '4'); + writeAndPost.classList.add('writeAndPost'); // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -30,9 +33,14 @@ export function wall() { // Agregar elementos a nav navegator.appendChild(logoRefresh); + // Agregar elementos a divposts + divposts.appendChild(writeAndPost); + + // Agregar elementos a writeAndPost + writeAndPost.appendChild(textarea); + writeAndPost.appendChild(buttonCreatePost); + // Agregar elementos al contenedor (div) especificado - container.appendChild(button); - container.appendChild(textarea); container.appendChild(navegator); container.appendChild(divposts); @@ -67,7 +75,7 @@ export function wall() { infoUser.appendChild(publicDate); post.appendChild(infoUser); post.appendChild(descriptionAndLikes); - divposts.appendChild(post); + divposts.appendChild(post); // return post prepend }; const postPromise = getDocs(collection(db, 'Posts')); @@ -78,7 +86,7 @@ export function wall() { }); }); - button.addEventListener('click', async () => { + buttonCreatePost.addEventListener('click', async () => { const data = { avatar: 'fto', descripción: textarea.value, diff --git a/src/style.css b/src/style.css index d48e9811..c534ad6b 100644 --- a/src/style.css +++ b/src/style.css @@ -1,4 +1,4 @@ -main{ +main { margin: 0; justify-content: center; } @@ -6,9 +6,10 @@ main{ body { height: 100%; background: #98DEE9; - + } -form{ + +form { display: flex; flex-direction: column; align-items: center; @@ -16,7 +17,7 @@ form{ } #root { - + margin-top: 0; height: 95vh; display: flex; @@ -28,7 +29,7 @@ form{ header { height: 250px; - display:flex; + display: flex; align-items: flex-end; } @@ -38,13 +39,16 @@ nav { background: #dfa0a0; display: flex; justify-content: center; + margin-bottom: 10px; } -.refresh{ - height: 100%; + +.refresh { + height: 100%; } -#exit{ - width: 50px; - height: 200px; + +#exit { + width: 50px; + height: 200px; } label { @@ -88,7 +92,7 @@ input::placeholder { /* CSS DE PAGE HOME */ -.container{ +.container { margin-top: 5%; height: 100%; display: flex; @@ -105,27 +109,45 @@ input::placeholder { } p { - font-size:25px; + font-size: 17px; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; color: #0A4D68; } +a { + font-size: 17px; + font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; +} + #posts { - display: flex; - flex-direction: column; - background: coral; width: 60%; height: 100%; + display: flex; + flex-direction: column; + align-items: center; margin-right: 20%; margin-left: 20%; - gap:20px; - - -} - -.post{ -background-color: #e0b4b4; -padding: 10px; + padding-top: 10px; + gap: 20px; + overflow: auto; + scrollbar-width: thin; + /* Oculta la barra de desplazamiento en navegadores compatibles */ + scrollbar-color: transparent transparent; + /* Establece el color de la barra de desplazamiento transparente */ +} + +#posts::-webkit-scrollbar-track { + background-color: #6f2121; /* Color de fondo de la barra de desplazamiento */ + } + + +.post { + width: 90%; + background-color: #D9D9D9; + padding: 10px; + border: 1px solid #000000; + box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + border-radius: 25px; } .avatar { @@ -142,18 +164,20 @@ padding: 10px; display: flex; } -.userName{ +.userName { margin-top: 5px; } -.publicDate{ + +.publicDate { margin-top: 25px; margin-left: -65px; } -#container{ + +#container { margin-top: 0; padding: 0%; height: 100%; - + } .logoGoogle { @@ -167,7 +191,7 @@ padding: 10px; justify-content: space-evenly; background-color: aliceblue; color: black; - width: 180px ; + width: 180px; height: 35px; font-size: 13px; } @@ -177,3 +201,31 @@ padding: 10px; font-size: 13px; } +.writeAndPost { + width: 100%; + text-align: center; +} + +.textArea { + width: 90%; + height: 90px; + padding: 7px; + background-color: #D9D9D9; + border-radius: 31px; + border: 1px solid #000000; +} + +.buttonCreatePost { + Width: 80px; + Height: 27px; + margin-right: 85px; + background-color: #279A82; + color: white; + border: 1px solid #000000; + box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); + border-radius: 25px; + float: left; + /* Alinea el botón a la izquierda, para responsive tal vez sea mejor ponerlo en "none" */ + margin-left: 15px; + /* hacer responsive dsps */ +} \ No newline at end of file From a70b3c25be4f67b05cc2881aae09540d27c760d6 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Mon, 22 May 2023 12:25:20 -0400 Subject: [PATCH 26/51] css wall parte 2 --- src/images/Avatar.png | Bin 0 -> 98052 bytes src/images/Likes.png | Bin 0 -> 24096 bytes src/pages/wall.js | 4 ++-- src/style.css | 3 ++- 4 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 src/images/Avatar.png create mode 100644 src/images/Likes.png diff --git a/src/images/Avatar.png b/src/images/Avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..ce832050cc44f0ccb5ea6028fe8b515fc8fa0b94 GIT binary patch literal 98052 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 z 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 E1N9xPQvd(} literal 0 HcmV?d00001 diff --git a/src/images/Likes.png b/src/images/Likes.png new file mode 100644 index 0000000000000000000000000000000000000000..68bd775eca7f8122459cc4b7430788510696bf06 GIT binary patch literal 24096 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%0DAMX15Zto2XP@ zzd{Y|`Hq_q>sg+$#eccpUFWc^)d;x|Wx@x0HnjcJcAo`ClD4Mgt%OFD`jU^za8YF| zVYEYkwlkmORfEfBw0+;CJmMVw zKdPl!Wf9syk9UsZs~;3*LFxP~EOV116U86)o4musO1o<^!nqbneXJ2;Ip2JyQ@2b+ z^re(=7qjTxMRe@#hs8C%;wP|j6E&y*-$ zznZIKrDjg&pOws^DV-PSc}L%q5((Z6F$|7*e#jBf!08e^8J|^a^F4CpiJwAED+QlC z6A2ly6Gc!~;Yq&he2{?x#aLAw66$9eaWnPXsO+XPq=e)&yvq6@C}6^R z75YzeOD+|2SWZ5C^QGI35Swf@hpAI0vml;I?LANay|eLOVPwMc#fL)jZaS;mDO%`$ zQVre3kaQ&S2P^{Zj;UM9OC>ex03vx~0PK&To_r{28Oi4V#?ig}Hu%~fv9#**N@w=f zrwy4-+NZ1O3WChvKzHt3+`*9CiBgRM-@WsJmYbm4zC--~^*B}|C*U_d17*C1O5@fI aEndYj>yD~sBSGc;&J%5@R;`A8%>My-V*LjI literal 0 HcmV?d00001 diff --git a/src/pages/wall.js b/src/pages/wall.js index c11bc7ab..df88d32e 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -35,8 +35,8 @@ export function wall() { // Agregar elementos a divposts divposts.appendChild(writeAndPost); - - // Agregar elementos a writeAndPost + + // Agregar elementos a divposts writeAndPost.appendChild(textarea); writeAndPost.appendChild(buttonCreatePost); diff --git a/src/style.css b/src/style.css index c534ad6b..b5cf825c 100644 --- a/src/style.css +++ b/src/style.css @@ -35,7 +35,7 @@ header { nav { height: 7vh; - width: 100vw; + width: 100%; background: #dfa0a0; display: flex; justify-content: center; @@ -130,6 +130,7 @@ a { padding-top: 10px; gap: 20px; overflow: auto; + overflow-x: hidden; scrollbar-width: thin; /* Oculta la barra de desplazamiento en navegadores compatibles */ scrollbar-color: transparent transparent; From 573302e10d18d3e6f1e35646d6eb5d544f77d3cb Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Mon, 22 May 2023 15:45:20 -0400 Subject: [PATCH 27/51] agregar email de usario y fecha del dia --- src/lib/functions.js | 21 ++++++++++++++++++++ src/pages/createAccount.js | 1 - src/pages/signIn.js | 2 +- src/pages/wall.js | 40 ++++++++++++++++++++++++++------------ src/style.css | 4 ++-- 5 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index dc21916a..478d524a 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -8,6 +8,7 @@ import { GoogleAuthProvider, signInWithPopup, createUserWithEmailAndPassword, + onAuthStateChanged, } from 'firebase/auth'; import { app, auth } from './firebase'; @@ -58,3 +59,23 @@ export async function register(email, password) { console.log(error.code); } } + +// detecta los cambios en el estado de autenticación + +export function authDetector() { + const auth2 = getAuth(app); + //let userEmail = null; + return new Promise((resolve,reject)=>{ + onAuthStateChanged(auth2, (user) => { + if (user) { + resolve(user.email); + /*userEmail = user.email; + console.log(userEmail);*/ + } else { + resolve(null); + //userEmail = null; + } + }); +}); +} +authDetector(); diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 2c1d26bc..08440f45 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -3,7 +3,6 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-alert */ // eslint-disable-next-line import/no-extraneous-dependencies -import { createUserWithEmailAndPassword } from 'firebase/auth'; import { auth } from '../lib/firebase.js'; import { signInWithGoogle, register } from '../lib/functions.js'; diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 65a15062..4042bfe5 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -112,7 +112,7 @@ export function signIn(navigateTo) { e.preventDefault(); const promiseWithGoogle = signInWithGoogle(); promiseWithGoogle.then((user) => { - alert(`Welcome ${user.usuario}!`); + alert(`Welcome ${user.displayName}!`); navigateTo('/wall'); }).catch((error) => { alert('Registrateee'); diff --git a/src/pages/wall.js b/src/pages/wall.js index df88d32e..a08294c9 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,10 +1,10 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { - collection, getDocs, addDoc, doc, -} from 'firebase/firestore'; +import { collection, getDocs, addDoc } from 'firebase/firestore'; import { db } from '../lib/firebase'; +import { authDetector } from '../lib/functions'; +import avatarImage from '../images/Avatar.png'; export function wall() { // Crear elementos @@ -15,9 +15,12 @@ export function wall() { const buttonCreatePost = document.createElement('button'); const textarea = document.createElement('textarea'); const writeAndPost = document.createElement('div'); + const avatarPic = document.createElement('img'); // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); + avatarPic.src = avatarImage; + avatarPic.classList.add('avatar'); logoRefresh.setAttribute('onclick', 'location.reload()'); container.id = 'container'; divposts.id = 'posts'; @@ -34,14 +37,15 @@ export function wall() { navegator.appendChild(logoRefresh); // Agregar elementos a divposts - divposts.appendChild(writeAndPost); - - // Agregar elementos a divposts + //divposts.appendChild(writeAndPost); + + // Agregar elementos a divposts writeAndPost.appendChild(textarea); writeAndPost.appendChild(buttonCreatePost); // Agregar elementos al contenedor (div) especificado container.appendChild(navegator); + container.appendChild(writeAndPost); container.appendChild(divposts); const createPost = (poster) => { @@ -75,7 +79,7 @@ export function wall() { infoUser.appendChild(publicDate); post.appendChild(infoUser); post.appendChild(descriptionAndLikes); - divposts.appendChild(post); // return post prepend + divposts.insertBefore(post, divposts.firstChild); // Utilizar insertBefore para insertar al principio }; const postPromise = getDocs(collection(db, 'Posts')); @@ -85,18 +89,30 @@ export function wall() { createPost(postData); }); }); - + console.log(authDetector); buttonCreatePost.addEventListener('click', async () => { + const userDetector = await authDetector();// Obtener el email del usuario + + const currentDate = new Date(); //devuelve la fecha local + const day = currentDate.getDate();// devuelve el día solamente + const month = currentDate.getMonth() + 1; // Los meses comienzan desde 0 + const year = currentDate.getFullYear(); + const formattedDate = `${day}/${month}/${year}`; + const data = { - avatar: 'fto', + avatar: avatarPic.outerHTML, descripción: textarea.value, - fecha: 'hoy', - usuario: 'yo', + fecha: formattedDate, + usuario: userDetector, // Asignar el email del usuario a "usuario" }; const result = await addDoc(collection(db, 'Posts'), data); console.log(result); + // Crear el nuevo post y agregarlo al principio + createPost(data); }); - // DOMContentLoaded se dispara cuando se ha cargado completamente el árbol DOM de una página web por lo q no sirve en este caso ya q se cambia lo q esta en root + // DOMContentLoaded se dispara cuando se ha cargado + // completamente el árbol DOM de una página web por + // lo q no sirve en este caso ya q se cambia lo q esta en root // window.addEventListener('DOMContentLoaded', async () => { // const querySnapshot = await getPost(); // querySnapshot.forEach((doc) => { diff --git a/src/style.css b/src/style.css index b5cf825c..8b401255 100644 --- a/src/style.css +++ b/src/style.css @@ -121,7 +121,7 @@ a { #posts { width: 60%; - height: 100%; + height: fit-content; display: flex; flex-direction: column; align-items: center; @@ -131,7 +131,7 @@ a { gap: 20px; overflow: auto; overflow-x: hidden; - scrollbar-width: thin; + /* Oculta la barra de desplazamiento en navegadores compatibles */ scrollbar-color: transparent transparent; /* Establece el color de la barra de desplazamiento transparente */ From fe0882ec59cdf6553bc56883ad58200d14952504 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Tue, 23 May 2023 09:27:36 -0600 Subject: [PATCH 28/51] Imagen de perfil de usuario --- src/pages/wall.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/pages/wall.js b/src/pages/wall.js index a08294c9..56f63360 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,3 +1,4 @@ +/* eslint-disable object-shorthand */ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ @@ -100,7 +101,7 @@ export function wall() { const formattedDate = `${day}/${month}/${year}`; const data = { - avatar: avatarPic.outerHTML, + avatar: '/images/Avatar.png', descripción: textarea.value, fecha: formattedDate, usuario: userDetector, // Asignar el email del usuario a "usuario" From f94efec9cdf9f1672135c3ee9f4d1f7114daa3a7 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Tue, 23 May 2023 17:53:16 -0600 Subject: [PATCH 29/51] =?UTF-8?q?Modificaci=C3=B3n=20grid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/images/menuOptions.png | Bin 0 -> 11929 bytes src/pages/wall.js | 27 +++++++++++--- src/style.css | 73 +++++++++++++++++++++++++++++++------ 3 files changed, 83 insertions(+), 17 deletions(-) create mode 100644 src/images/menuOptions.png diff --git a/src/images/menuOptions.png b/src/images/menuOptions.png new file mode 100644 index 0000000000000000000000000000000000000000..285c176d40eef8880c0bbf05ea1276ebe907fecc GIT binary patch literal 11929 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 OVxViPgT3qY^8WxH{P4p7 literal 0 HcmV?d00001 diff --git a/src/pages/wall.js b/src/pages/wall.js index 56f63360..1c6a6b60 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -5,7 +5,6 @@ import { collection, getDocs, addDoc } from 'firebase/firestore'; import { db } from '../lib/firebase'; import { authDetector } from '../lib/functions'; -import avatarImage from '../images/Avatar.png'; export function wall() { // Crear elementos @@ -16,12 +15,9 @@ export function wall() { const buttonCreatePost = document.createElement('button'); const textarea = document.createElement('textarea'); const writeAndPost = document.createElement('div'); - const avatarPic = document.createElement('img'); // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); - avatarPic.src = avatarImage; - avatarPic.classList.add('avatar'); logoRefresh.setAttribute('onclick', 'location.reload()'); container.id = 'container'; divposts.id = 'posts'; @@ -30,6 +26,8 @@ export function wall() { textarea.classList.add('textArea'); // textarea.setAttribute('rows', '4'); writeAndPost.classList.add('writeAndPost'); + + // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -58,6 +56,11 @@ export function wall() { const userName = document.createElement('h5'); const imagenPost = document.createElement('img'); const descriptionAndLikes = document.createElement('p'); + const menuLikeSection = document.createElement('section'); + const likesAndCount = document.createElement('div'); + const menuOptions = document.createElement('img'); + const likesPic = document.createElement('img'); + const likesLab = document.createElement('label'); // Establecer las propiedades de los elementos @@ -66,20 +69,32 @@ export function wall() { userName.className = 'userName'; publicDate.className = 'publicDate'; avatar.src = poster.avatar; - publicDate.setAttribute('datetime', '2023-05-16'); publicDate.textContent = poster.fecha.toLocaleString(); publicDate.type = poster.fecha; userName.textContent = poster.usuario; imagenPost.src = 'ruta/al/imagen2'; descriptionAndLikes.textContent = poster.descripción; + menuLikeSection.classList.add('menuLikeSection'); + menuOptions.classList.add('menuOptions'); + menuOptions.setAttribute('src', './images/menuOptions.png'); + likesAndCount.classList.add('likesAndCount'); + likesPic.classList.add('likesPic'); + likesPic.setAttribute('src', './images/Likes.png'); + likesLab.classList.add('likesLab'); + likesLab.textContent = '0'; // Armar la estructura del nodo infoUser.id = 'infoUser'; infoUser.appendChild(avatar); infoUser.appendChild(userName); infoUser.appendChild(publicDate); + infoUser.appendChild(descriptionAndLikes); post.appendChild(infoUser); - post.appendChild(descriptionAndLikes); + post.appendChild(menuLikeSection); + menuLikeSection.appendChild(menuOptions); + menuLikeSection.appendChild(likesAndCount); + likesAndCount.appendChild(likesPic); + likesAndCount.appendChild(likesLab); divposts.insertBefore(post, divposts.firstChild); // Utilizar insertBefore para insertar al principio }; diff --git a/src/style.css b/src/style.css index 8b401255..124368b8 100644 --- a/src/style.css +++ b/src/style.css @@ -112,6 +112,8 @@ p { font-size: 17px; font-family: 'Trebuchet MS', 'Lucida Sans Unicode', 'Lucida Grande', 'Lucida Sans', Arial, sans-serif; color: #0A4D68; + grid-column: 1 / span 2; + grid-row: 3 / 3; } a { @@ -120,11 +122,12 @@ a { } #posts { - width: 60%; + width: 70%; height: fit-content; display: flex; flex-direction: column; align-items: center; + margin-top: 5%; margin-right: 20%; margin-left: 20%; padding-top: 10px; @@ -144,6 +147,7 @@ a { .post { width: 90%; + display: flex; background-color: #D9D9D9; padding: 10px; border: 1px solid #000000; @@ -155,24 +159,36 @@ a { width: 50px; border-radius: 50%; margin-left: 0; - object-fit: cover; - object-position: center; + margin-top: 5px; + grid-column: 1; + grid-row: 1/2; + justify-self: center; } #infoUser { - align-items: center; + width: 90%; + /* align-items: flex-start; + padding: 10px; display: flex; + flex-direction: column; */ + display: grid; + grid-template-columns: 0.3fr 1fr; /* Dos columnas, la primera se ajusta al contenido y la segunda ocupa el espacio restante */ + /*grid-template-rows: 1fr 1fr 1fr; Tres filas, cada una se ajusta al contenido */ + grid-auto-rows: min-content; + grid-gap: 10px; /* Espacio entre las filas y columnas */ + align-items: center; /* Alineación vertical centrada */ } .userName { - margin-top: 5px; + margin-top: 9px; + grid-column-start: 2; + grid-column-end: 2; + grid-row: 1 / 2; + margin-bottom: 40px; + justify-self: left; } -.publicDate { - margin-top: 25px; - margin-left: -65px; -} #container { margin-top: 0; @@ -210,14 +226,14 @@ a { .textArea { width: 90%; height: 90px; - padding: 7px; + padding: 20px; background-color: #D9D9D9; border-radius: 31px; border: 1px solid #000000; } .buttonCreatePost { - Width: 80px; + Width: 90px; Height: 27px; margin-right: 85px; background-color: #279A82; @@ -229,4 +245,39 @@ a { /* Alinea el botón a la izquierda, para responsive tal vez sea mejor ponerlo en "none" */ margin-left: 15px; /* hacer responsive dsps */ +} + .likesPic{ + width: 28px; + right: 10px; + bottom: 10px; +} +.menuLikeSection{ + width: 10%; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: center; + +} +.menuOptions{ + width: 39px; + margin-top: 10px; +} +.likesAndCount{ + display: flex; + flex-direction: column; + align-items: center; + height: 25%; + margin-bottom: 15px; +} +/* .userNameandDate{ + grid-column: 2 / span 2; + grid-row: 1 / 1; +} */ +.publicDate{ + margin-top: 5px; + grid-column-start: 2; + grid-column-end: 2; + grid-row: 1 / 2; + justify-self: left; } \ No newline at end of file From e8c02b60a4187f68198d8a55de836de11c3122b5 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Wed, 24 May 2023 15:45:03 -0500 Subject: [PATCH 30/51] css newPost --- src/lib/functions.js | 24 ++++++++++++------------ src/pages/wall.js | 18 ++++++++++++------ src/style.css | 38 ++++++++++++++++++++++---------------- 3 files changed, 46 insertions(+), 34 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 478d524a..1d2f301b 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -64,18 +64,18 @@ export async function register(email, password) { export function authDetector() { const auth2 = getAuth(app); - //let userEmail = null; - return new Promise((resolve,reject)=>{ - onAuthStateChanged(auth2, (user) => { - if (user) { - resolve(user.email); - /*userEmail = user.email; - console.log(userEmail);*/ - } else { - resolve(null); - //userEmail = null; - } + // let userEmail = null; + return new Promise((resolve, reject) => { + onAuthStateChanged(auth2, (user) => { + if (user) { + resolve(user.email); + /* userEmail = user.email; + console.log(userEmail); */ + } else { + resolve(null); + // userEmail = null; + } + }); }); -}); } authDetector(); diff --git a/src/pages/wall.js b/src/pages/wall.js index 1c6a6b60..ad04a553 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -1,8 +1,11 @@ +/* eslint-disable max-len */ /* eslint-disable object-shorthand */ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs, addDoc } from 'firebase/firestore'; +import { + collection, getDocs, addDoc, +} from 'firebase/firestore'; import { db } from '../lib/firebase'; import { authDetector } from '../lib/functions'; @@ -24,10 +27,9 @@ export function wall() { buttonCreatePost.classList.add('buttonCreatePost'); buttonCreatePost.textContent = 'Post'; textarea.classList.add('textArea'); + textarea.placeholder = 'write your tips today?'; // textarea.setAttribute('rows', '4'); writeAndPost.classList.add('writeAndPost'); - - // exitButton.id = 'exit'; logoRefresh.classList.add('refresh'); @@ -36,7 +38,7 @@ export function wall() { navegator.appendChild(logoRefresh); // Agregar elementos a divposts - //divposts.appendChild(writeAndPost); + // divposts.appendChild(writeAndPost); // Agregar elementos a divposts writeAndPost.appendChild(textarea); @@ -106,10 +108,11 @@ export function wall() { }); }); console.log(authDetector); + buttonCreatePost.addEventListener('click', async () => { const userDetector = await authDetector();// Obtener el email del usuario - const currentDate = new Date(); //devuelve la fecha local + const currentDate = new Date(); // devuelve la fecha local const day = currentDate.getDate();// devuelve el día solamente const month = currentDate.getMonth() + 1; // Los meses comienzan desde 0 const year = currentDate.getFullYear(); @@ -121,16 +124,19 @@ export function wall() { fecha: formattedDate, usuario: userDetector, // Asignar el email del usuario a "usuario" }; + const result = await addDoc(collection(db, 'Posts'), data); console.log(result); // Crear el nuevo post y agregarlo al principio createPost(data); + textarea.value = ''; }); + // DOMContentLoaded se dispara cuando se ha cargado // completamente el árbol DOM de una página web por // lo q no sirve en este caso ya q se cambia lo q esta en root // window.addEventListener('DOMContentLoaded', async () => { - // const querySnapshot = await getPost(); + // const querySnapshot = await getPost();0'+''''''zz // querySnapshot.forEach((doc) => { // const postdata = doc.data(); // createPost(postdata); diff --git a/src/style.css b/src/style.css index 124368b8..a32b897c 100644 --- a/src/style.css +++ b/src/style.css @@ -34,16 +34,16 @@ header { } nav { - height: 7vh; - width: 100%; - background: #dfa0a0; + + height: 70px; display: flex; justify-content: center; - margin-bottom: 10px; + margin-bottom: 20px; } .refresh { - height: 100%; + + margin-bottom: 10px; } #exit { @@ -128,8 +128,7 @@ a { flex-direction: column; align-items: center; margin-top: 5%; - margin-right: 20%; - margin-left: 20%; + margin-left: 15%; padding-top: 10px; gap: 20px; overflow: auto; @@ -220,12 +219,15 @@ a { .writeAndPost { width: 100%; - text-align: center; + display: flex; + flex-direction: column; + gap: 10px; + align-items: center; } .textArea { - width: 90%; - height: 90px; + width: 60%; + height: 60px; padding: 20px; background-color: #D9D9D9; border-radius: 31px; @@ -233,18 +235,22 @@ a { } .buttonCreatePost { - Width: 90px; - Height: 27px; - margin-right: 85px; + Width: 30%; + Height: 35px; background-color: #279A82; color: white; border: 1px solid #000000; box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25); border-radius: 25px; - float: left; - /* Alinea el botón a la izquierda, para responsive tal vez sea mejor ponerlo en "none" */ + cursor: pointer; + /*float: left; + Alinea el botón a la izquierda, para responsive tal vez sea mejor ponerlo en "none" margin-left: 15px; - /* hacer responsive dsps */ + hacer responsive dsps*/ +} +.buttonCreatePost:hover{ + background-color: #1f836d; + } .likesPic{ width: 28px; From 9de8f6ef8b9ea074b34158b7ceca18144542d6f7 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Thu, 25 May 2023 17:53:29 -0400 Subject: [PATCH 31/51] likeCounter --- src/images/Like.png | Bin 0 -> 27327 bytes src/lib/firebase.js | 3 ++- src/lib/functions.js | 35 +++++++++++++++++++++++++++-- src/pages/wall.js | 52 +++++++++++++++++++++++++++++++++---------- 4 files changed, 75 insertions(+), 15 deletions(-) create mode 100644 src/images/Like.png diff --git a/src/images/Like.png b/src/images/Like.png new file mode 100644 index 0000000000000000000000000000000000000000..341b7aef6d0e13fe08f9b829dc1c94abae31d9ca GIT binary patch literal 27327 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 literal 0 HcmV?d00001 diff --git a/src/lib/firebase.js b/src/lib/firebase.js index af54b5c2..ac28d777 100644 --- a/src/lib/firebase.js +++ b/src/lib/firebase.js @@ -2,7 +2,7 @@ /* eslint-disable import/no-extraneous-dependencies */ import { initializeApp } from 'firebase/app'; import { getAuth } from 'firebase/auth'; -import { getFirestore } from 'firebase/firestore'; +import { collection, getFirestore } from 'firebase/firestore'; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -21,5 +21,6 @@ const firebaseConfig = { export const app = initializeApp(firebaseConfig); export const auth = getAuth(app); export const db = getFirestore(app); +export const colRef = collection(db, 'Posts'); console.log(app); diff --git a/src/lib/functions.js b/src/lib/functions.js index 1d2f301b..18e66951 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -10,7 +10,10 @@ import { createUserWithEmailAndPassword, onAuthStateChanged, } from 'firebase/auth'; -import { app, auth } from './firebase'; +import { + arrayRemove, arrayUnion, doc, updateDoc, getDoc, +} from 'firebase/firestore'; +import { app, auth, colRef } from './firebase'; // export function login(email, password) { // const auth1 = getAuth(app); @@ -65,7 +68,7 @@ export async function register(email, password) { export function authDetector() { const auth2 = getAuth(app); // let userEmail = null; - return new Promise((resolve, reject) => { + return new Promise((resolve) => { onAuthStateChanged(auth2, (user) => { if (user) { resolve(user.email); @@ -79,3 +82,31 @@ export function authDetector() { }); } authDetector(); + +// user email +export const userEmail = () => auth.currentUser.email; + +// Dar y quitar Likes +export const likeCounter = (postId) => { + const postDocRef = doc(colRef, postId); + return updateDoc(postDocRef, { likes: arrayUnion(auth.currentUser.email) }); +}; + +export const dislikeCounter = (postId) => { + const postDocRef = doc(colRef, postId); + return updateDoc(postDocRef, { likes: arrayRemove(auth.currentUser.email) }); +}; + +// verificar like +export const verifyLikes = async (postId, emailUser) => { + const postDocRef = doc(colRef, postId); + const docPost = await getDoc(postDocRef); + if (docPost.exists) { + const data = docPost.data(); + const likesArray = data.likes; + if (likesArray != null && likesArray.includes(emailUser)) { + return true; + } + } + return false; +}; diff --git a/src/pages/wall.js b/src/pages/wall.js index ad04a553..21d41aaf 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -3,11 +3,9 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { - collection, getDocs, addDoc, -} from 'firebase/firestore'; -import { db } from '../lib/firebase'; -import { authDetector } from '../lib/functions'; +import { collection, getDocs, addDoc } from 'firebase/firestore'; +import { db, auth } from '../lib/firebase'; +import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes } from '../lib/functions'; export function wall() { // Crear elementos @@ -49,7 +47,7 @@ export function wall() { container.appendChild(writeAndPost); container.appendChild(divposts); - const createPost = (poster) => { + const createPost = (poster, postId) => { // crear que va a mostrar const post = document.createElement('div'); const infoUser = document.createElement('div'); @@ -81,9 +79,15 @@ export function wall() { menuOptions.setAttribute('src', './images/menuOptions.png'); likesAndCount.classList.add('likesAndCount'); likesPic.classList.add('likesPic'); - likesPic.setAttribute('src', './images/Likes.png'); + likesPic.setAttribute('src', './images/Like.png'); likesLab.classList.add('likesLab'); - likesLab.textContent = '0'; + likesLab.textContent = poster.likes?.length || 0;// ? si likes no existe q no falle al cargar los posts + + const likesArray = poster.likes; + if (likesArray != null && likesArray.includes(userEmail())){ + likesPic.setAttribute('src', './images/Likes.png'); + } + // Armar la estructura del nodo infoUser.id = 'infoUser'; @@ -98,13 +102,34 @@ export function wall() { likesAndCount.appendChild(likesPic); likesAndCount.appendChild(likesLab); divposts.insertBefore(post, divposts.firstChild); // Utilizar insertBefore para insertar al principio + + likesPic.addEventListener('click', async () => { + const userLikePost = await verifyLikes(postId, userEmail()) + console.log(userLikePost) + if (userLikePost){ + await dislikeCounter(postId) + likesPic.setAttribute('src', './images/Like.png'); + }else{ + await likeCounter(postId) + likesPic.setAttribute('src', './images/Likes.png'); + } + + // const user = auth.currentUser.uid; /* toma el id único del usuario autenticado actualmente */ + // const likesArray = docss.data().likeCounter; + + // if (!likesArray.includes(user)) { + // likeCounter(docss.id); + // likesPic.setAttribute('src', './images/Likes.png'); + // } + }); }; const postPromise = getDocs(collection(db, 'Posts')); - postPromise.then((querySnapshot) => { - querySnapshot.forEach((doc) => { - const postData = doc.data(); - createPost(postData); + postPromise.then((postList) => { + postList.forEach((postPost) => { + const postData = postPost.data(); + const postId = postPost.id; + createPost(postData, postId); }); }); console.log(authDetector); @@ -123,6 +148,7 @@ export function wall() { descripción: textarea.value, fecha: formattedDate, usuario: userDetector, // Asignar el email del usuario a "usuario" + likes: [], }; const result = await addDoc(collection(db, 'Posts'), data); @@ -132,6 +158,8 @@ export function wall() { textarea.value = ''; }); + // damm likes, primero se necesitan 3 cosas: user email, id post, campo likes + // DOMContentLoaded se dispara cuando se ha cargado // completamente el árbol DOM de una página web por // lo q no sirve en este caso ya q se cambia lo q esta en root From f8ca3b8d8cd4746580c145a82b773ef9adf5bd00 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 26 May 2023 16:12:37 -0400 Subject: [PATCH 32/51] createaccount issue --- src/lib/functions.js | 11 +++------- src/pages/createAccount.js | 43 +++++++++++++++++++------------------- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 18e66951..3c244bde 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -53,14 +53,9 @@ export async function signInWithGoogle() { } // CREATE ACCOUNT CON FIREBASE -export async function register(email, password) { - try { - const userCredentials = await createUserWithEmailAndPassword(auth, email, password); - console.log(userCredentials); - } catch (error) { - console.log(error.message); - console.log(error.code); - } +export function register(email, password) { + const userCredentials = createUserWithEmailAndPassword(auth, email, password); + console.log(userCredentials); } // detecta los cambios en el estado de autenticación diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 08440f45..97b48685 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -3,6 +3,7 @@ /* eslint-disable no-unused-vars */ /* eslint-disable no-alert */ // eslint-disable-next-line import/no-extraneous-dependencies +import { async } from 'regenerator-runtime'; import { auth } from '../lib/firebase.js'; import { signInWithGoogle, register } from '../lib/functions.js'; @@ -80,11 +81,8 @@ export function createAccount(navigateTo) { navigateTo('/signIn'); }); - linkSignIn.addEventListener('click', () => { - navigateTo('/signIn'); - }); - - createButton.addEventListener('click', async (e) => { + /** Crear cuenta */ + createButton.addEventListener('click', (e) => { e.preventDefault(); // const name = nameInput.value; const email = emailInput.value; @@ -95,24 +93,25 @@ export function createAccount(navigateTo) { navigateTo('/wall'); }).catch((error) => { alert('Your account wasn´t created'); - }); - console.log(email, password); - // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) - // await espera que la funcion cumpla con los parametros para ver un resultado o error - if (error.code === 'auth/email-already-in-use') { - alert('Email already in use'); - } else if (error.code === 'auth/missing-email') { - alert('Introduce your email'); - } else if (error.code === 'auth/weak-password') { - alert('Your password must have a minimum of 6 characters '); - } else if (error.code === 'auth/missing-password') { - alert('Introduce your password'); - } else if (error.code === 'auth/invalid-email') { - alert('Invalid email'); - } else if (error.code) { - alert('Something went wrong'); - } + console.log(email, password); + // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) + // await espera que la funcion cumpla con los parametros para ver un resultado o error + + if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code === 'auth/missing-email') { + alert('Introduce your email'); + } else if (error.code === 'auth/weak-password') { + alert('Your password must have a minimum of 6 characters '); + } else if (error.code === 'auth/missing-password') { + alert('Introduce your password'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); + } else if (error.code) { + alert('Something went wrong'); + } + }); }); continueWithGoogleButton.addEventListener('click', async (e) => { From a415dc52c84fcd9f05e8570885bc2961bf72143d Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Mon, 29 May 2023 07:40:58 -0600 Subject: [PATCH 33/51] =?UTF-8?q?Modificaci=C3=B3n=20de=20create=20account?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/functions.js | 4 +++- src/pages/createAccount.js | 40 +++++++++++++++++++------------------- src/pages/wall.js | 11 +++++------ 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 18e66951..4027da60 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -1,3 +1,4 @@ +/* eslint-disable no-shadow */ /* eslint-disable no-console */ /* eslint-disable consistent-return */ /* eslint-disable import/no-extraneous-dependencies */ @@ -53,13 +54,14 @@ export async function signInWithGoogle() { } // CREATE ACCOUNT CON FIREBASE -export async function register(email, password) { +export async function register(auth, email, password) { try { const userCredentials = await createUserWithEmailAndPassword(auth, email, password); console.log(userCredentials); } catch (error) { console.log(error.message); console.log(error.code); + throw error; } } diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 08440f45..093b5e54 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -80,12 +80,12 @@ export function createAccount(navigateTo) { navigateTo('/signIn'); }); - linkSignIn.addEventListener('click', () => { - navigateTo('/signIn'); - }); + // linkSignIn.addEventListener('click', () => { + // navigateTo('/signIn'); + // }); createButton.addEventListener('click', async (e) => { - e.preventDefault(); + e.preventDefault(); // const name = nameInput.value; const email = emailInput.value; const password = passwordInput.value; @@ -94,25 +94,25 @@ export function createAccount(navigateTo) { alert('your account was created'); navigateTo('/wall'); }).catch((error) => { - alert('Your account wasn´t created'); + //alert('Your account wasn´t created'); + + if (error.code === 'auth/email-already-in-use') { + alert('Email already in use'); + } else if (error.code === 'auth/missing-email') { + alert('Introduce your email'); + } else if (error.code === 'auth/weak-password') { + alert('Your password must have a minimum of 6 characters '); + } else if (error.code === 'auth/missing-password') { + alert('Introduce your password'); + } else if (error.code === 'auth/invalid-email') { + alert('Invalid email'); + } else if (error.code) { + alert('Something went wrong'); + } }); - console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error - - if (error.code === 'auth/email-already-in-use') { - alert('Email already in use'); - } else if (error.code === 'auth/missing-email') { - alert('Introduce your email'); - } else if (error.code === 'auth/weak-password') { - alert('Your password must have a minimum of 6 characters '); - } else if (error.code === 'auth/missing-password') { - alert('Introduce your password'); - } else if (error.code === 'auth/invalid-email') { - alert('Invalid email'); - } else if (error.code) { - alert('Something went wrong'); - } + console.log(email, password); }); continueWithGoogleButton.addEventListener('click', async (e) => { diff --git a/src/pages/wall.js b/src/pages/wall.js index 21d41aaf..6910c098 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -83,12 +83,6 @@ export function wall() { likesLab.classList.add('likesLab'); likesLab.textContent = poster.likes?.length || 0;// ? si likes no existe q no falle al cargar los posts - const likesArray = poster.likes; - if (likesArray != null && likesArray.includes(userEmail())){ - likesPic.setAttribute('src', './images/Likes.png'); - } - - // Armar la estructura del nodo infoUser.id = 'infoUser'; infoUser.appendChild(avatar); @@ -103,6 +97,11 @@ export function wall() { likesAndCount.appendChild(likesLab); divposts.insertBefore(post, divposts.firstChild); // Utilizar insertBefore para insertar al principio + const likesArray = poster.likes; + if (likesArray != null && likesArray.includes(userEmail())){ + likesPic.setAttribute('src', './images/Likes.png'); + } + likesPic.addEventListener('click', async () => { const userLikePost = await verifyLikes(postId, userEmail()) console.log(userLikePost) From 419ec80bd05f514002b1157c752c1f42e5f8b22f Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Mon, 29 May 2023 10:34:35 -0500 Subject: [PATCH 34/51] like con label --- src/lib/functions.js | 38 ++++++++++++++++++++++++++++---------- src/pages/wall.js | 29 ++++++++++++++++------------- 2 files changed, 44 insertions(+), 23 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 4027da60..1e7ff0fc 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -1,3 +1,4 @@ +/* eslint-disable max-len */ /* eslint-disable no-shadow */ /* eslint-disable no-console */ /* eslint-disable consistent-return */ @@ -14,7 +15,7 @@ import { import { arrayRemove, arrayUnion, doc, updateDoc, getDoc, } from 'firebase/firestore'; -import { app, auth, colRef } from './firebase'; +import { app, auth, colRef, db } from './firebase'; // export function login(email, password) { // const auth1 = getAuth(app); @@ -61,7 +62,7 @@ export async function register(auth, email, password) { } catch (error) { console.log(error.message); console.log(error.code); - throw error; + throw error; } } @@ -89,26 +90,43 @@ authDetector(); export const userEmail = () => auth.currentUser.email; // Dar y quitar Likes -export const likeCounter = (postId) => { +export const likeCounter = async (postId) => { const postDocRef = doc(colRef, postId); - return updateDoc(postDocRef, { likes: arrayUnion(auth.currentUser.email) }); + const docPost = await getDoc(postDocRef); + const likesCount = docPost.data().likesCount || 0; // Si no existe la propiedad likesCount, la inicializamos en 0 + return updateDoc(postDocRef, { + likes: arrayUnion(auth.currentUser.email), + likesCount: likesCount + 1, + }); }; -export const dislikeCounter = (postId) => { +export const dislikeCounter = async (postId) => { const postDocRef = doc(colRef, postId); - return updateDoc(postDocRef, { likes: arrayRemove(auth.currentUser.email) }); + const docPost = await getDoc(postDocRef); + const likesCount = docPost.data().likesCount || 0; // Si no existe la propiedad likesCount, la inicializamos en 0 + if (likesCount > 0) { // Solo disminuimos el conteo si es mayor a 0 + return updateDoc(postDocRef, { + likes: arrayRemove(auth.currentUser.email), + likesCount: likesCount - 1, + }); + } }; // verificar like export const verifyLikes = async (postId, emailUser) => { - const postDocRef = doc(colRef, postId); + const postDocRef = doc(db, 'Posts', postId); const docPost = await getDoc(postDocRef); + let userLiked = false; + let likesCount = 0; if (docPost.exists) { const data = docPost.data(); const likesArray = data.likes; - if (likesArray != null && likesArray.includes(emailUser)) { - return true; + if (likesArray != null) { + likesCount = likesArray.length; // Get the likes count + if (likesArray.includes(emailUser)) { + userLiked = true; + } } } - return false; + return { userLiked, likesCount }; }; diff --git a/src/pages/wall.js b/src/pages/wall.js index 6910c098..f602dfe5 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -3,7 +3,7 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs, addDoc } from 'firebase/firestore'; +import { collection, getDocs, addDoc, doc, getDoc } from 'firebase/firestore'; import { db, auth } from '../lib/firebase'; import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes } from '../lib/functions'; @@ -81,7 +81,7 @@ export function wall() { likesPic.classList.add('likesPic'); likesPic.setAttribute('src', './images/Like.png'); likesLab.classList.add('likesLab'); - likesLab.textContent = poster.likes?.length || 0;// ? si likes no existe q no falle al cargar los posts + likesLab.textContent = poster.likes?.length || 0; // ? si likes no existe q no falle al cargar los posts // Armar la estructura del nodo infoUser.id = 'infoUser'; @@ -102,16 +102,19 @@ export function wall() { likesPic.setAttribute('src', './images/Likes.png'); } - likesPic.addEventListener('click', async () => { - const userLikePost = await verifyLikes(postId, userEmail()) - console.log(userLikePost) - if (userLikePost){ - await dislikeCounter(postId) - likesPic.setAttribute('src', './images/Like.png'); - }else{ - await likeCounter(postId) - likesPic.setAttribute('src', './images/Likes.png'); - } + likesPic.addEventListener('click', async () => { + let { userLiked, likesCount } = await verifyLikes(postId, userEmail()); + if (userLiked){ + await dislikeCounter(postId); + likesPic.setAttribute('src', './images/Like.png'); + } else { + await likeCounter(postId); + likesPic.setAttribute('src', './images/Likes.png'); + } + // Now get the updated likes count and update the UI + const updatedLikes = await verifyLikes(postId, userEmail()); + likesLab.textContent = `${updatedLikes.likesCount}`; + }); // const user = auth.currentUser.uid; /* toma el id único del usuario autenticado actualmente */ // const likesArray = docss.data().likeCounter; @@ -120,7 +123,7 @@ export function wall() { // likeCounter(docss.id); // likesPic.setAttribute('src', './images/Likes.png'); // } - }); + }; const postPromise = getDocs(collection(db, 'Posts')); From 00412e5b96ec4fe4521f975c67bec5e27995c7f0 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Mon, 29 May 2023 15:00:06 -0500 Subject: [PATCH 35/51] mostrar opciones de eliminar y editar --- src/lib/functions.js | 4 +++- src/pages/wall.js | 53 ++++++++++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 23 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 1e7ff0fc..babb7d6a 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -15,7 +15,9 @@ import { import { arrayRemove, arrayUnion, doc, updateDoc, getDoc, } from 'firebase/firestore'; -import { app, auth, colRef, db } from './firebase'; +import { + app, auth, colRef, db, +} from './firebase'; // export function login(email, password) { // const auth1 = getAuth(app); diff --git a/src/pages/wall.js b/src/pages/wall.js index f602dfe5..0713639c 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -97,32 +97,41 @@ export function wall() { likesAndCount.appendChild(likesLab); divposts.insertBefore(post, divposts.firstChild); // Utilizar insertBefore para insertar al principio + //Mostrar menuOptions para editar y eliminar cuando los post son propios + if (userEmail() == poster.usuario){ + menuOptions.style.visibility = 'visible'; + } + else { + menuOptions.style.visibility = 'hidden'; + } + + //Mostrar la imagen antes de hacer like const likesArray = poster.likes; - if (likesArray != null && likesArray.includes(userEmail())){ + if (likesArray != null && likesArray.includes(userEmail())){ + likesPic.setAttribute('src', './images/Likes.png'); + } + // Al dar like hacer cambio de imagen y numero + likesPic.addEventListener('click', async () => { + let { userLiked, likesCount } = await verifyLikes(postId, userEmail()); + if (userLiked){ + await dislikeCounter(postId); + likesPic.setAttribute('src', './images/Like.png'); + } else { + await likeCounter(postId); likesPic.setAttribute('src', './images/Likes.png'); } + // Now get the updated likes count and update the UI + const updatedLikes = await verifyLikes(postId, userEmail()); + likesLab.textContent = `${updatedLikes.likesCount}`; + }); + + // const user = auth.currentUser.uid; /* toma el id único del usuario autenticado actualmente */ + // const likesArray = docss.data().likeCounter; - likesPic.addEventListener('click', async () => { - let { userLiked, likesCount } = await verifyLikes(postId, userEmail()); - if (userLiked){ - await dislikeCounter(postId); - likesPic.setAttribute('src', './images/Like.png'); - } else { - await likeCounter(postId); - likesPic.setAttribute('src', './images/Likes.png'); - } - // Now get the updated likes count and update the UI - const updatedLikes = await verifyLikes(postId, userEmail()); - likesLab.textContent = `${updatedLikes.likesCount}`; - }); - - // const user = auth.currentUser.uid; /* toma el id único del usuario autenticado actualmente */ - // const likesArray = docss.data().likeCounter; - - // if (!likesArray.includes(user)) { - // likeCounter(docss.id); - // likesPic.setAttribute('src', './images/Likes.png'); - // } + // if (!likesArray.includes(user)) { + // likeCounter(docss.id); + // likesPic.setAttribute('src', './images/Likes.png'); + // } }; From b17df70937109c852fb9d654d8ca2f3d2305afae Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Tue, 30 May 2023 08:00:08 -0600 Subject: [PATCH 36/51] Modal Edit Delete --- src/images/delete.png | Bin 0 -> 2020 bytes src/images/edit.png | Bin 0 -> 13127 bytes src/pages/wall.js | 46 +++++++++++++++++++++++++++++ src/style.css | 66 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 src/images/delete.png create mode 100644 src/images/edit.png diff --git a/src/images/delete.png b/src/images/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..1bda99a09ab548adae21403eda15dbbd68da2545 GIT binary patch literal 2020 zcmb7F`#Teg8=nrta@)nhk}M+0t+}LJa+xL@VaZBvVIp#g+Jy7C3^Vsaa>-(aOv|0a z+-j7jp~#mU->?bU}Je^HW-K;xqU0L00EAciV5@)b43qTSBg0vH_CB~c+xu)*2@0L+~I zKl~&B07;^wy$$ZR*lJn)u*X$ZHp|7}(cx57mL_FB%+7Wy{n>nAb09J(NXH=W+zUb4 z6U4AFaXXE^Yj>Gsm){CEk*RMvaijhSo_H>wGJ9)c?|N%TL$nWXdSdS;r(u@xol(Ag zYNUN6x_i5wv$@*|pORA(8pvE|`lC_~c>z)XDsfWC*#N@!d#{br;=pN^G#=^^DwU*n zkL8g0qbe5GMZQhWFQmoUH=^oY&tIx+!$4+|b`4<+m@;Lb8_s=AX$BlIT|rBwHCO*? zRoaAHQ9sr3YE4cjo&!Cqj56Nz;@&;RzWzH_p-X4C)AlEVb^rxMX=|7A{J2qE?V}2) zxW~`YrMTS*b~Fu&YM?!@JX-xV{tlBbOo?uWT9T7ojol3(vY5dN&_(WtY(rCuT1uVG z_lH6y+8NlJai+k!`bLl9W4y8kNf(i*3bN0`1VV#ywR2wR%qIR)Ki!%MwT z4~e7%QXx*>G<~tpgzfRjAw(}B2WEL>7sMb>PLo3_GlNrt@9`ztzL(s;gt3%mJYKNk zRvP;ExaBM+fNmus^WNdMDiSc+(4t`i0R~FtW`La90u$;V= zid+fWkz8m09kxi=33kBFC^9GdF1^el?dcBQHQy(p!vPP__w3UN3PKVm(kk)sawrtd|VY-G3 zx=|a)smd5~XT?2!+L_Vf&!I>raZE}B*!kBN!V!{2t}%UAE2KUZ4E32^V@hd`VXOxhON5?uM+2AL1}V*~8eNN} zi>0+l3F$D7xIgNCq&1jcXuXl$;jv8I_Nfdy@^IzgTn&TTc9eQKH@DF}G=TZL# ziGRqYE?-f$R)jyJrG2@Dc51;V4L+N4{dd+5It>|s(Is;6a+Q&V{e<$_PcRud=!`lE z9IjB-rD1xm(OR{7&cc5S!hKt%?^&4rC^xCe?#3OrYm;Tt>)lim@M%FP1V>5U0oz|nVA2;Xz2S8Fz7zzdSz5@ywr8dPP0)kn<^h{;pg+L#k&p#x7(MrOQlG7Rz4 znvS3Uyj`NT{NfU?uN}D}RQ@u=i~6Z&m<^p-9r{#vJXp@nq(pbIUxs_j&^c{(JlJyp znOa-}GICe+rym=@Tu8rPs~|cHLAAESxPKqOUW_X{nXgA>cNE-mS7}`eZR3|vo8GG} z`2lK)v_tl5y{U5NUV~}cP7}S$bK=X>`m@7dyN$hykR2-o{g>4?R0y;~{s2$h=uFfY zG2=;ny5zDG@Dkqr~|3X_kHieUzG`TZQa-cOnHjQD7xM zcSm#TJfdu38z~Zu4HW2xd$OvIhnaZ!KDAch+-c(nU|qJI+xEN(RVO9QNQ4#odRZCq zO22|yRULjPdZ2OE{x^GefBd%uThbPV-nY6srTArNioEeGJG|;mmUT5HcXenmS_~vq?iCO9P7Lnn{<_Xvm)Hc&Vh8vbljB{TVf5v{!3!ZasV9m0HI zJT`X>cCYv-JSVw8nkETZe~dWH#0L7#zbm(J*eE?*BAqzs5q1;u27)D9({vu-oxpjM ztK(N_k+f84_A{=PXA^|c)v971Hb6*OjQJx}Y5VMYa(@tJga2`pf5%gNV)9UVgv_Ur z?X+HhGi*_y!schKfa0$bhWWk=eDHYX-P)p>mGZ09Z{~)_gx$gFqnlSH$KJ*Yq_Atq h-%QaAh-k-uiDlTSwFouj)I?7i;D~azXW05C{SE#pyaNCL literal 0 HcmV?d00001 diff --git a/src/images/edit.png b/src/images/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cf9fa6ae0625d105f5ebbc55a5961e918466c0 GIT binary patch literal 13127 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 + e.preventDefault(); + modalContainer.classList.add('modal--show'); + }); + modalClose.addEventListener('click',(e)=>{ + e.preventDefault(); + modalContainer.classList.remove('modal--show'); + }) } else { menuOptions.style.visibility = 'hidden'; } + + //Mostrar la imagen antes de hacer like const likesArray = poster.likes; if (likesArray != null && likesArray.includes(userEmail())){ diff --git a/src/style.css b/src/style.css index a32b897c..16d9eb76 100644 --- a/src/style.css +++ b/src/style.css @@ -286,4 +286,70 @@ a { grid-column-end: 2; grid-row: 1 / 2; justify-self: left; +} +.modalContainer{ + position: fixed; + top: 0; + left:0; + right:0; + bottom:0; + background-color: #111111bd; + display: flex; + opacity:0; + pointer-events: none; +} +.modal--show{ + opacity: 1; + pointer-events: unset; +} +.modalSection{ + margin: auto; + width: 60%; + max-width: 600px; + max-height: 90%; + background-color: #FFFFFF; + border-radius: 6px; + padding: 3em 2.5em; + display: flex; + flex-direction: row; + justify-content:space-evenly; + align-items: center; + /* display:grid; + gap:1em; + place-items: center; + grid-auto-columns: 100%; + */ + +} +.editLabel{ + text-decoration: none; + color: #ffff; + background-color: #0A4D68; + padding: 1em 3em; + border: 1px solid; + border-radius: 6px; + display: inline-block; + font-weight: 300; + transition: background-color .3s; +} +.editLabel:hover{ + color: #0A4D68; + background-color: #ffff; +} +.deleteLabel{ + text-decoration: none; + color: #ffff; + background-color: #0A4D68; + padding: 1em 3em; + border: 1px solid; + border-radius: 6px; + display: inline-block; + font-weight: 300; + transition: background-color .3s; +} +.deleteLabel:hover{ + color: #0A4D68; + background-color: #ffff; +} +.modalImgDel{ } \ No newline at end of file From c90b9b1e0f93eda5cee7efb965c93d212c9795e5 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 30 May 2023 14:17:33 -0500 Subject: [PATCH 37/51] modales de opciones de menu --- src/images/closeModal.png | Bin 0 -> 9563 bytes src/images/delete.png | Bin 2020 -> 4952 bytes src/images/edit.png | Bin 13127 -> 5800 bytes src/pages/wall.js | 132 +++++++++++++++++++++++++++++--------- src/style.css | 91 +++++++++----------------- 5 files changed, 133 insertions(+), 90 deletions(-) create mode 100644 src/images/closeModal.png diff --git a/src/images/closeModal.png b/src/images/closeModal.png new file mode 100644 index 0000000000000000000000000000000000000000..8952fc32550a095d27220a4bf79a2c3f49997d7c GIT binary patch literal 9563 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 usXyhj`JoiHL~p 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 IQpG0XKNp=Hq5uE@ literal 2020 zcmb7F`#Teg8=nrta@)nhk}M+0t+}LJa+xL@VaZBvVIp#g+Jy7C3^Vsaa>-(aOv|0a z+-j7jp~#mU->?bU}Je^HW-K;xqU0L00EAciV5@)b43qTSBg0vH_CB~c+xu)*2@0L+~I zKl~&B07;^wy$$ZR*lJn)u*X$ZHp|7}(cx57mL_FB%+7Wy{n>nAb09J(NXH=W+zUb4 z6U4AFaXXE^Yj>Gsm){CEk*RMvaijhSo_H>wGJ9)c?|N%TL$nWXdSdS;r(u@xol(Ag zYNUN6x_i5wv$@*|pORA(8pvE|`lC_~c>z)XDsfWC*#N@!d#{br;=pN^G#=^^DwU*n zkL8g0qbe5GMZQhWFQmoUH=^oY&tIx+!$4+|b`4<+m@;Lb8_s=AX$BlIT|rBwHCO*? zRoaAHQ9sr3YE4cjo&!Cqj56Nz;@&;RzWzH_p-X4C)AlEVb^rxMX=|7A{J2qE?V}2) zxW~`YrMTS*b~Fu&YM?!@JX-xV{tlBbOo?uWT9T7ojol3(vY5dN&_(WtY(rCuT1uVG z_lH6y+8NlJai+k!`bLl9W4y8kNf(i*3bN0`1VV#ywR2wR%qIR)Ki!%MwT z4~e7%QXx*>G<~tpgzfRjAw(}B2WEL>7sMb>PLo3_GlNrt@9`ztzL(s;gt3%mJYKNk zRvP;ExaBM+fNmus^WNdMDiSc+(4t`i0R~FtW`La90u$;V= zid+fWkz8m09kxi=33kBFC^9GdF1^el?dcBQHQy(p!vPP__w3UN3PKVm(kk)sawrtd|VY-G3 zx=|a)smd5~XT?2!+L_Vf&!I>raZE}B*!kBN!V!{2t}%UAE2KUZ4E32^V@hd`VXOxhON5?uM+2AL1}V*~8eNN} zi>0+l3F$D7xIgNCq&1jcXuXl$;jv8I_Nfdy@^IzgTn&TTc9eQKH@DF}G=TZL# ziGRqYE?-f$R)jyJrG2@Dc51;V4L+N4{dd+5It>|s(Is;6a+Q&V{e<$_PcRud=!`lE z9IjB-rD1xm(OR{7&cc5S!hKt%?^&4rC^xCe?#3OrYm;Tt>)lim@M%FP1V>5U0oz|nVA2;Xz2S8Fz7zzdSz5@ywr8dPP0)kn<^h{;pg+L#k&p#x7(MrOQlG7Rz4 znvS3Uyj`NT{NfU?uN}D}RQ@u=i~6Z&m<^p-9r{#vJXp@nq(pbIUxs_j&^c{(JlJyp znOa-}GICe+rym=@Tu8rPs~|cHLAAESxPKqOUW_X{nXgA>cNE-mS7}`eZR3|vo8GG} z`2lK)v_tl5y{U5NUV~}cP7}S$bK=X>`m@7dyN$hykR2-o{g>4?R0y;~{s2$h=uFfY zG2=;ny5zDG@Dkqr~|3X_kHieUzG`TZQa-cOnHjQD7xM zcSm#TJfdu38z~Zu4HW2xd$OvIhnaZ!KDAch+-c(nU|qJI+xEN(RVO9QNQ4#odRZCq zO22|yRULjPdZ2OE{x^GefBd%uThbPV-nY6srTArNioEeGJG|;mmUT5HcXenmS_~vq?iCO9P7Lnn{<_Xvm)Hc&Vh8vbljB{TVf5v{!3!ZasV9m0HI zJT`X>cCYv-JSVw8nkETZe~dWH#0L7#zbm(J*eE?*BAqzs5q1;u27)D9({vu-oxpjM ztK(N_k+f84_A{=PXA^|c)v971Hb6*OjQJx}Y5VMYa(@tJga2`pf5%gNV)9UVgv_Ur z?X+HhGi*_y!schKfa0$bhWWk=eDHYX-P)p>mGZ09Z{~)_gx$gFqnlSH$KJ*Yq_Atq h-%QaAh-k-uiDlTSwFouj)I?7i;D~azXW05C{SE#pyaNCL diff --git a/src/images/edit.png b/src/images/edit.png index b7cf9fa6ae0625d105f5ebbc55a5961e918466c0..e280ccbc0ba35a3514dd813864f758fa4cf3d6e3 100644 GIT binary patch literal 5800 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 DoFdMt literal 13127 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 - e.preventDefault(); - modalContainer.classList.add('modal--show'); - }); - modalClose.addEventListener('click',(e)=>{ + }else{ + menuOptions.style.visibility = 'hidden'; + } + // const openModalDelEdit = document.querySelector('.menuOptions'); + // const modalContainer = document.querySelector('.modalContainer'); + // const modalClose = document.querySelector('.modalClose'); + // Listener para mostrar el diálogo de opciones + menuOptions.addEventListener('click', (e) => { + e.preventDefault(); + if(modalOptions.isConnected && !modalOptions.hasAttribute('open')){ + modalOptions.showModal(); + } + }); + + // Listener para el cierre del diálogo de opciones + xModal.addEventListener('click', () => { + modalOptions.close(); + }); + + // Listener para el cambio al diálogo de edición + modalImgEdit.addEventListener('click', (e) => { + e.preventDefault(); + modalOptions.close(); + if(modalEdit.isConnected && !modalEdit.hasAttribute('open')){ + modalEdit.showModal(); + } + }); + + // Listener para el cierre del diálogo de edición + btnCancel.addEventListener('click', () => { + modalEdit.close(); + }); + + // Listener para llamar pregunta de confirmación eliminar + modalImgDel.addEventListener('click', (e)=>{ e.preventDefault(); - modalContainer.classList.remove('modal--show'); - }) - } - else { - menuOptions.style.visibility = 'hidden'; - } + modalOptions.close(); + if(modalDelete.isConnected && !modalDelete.hasAttribute('open')){ + modalDelete.showModal(); + } + }) - + btnNo.addEventListener('click', ()=>{ + modalDelete.close(); + }) //Mostrar la imagen antes de hacer like const likesArray = poster.likes; @@ -215,6 +283,7 @@ export function wall() { textarea.value = ''; }); + // damm likes, primero se necesitan 3 cosas: user email, id post, campo likes // DOMContentLoaded se dispara cuando se ha cargado @@ -229,3 +298,4 @@ export function wall() { // }); return container; } + diff --git a/src/style.css b/src/style.css index 16d9eb76..0e357757 100644 --- a/src/style.css +++ b/src/style.css @@ -287,69 +287,42 @@ a { grid-row: 1 / 2; justify-self: left; } -.modalContainer{ - position: fixed; - top: 0; - left:0; - right:0; - bottom:0; - background-color: #111111bd; - display: flex; - opacity:0; - pointer-events: none; + +/* CSS MODAL */ +#modalEdit::backdrop, .modalOptions::backdrop, #modalDelete::backdrop{ + background-color: rgba(0, 0, 0, 0.65); } -.modal--show{ - opacity: 1; - pointer-events: unset; + +#modalEdit, #modalDelete { + text-align: center; + background-color:#98DEE9; } -.modalSection{ - margin: auto; - width: 60%; - max-width: 600px; - max-height: 90%; - background-color: #FFFFFF; - border-radius: 6px; - padding: 3em 2.5em; - display: flex; - flex-direction: row; - justify-content:space-evenly; - align-items: center; - /* display:grid; - gap:1em; - place-items: center; - grid-auto-columns: 100%; - */ + +.modalOptions{ + background-color:#98DEE9 ; + text-align: center; } -.editLabel{ - text-decoration: none; - color: #ffff; - background-color: #0A4D68; - padding: 1em 3em; - border: 1px solid; - border-radius: 6px; - display: inline-block; - font-weight: 300; - transition: background-color .3s; -} -.editLabel:hover{ - color: #0A4D68; - background-color: #ffff; -} -.deleteLabel{ - text-decoration: none; - color: #ffff; - background-color: #0A4D68; - padding: 1em 3em; - border: 1px solid; - border-radius: 6px; - display: inline-block; - font-weight: 300; - transition: background-color .3s; -} -.deleteLabel:hover{ - color: #0A4D68; - background-color: #ffff; + +.modalImgEdit, .modalImgDel{ + width: 50px; + display: flex; + align-items: center; +} + +.editLabel, .deleteLabel{ + text-align: center; } + +.xModal{ + width: 20px; + margin-top: 30px; +} + .modalImgDel{ + margin-top: 15px; +} + +#btn-modal, #btnYes, #btnNo{ + margin: 5px; } \ No newline at end of file From 9035e0407521247da51bd996f4a06e3f77ed2b4c Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Tue, 30 May 2023 22:19:41 -0400 Subject: [PATCH 38/51] edit post --- src/lib/functions.js | 6 -- src/pages/wall.js | 157 ++++++++++++++++++++++++------------------- 2 files changed, 87 insertions(+), 76 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index 1471c2f7..babb7d6a 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -57,11 +57,6 @@ export async function signInWithGoogle() { } // CREATE ACCOUNT CON FIREBASE -<<<<<<< HEAD -export function register(email, password) { - const userCredentials = createUserWithEmailAndPassword(auth, email, password); - console.log(userCredentials); -======= export async function register(auth, email, password) { try { const userCredentials = await createUserWithEmailAndPassword(auth, email, password); @@ -71,7 +66,6 @@ export async function register(auth, email, password) { console.log(error.code); throw error; } ->>>>>>> 8d5e2c7d4cd05a9847f311059d04bb0864784b4f } // detecta los cambios en el estado de autenticación diff --git a/src/pages/wall.js b/src/pages/wall.js index 1cea1a22..0a20af59 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -3,77 +3,11 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs, addDoc, doc, getDoc } from 'firebase/firestore'; -import { db, auth } from '../lib/firebase'; +import { collection, getDocs, addDoc, doc, getDoc, updateDoc, onSnapshot } from 'firebase/firestore'; +import { db, auth, colRef } from '../lib/firebase'; import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes } from '../lib/functions'; -//CREAR MODAL OPCIONES -const modalOptions = document.createElement('dialog'); -modalOptions.classList.add('modalOptions'); -const modalImgEdit = document.createElement('img'); -modalImgEdit.setAttribute('src', './images/edit.png'); -modalImgEdit.classList.add('modalImgEdit'); -const editLabel = document.createElement('label'); -editLabel.classList.add('editLabel'); -editLabel.textContent=('Edit'); -const modalImgDel = document.createElement('img'); -modalImgDel.setAttribute('src', './images/delete.png'); -modalImgDel.classList.add('modalImgDel'); -const deleteLabel = document.createElement('label'); -deleteLabel.classList.add('deleteLabel'); -deleteLabel.textContent=('Delete'); -const xModal = document.createElement('img'); -xModal.setAttribute('src', './images/closeModal.png'); -xModal.classList.add('xModal'); -const space = document.createElement('br'); - - -modalOptions.appendChild(modalImgEdit); -modalOptions.appendChild(editLabel); -modalOptions.appendChild(modalImgDel); -modalOptions.appendChild(deleteLabel); -deleteLabel.appendChild(space); -modalOptions.appendChild(xModal); - -//CREAR MODAL EDIT -const modalEdit = document.createElement('dialog'); -modalEdit.id = 'modalEdit'; -const txtaEdit = document.createElement('textarea'); -txtaEdit.classList.add('textArea'); -const btnCancel = document.createElement('button'); -btnCancel.textContent = 'Cancel'; -btnCancel.classList.add('button'); -btnCancel.id = 'btn-modal'; -const btnSave = document.createElement('button'); -btnSave.textContent = 'Save'; -btnSave.id = 'btn-modal'; -btnSave.classList.add('button'); -document.body.appendChild(modalEdit); - -modalEdit.appendChild(txtaEdit); -modalEdit.appendChild(btnCancel); -modalEdit.appendChild(btnSave); - -//CREAR MODAL ELIMINAR -const modalDelete = document.createElement('dialog'); -modalDelete.id = 'modalDelete'; -const question = document.createElement('p'); -question.textContent = 'Do you want to delete this post?' -question.classList.add('question'); -const btnYes = document.createElement('button'); -btnYes.textContent = 'Yes'; -btnYes.classList.add('button'); -btnYes.id = 'btn-modal'; -const btnNo = document.createElement('button'); -btnNo.textContent = 'No'; -btnNo.classList.add('button'); -btnNo.id = 'btn-modal'; -document.body.appendChild(modalDelete); - -modalDelete.appendChild(question); -modalDelete.appendChild(btnYes); -modalDelete.appendChild(btnNo); export function wall() { @@ -154,6 +88,76 @@ export function wall() { likesLab.classList.add('likesLab'); likesLab.textContent = poster.likes?.length || 0; // ? si likes no existe q no falle al cargar los posts + +//CREAR MODAL OPCIONES +const modalOptions = document.createElement('dialog'); +modalOptions.classList.add('modalOptions'); +const modalImgEdit = document.createElement('img'); +modalImgEdit.setAttribute('src', './images/edit.png'); +modalImgEdit.classList.add('modalImgEdit'); +const editLabel = document.createElement('label'); +editLabel.classList.add('editLabel'); +editLabel.textContent=('Edit'); +const modalImgDel = document.createElement('img'); +modalImgDel.setAttribute('src', './images/delete.png'); +modalImgDel.classList.add('modalImgDel'); +const deleteLabel = document.createElement('label'); +deleteLabel.classList.add('deleteLabel'); +deleteLabel.textContent=('Delete'); +const xModal = document.createElement('img'); +xModal.setAttribute('src', './images/closeModal.png'); +xModal.classList.add('xModal'); +const space = document.createElement('br'); + + +modalOptions.appendChild(modalImgEdit); +modalOptions.appendChild(editLabel); +modalOptions.appendChild(modalImgDel); +modalOptions.appendChild(deleteLabel); +deleteLabel.appendChild(space); +modalOptions.appendChild(xModal); + + +//CREAR MODAL EDIT +const modalEdit = document.createElement('dialog'); +modalEdit.id = 'modalEdit'; +const txtaEdit = document.createElement('textarea'); +txtaEdit.classList.add('textArea'); +const btnCancel = document.createElement('button'); +btnCancel.textContent = 'Cancel'; +btnCancel.classList.add('button'); +btnCancel.id = 'btn-modal'; +const btnSave = document.createElement('button'); +btnSave.textContent = 'Save'; +btnSave.id = 'btn-modal'; +btnSave.classList.add('button'); +document.body.appendChild(modalEdit); + +modalEdit.appendChild(txtaEdit); +modalEdit.appendChild(btnCancel); +modalEdit.appendChild(btnSave); + +//CREAR MODAL ELIMINAR +const modalDelete = document.createElement('dialog'); +modalDelete.id = 'modalDelete'; +const question = document.createElement('p'); +question.textContent = 'Do you want to delete this post?' +question.classList.add('question'); +const btnYes = document.createElement('button'); +btnYes.textContent = 'Yes'; +btnYes.classList.add('button'); +btnYes.id = 'btn-modal'; +const btnNo = document.createElement('button'); +btnNo.textContent = 'No'; +btnNo.classList.add('button'); +btnNo.id = 'btn-modal'; +document.body.appendChild(modalDelete); + +modalDelete.appendChild(question); +modalDelete.appendChild(btnYes); +modalDelete.appendChild(btnNo); + + // Armar la estructura del nodo infoUser.id = 'infoUser'; infoUser.appendChild(avatar); @@ -213,11 +217,24 @@ export function wall() { if(modalDelete.isConnected && !modalDelete.hasAttribute('open')){ modalDelete.showModal(); } - }) + }); btnNo.addEventListener('click', ()=>{ modalDelete.close(); - }) + }); + + modalImgEdit.addEventListener('click', ()=>{ + txtaEdit.innerHTML= poster.descripción; + }); + btnSave.addEventListener('click', async ()=>{ + const newContent = txtaEdit.value + try { + await updateDoc(doc(colRef, postId), { descripción: newContent }); + modalEdit.close(); + } catch (error) { + console.log('Error al actualizar la descripción:', error); + } + }); //Mostrar la imagen antes de hacer like const likesArray = poster.likes; From 25a8af725b1199d8028db30e3439e8b664f4bb3b Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Wed, 31 May 2023 11:41:04 -0500 Subject: [PATCH 39/51] eliminar post --- src/lib/functions.js | 11 ++- src/pages/wall.js | 158 ++++++++++++++++++++++++------------------- 2 files changed, 97 insertions(+), 72 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index babb7d6a..6f107729 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -13,7 +13,7 @@ import { onAuthStateChanged, } from 'firebase/auth'; import { - arrayRemove, arrayUnion, doc, updateDoc, getDoc, + arrayRemove, arrayUnion, doc, updateDoc, getDoc, deleteDoc, } from 'firebase/firestore'; import { app, auth, colRef, db, @@ -132,3 +132,12 @@ export const verifyLikes = async (postId, emailUser) => { } return { userLiked, likesCount }; }; + +// Eliminar el post +export async function deletePost(postId) { + try { + await deleteDoc(doc(db, 'Posts', postId)); + } catch (error) { + console.log(error); + } +} diff --git a/src/pages/wall.js b/src/pages/wall.js index 1cea1a22..756687f2 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -3,77 +3,15 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -import { collection, getDocs, addDoc, doc, getDoc } from 'firebase/firestore'; +import { collection, getDocs, addDoc } from 'firebase/firestore'; import { db, auth } from '../lib/firebase'; -import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes } from '../lib/functions'; - -//CREAR MODAL OPCIONES -const modalOptions = document.createElement('dialog'); -modalOptions.classList.add('modalOptions'); -const modalImgEdit = document.createElement('img'); -modalImgEdit.setAttribute('src', './images/edit.png'); -modalImgEdit.classList.add('modalImgEdit'); -const editLabel = document.createElement('label'); -editLabel.classList.add('editLabel'); -editLabel.textContent=('Edit'); -const modalImgDel = document.createElement('img'); -modalImgDel.setAttribute('src', './images/delete.png'); -modalImgDel.classList.add('modalImgDel'); -const deleteLabel = document.createElement('label'); -deleteLabel.classList.add('deleteLabel'); -deleteLabel.textContent=('Delete'); -const xModal = document.createElement('img'); -xModal.setAttribute('src', './images/closeModal.png'); -xModal.classList.add('xModal'); -const space = document.createElement('br'); - - -modalOptions.appendChild(modalImgEdit); -modalOptions.appendChild(editLabel); -modalOptions.appendChild(modalImgDel); -modalOptions.appendChild(deleteLabel); -deleteLabel.appendChild(space); -modalOptions.appendChild(xModal); - - -//CREAR MODAL EDIT -const modalEdit = document.createElement('dialog'); -modalEdit.id = 'modalEdit'; -const txtaEdit = document.createElement('textarea'); -txtaEdit.classList.add('textArea'); -const btnCancel = document.createElement('button'); -btnCancel.textContent = 'Cancel'; -btnCancel.classList.add('button'); -btnCancel.id = 'btn-modal'; -const btnSave = document.createElement('button'); -btnSave.textContent = 'Save'; -btnSave.id = 'btn-modal'; -btnSave.classList.add('button'); -document.body.appendChild(modalEdit); - -modalEdit.appendChild(txtaEdit); -modalEdit.appendChild(btnCancel); -modalEdit.appendChild(btnSave); - -//CREAR MODAL ELIMINAR -const modalDelete = document.createElement('dialog'); -modalDelete.id = 'modalDelete'; -const question = document.createElement('p'); -question.textContent = 'Do you want to delete this post?' -question.classList.add('question'); -const btnYes = document.createElement('button'); -btnYes.textContent = 'Yes'; -btnYes.classList.add('button'); -btnYes.id = 'btn-modal'; -const btnNo = document.createElement('button'); -btnNo.textContent = 'No'; -btnNo.classList.add('button'); -btnNo.id = 'btn-modal'; -document.body.appendChild(modalDelete); - -modalDelete.appendChild(question); -modalDelete.appendChild(btnYes); -modalDelete.appendChild(btnNo); +import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost } from '../lib/functions'; +import { async } from 'regenerator-runtime'; + + + + + export function wall() { @@ -117,6 +55,75 @@ export function wall() { container.appendChild(divposts); const createPost = (poster, postId) => { + + //CREAR MODAL OPCIONES + const modalOptions = document.createElement('dialog'); + modalOptions.classList.add('modalOptions'); + const modalImgEdit = document.createElement('img'); + modalImgEdit.setAttribute('src', './images/edit.png'); + modalImgEdit.classList.add('modalImgEdit'); + const editLabel = document.createElement('label'); + editLabel.classList.add('editLabel'); + editLabel.textContent=('Edit'); + const modalImgDel = document.createElement('img'); + modalImgDel.setAttribute('src', './images/delete.png'); + modalImgDel.classList.add('modalImgDel'); + const deleteLabel = document.createElement('label'); + deleteLabel.classList.add('deleteLabel'); + deleteLabel.textContent=('Delete'); + const xModal = document.createElement('img'); + xModal.setAttribute('src', './images/closeModal.png'); + xModal.classList.add('xModal'); + const space = document.createElement('br'); + + + modalOptions.appendChild(modalImgEdit); + modalOptions.appendChild(editLabel); + modalOptions.appendChild(modalImgDel); + modalOptions.appendChild(deleteLabel); + deleteLabel.appendChild(space); + modalOptions.appendChild(xModal); + //CREAR MODAL EDIT + const modalEdit = document.createElement('dialog'); + modalEdit.id = 'modalEdit'; + const txtaEdit = document.createElement('textarea'); + txtaEdit.classList.add('textArea'); + const btnCancel = document.createElement('button'); + btnCancel.textContent = 'Cancel'; + btnCancel.classList.add('button'); + btnCancel.id = 'btn-modal'; + const btnSave = document.createElement('button'); + btnSave.textContent = 'Save'; + btnSave.id = 'btn-modal'; + btnSave.classList.add('button'); + document.body.appendChild(modalEdit); + + modalEdit.appendChild(txtaEdit); + modalEdit.appendChild(btnCancel); + modalEdit.appendChild(btnSave); + + //CREAR MODAL ELIMINAR + const modalDelete = document.createElement('dialog'); + modalDelete.id = 'modalDelete'; + const question = document.createElement('p'); + question.textContent = 'Do you want to delete this post?' + question.classList.add('question'); + const btnYes = document.createElement('button'); + btnYes.textContent = 'Yes'; + btnYes.classList.add('button'); + btnYes.id = 'btn-modal'; + const btnNo = document.createElement('button'); + btnNo.textContent = 'No'; + btnNo.classList.add('button'); + btnNo.id = 'btn-modal'; + document.body.appendChild(modalDelete); + + modalDelete.appendChild(question); + modalDelete.appendChild(btnYes); + modalDelete.appendChild(btnNo); + + + // crear que va a mostrar const post = document.createElement('div'); const infoUser = document.createElement('div'); @@ -219,6 +226,14 @@ export function wall() { modalDelete.close(); }) + btnYes.addEventListener('click', async()=>{ + + await deletePost(postId); + modalDelete.close(); + post.remove(); + }) + + //Mostrar la imagen antes de hacer like const likesArray = poster.likes; if (likesArray != null && likesArray.includes(userEmail())){ @@ -249,6 +264,7 @@ export function wall() { }; + // Crea el post en Firebase, guarda en postData y le asigna un Id const postPromise = getDocs(collection(db, 'Posts')); postPromise.then((postList) => { postList.forEach((postPost) => { @@ -279,7 +295,7 @@ export function wall() { const result = await addDoc(collection(db, 'Posts'), data); console.log(result); // Crear el nuevo post y agregarlo al principio - createPost(data); + createPost(data, result.id); textarea.value = ''; }); From c34668820a49e5bfa35c5028f367bfe4311610e4 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Thu, 1 Jun 2023 12:00:42 -0400 Subject: [PATCH 40/51] ordenar --- package.json | 2 +- src/lib/functions.js | 26 ++++++++++++++++++++++++- src/pages/wall.js | 19 +++++++------------ test/index.spec.js | 45 ++++++++++++++++++++++++++++++++++++++++---- 4 files changed, 74 insertions(+), 18 deletions(-) diff --git a/package.json b/package.json index 9344c74a..abc94c98 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "eslint": "eslint --ext .js src/ test/", "stylelint": "stylelint --aei src/**/*.css", "pretest": "npm run htmlhint && npm run eslint && npm run stylelint", - "test": "jest --coverage", + "test": "jest --coverage --env=jsdom", "dev": "vite dev src", "start": "npm run dev", "build": "vite build", diff --git a/src/lib/functions.js b/src/lib/functions.js index 6f107729..0b753c30 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -13,7 +13,7 @@ import { onAuthStateChanged, } from 'firebase/auth'; import { - arrayRemove, arrayUnion, doc, updateDoc, getDoc, deleteDoc, + collection, arrayRemove, arrayUnion, doc, updateDoc, getDoc, getDocs, addDoc, deleteDoc, } from 'firebase/firestore'; import { app, auth, colRef, db, @@ -91,6 +91,20 @@ authDetector(); // user email export const userEmail = () => auth.currentUser.email; +// Obtener collección Posts +export const postPromise = getDocs(collection(db, 'Posts')); + +// Agregar un post +export const postCol = collection(db, 'Posts'); +export async function addPost(postCollection, data) { + try { + await addDoc(postCollection, data); + return addPost; + } catch (error) { + console.log(error); + } +} + // Dar y quitar Likes export const likeCounter = async (postId) => { const postDocRef = doc(colRef, postId); @@ -141,3 +155,13 @@ export async function deletePost(postId) { console.log(error); } } + +// Edit post +export async function editpost(postId, textEdit) { + try { + const updatedPost = await updateDoc(doc(colRef, postId), { descripción: textEdit }); + return updatedPost; + } catch (error) { + console.log(error); + } +} diff --git a/src/pages/wall.js b/src/pages/wall.js index c020642c..f6bf6c31 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -6,11 +6,8 @@ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ import { - collection, getDocs, addDoc, updateDoc, doc, -} from 'firebase/firestore'; -import { db, colRef } from '../lib/firebase'; -import { - authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, + authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, editpost, postPromise, + addPost, postCol, } from '../lib/functions'; export function wall() { @@ -41,9 +38,6 @@ export function wall() { // Agregar elementos a nav navegator.appendChild(logoRefresh); - // Agregar elementos a divposts - // divposts.appendChild(writeAndPost); - // Agregar elementos a divposts writeAndPost.appendChild(textarea); writeAndPost.appendChild(buttonCreatePost); @@ -179,6 +173,7 @@ export function wall() { // const openModalDelEdit = document.querySelector('.menuOptions'); // const modalContainer = document.querySelector('.modalContainer'); // const modalClose = document.querySelector('.modalClose'); + // Listener para mostrar el diálogo de opciones menuOptions.addEventListener('click', (e) => { e.preventDefault(); @@ -233,7 +228,8 @@ export function wall() { e.preventDefault; const newContent = txtaEdit.value; try { - await updateDoc(doc(colRef, postId), { descripción: newContent }); + const result = await editpost(postId, newContent); + console.log(result); modalEdit.close(); } catch (error) { console.log('Error al actualizar la descripción:', error); @@ -255,7 +251,7 @@ export function wall() { await likeCounter(postId); likesPic.setAttribute('src', './images/Likes.png'); } - // Now get the updated likes count and update the UI + // obtén el recuento actualizado de "likes" y actualiza la interfaz de usuario const updatedLikes = await verifyLikes(postId, userEmail()); likesLab.textContent = `${updatedLikes.likesCount}`; }); @@ -270,7 +266,6 @@ export function wall() { }; // Crea el post en Firebase, guarda en postData y le asigna un Id - const postPromise = getDocs(collection(db, 'Posts')); postPromise.then((postList) => { postList.forEach((postPost) => { const postData = postPost.data(); @@ -297,7 +292,7 @@ export function wall() { likes: [], }; - const result = await addDoc(collection(db, 'Posts'), data); + const result = await addPost(postCol, data); console.log(result); // Crear el nuevo post y agregarlo al principio createPost(data, result.id); diff --git a/test/index.spec.js b/test/index.spec.js index 91f11a33..854ee7f4 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,8 +1,45 @@ // importamos la funcion que vamos a testear -import { myFunction } from '../src/lib/index'; +/* coverage/Icov-report/index.html, click derecho y +reveal in file explorer, manda a carpeta alli abrir index */ +import { home } from '../src/pages/home.js'; +import { createAccount } from '../src/pages/createAccount.js'; +import { signIn } from '../src/pages/signIn.js'; +import { wall } from '../src/pages/wall.js'; -describe('myFunction', () => { - it('debería ser una función', () => { - expect(typeof myFunction).toBe('function'); +// test de render de paginas +describe('Function home', () => { + it('render home', () => { + home(); }); }); +describe('Function createAccount', () => { + it('render createAccount', () => { + createAccount(); + }); +}); +describe('Function signIn', () => { + it('render signIn', () => { + signIn(); + }); +}); + +// WALL TESTS + +// display wall +describe('Function wall', () => { + it('render wall', () => { + wall(); + }); +}); + +// wall es una función +describe('wall', () => { + test('wall is a function', () => { + expect(typeof wall).toBe('function'); + }); +}); + +// si buttonCreatePost existe +test('buttonCreatePost exist', ()=>{ + +}) From 83b7fc8d8cd6200935d03d486f91f5496b7cd88c Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Thu, 1 Jun 2023 17:04:15 -0500 Subject: [PATCH 41/51] proteccion de ruta wall y mock de test --- src/main.js | 20 +++++++++++++++----- src/pages/signIn.js | 2 +- test/index.spec.js | 24 ++++++++++++++++++++---- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/main.js b/src/main.js index ad7034cd..7d25cbb8 100644 --- a/src/main.js +++ b/src/main.js @@ -3,10 +3,12 @@ /* eslint-disable import/named */ /* eslint-disable no-unused-vars */ // Importar las vistas +import { onAuthStateChanged } from 'firebase/auth'; import { home } from './pages/home.js'; import { createAccount } from './pages/createAccount.js'; import { signIn } from './pages/signIn.js'; import { wall } from './pages/wall.js'; +import { auth } from './lib/firebase.js'; const root = document.getElementById('root'); @@ -26,6 +28,14 @@ function navigateTo(pathname) { root.appendChild(view(navigateTo)); } +onAuthStateChanged(auth, (user) => { + if (user) { // si hay usuario puede permanecer activo(permanece en wall) + navigateTo('/wall'); + } else { // si no, lo mantiene o lleva a la página welcome (no se puede ir a wall) + navigateTo('/'); + } +}); + /* window.onpopstate se utiliza para manejar el evento de cambio en el historial de navegación del navegador */ window.onpopstate = () => { root.innerHTML = ''; @@ -34,11 +44,11 @@ window.onpopstate = () => { root.appendChild(view(navigateTo)); }; -function reloadPage() { - const currentPath = window.location.pathname; - localStorage.setItem('currentPage', currentPath); - window.location.reload(); -} +// function reloadPage() { +// const currentPath = window.location.pathname; +// localStorage.setItem('currentPage', currentPath); +// window.location.reload(); +// } // Obtener la página actual almacenada en localStorage const currentPage = window.location.pathname; diff --git a/src/pages/signIn.js b/src/pages/signIn.js index 4042bfe5..e07e61b7 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -85,6 +85,7 @@ export function signIn(navigateTo) { try { const userEmail = await login(email, password); console.log('Este es el email: ', userEmail); + navigateTo('/wall'); // export { userEmail }; // console.log(userCredentials); } catch (error) { @@ -105,7 +106,6 @@ export function signIn(navigateTo) { alert('Something went wrong !'); } } - navigateTo('/wall'); }); continueWithGoogleButton.addEventListener('click', async (e) => { diff --git a/test/index.spec.js b/test/index.spec.js index 854ee7f4..7d5f5605 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -1,11 +1,27 @@ -// importamos la funcion que vamos a testear /* coverage/Icov-report/index.html, click derecho y reveal in file explorer, manda a carpeta alli abrir index */ +// importamos la funcion que vamos a testear import { home } from '../src/pages/home.js'; import { createAccount } from '../src/pages/createAccount.js'; import { signIn } from '../src/pages/signIn.js'; import { wall } from '../src/pages/wall.js'; +jest.mock('../lib/functions', () => { + const originalModule = jest.requireActual('../lib/functions'); + + // Mock the default export and named export 'foo' + return { + __esModule: true, + ...originalModule, + authDetector: jest.fn(() => new Promise((resolve) => { + resolve('mock@mock.cl'); + })), + addPost: jest.fn(() => new Promise((resolve) => { resolve({ id: 'Value' }); })), + }; +}); + +describe(); + // test de render de paginas describe('Function home', () => { it('render home', () => { @@ -40,6 +56,6 @@ describe('wall', () => { }); // si buttonCreatePost existe -test('buttonCreatePost exist', ()=>{ - -}) +test('buttonCreatePost exist', () => { + +}); From 4a7d35ac5fe53b2494e65d0879706fd88466642f Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Thu, 1 Jun 2023 21:51:57 -0600 Subject: [PATCH 42/51] LogOut --- src/images/logout.png | Bin 0 -> 5170 bytes src/index.html | 2 ++ src/lib/functions.js | 11 +++++++++++ src/pages/createAccount.js | 2 -- src/pages/wall.js | 17 ++++++++++++++--- src/style.css | 7 +++++++ test/index.spec.js | 4 ++-- 7 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/images/logout.png diff --git a/src/images/logout.png b/src/images/logout.png new file mode 100644 index 0000000000000000000000000000000000000000..201d92e96fdde6f00dfdf52386c76e07739df669 GIT binary patch literal 5170 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 + + diff --git a/src/lib/functions.js b/src/lib/functions.js index 0b753c30..6f98260e 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -1,3 +1,4 @@ +/* eslint-disable no-unused-vars */ /* eslint-disable max-len */ /* eslint-disable no-shadow */ /* eslint-disable no-console */ @@ -165,3 +166,13 @@ export async function editpost(postId, textEdit) { console.log(error); } } + +export async function signOut() { + auth.signOut() + .then(() => { + + }) + .catch((error) => { + + }); +} diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 97b48685..212b97e7 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -92,8 +92,6 @@ export function createAccount(navigateTo) { alert('your account was created'); navigateTo('/wall'); }).catch((error) => { - alert('Your account wasn´t created'); - console.log(email, password); // promesa de la funcion, bloque try.. catch debe ir acompañado de async(funcion asyncrona) // await espera que la funcion cumpla con los parametros para ver un resultado o error diff --git a/src/pages/wall.js b/src/pages/wall.js index f6bf6c31..d2c313ea 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -5,9 +5,12 @@ /* eslint-disable no-undef */ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ + +// import { signOut } from 'firebase/auth'; + import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, editpost, postPromise, - addPost, postCol, + addPost, postCol, signOut, } from '../lib/functions'; export function wall() { @@ -15,6 +18,7 @@ export function wall() { const container = document.createElement('div'); const navegator = document.createElement('nav'); const logoRefresh = document.createElement('img'); + const logOut = document.createElement('img'); const divposts = document.createElement('div'); const buttonCreatePost = document.createElement('button'); const textarea = document.createElement('textarea'); @@ -23,6 +27,8 @@ export function wall() { // Establecer atributos y contenido logoRefresh.setAttribute('src', './images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); + logOut.setAttribute('src', './images/logout.png'); + logOut.classList.add('logOut'); container.id = 'container'; divposts.id = 'posts'; buttonCreatePost.classList.add('buttonCreatePost'); @@ -32,12 +38,17 @@ export function wall() { // textarea.setAttribute('rows', '4'); writeAndPost.classList.add('writeAndPost'); - // exitButton.id = 'exit'; + // Imagen LogOut + logOut.addEventListener('click', () => { + signOut(); + }); + + // Logo refresh logoRefresh.classList.add('refresh'); // Agregar elementos a nav navegator.appendChild(logoRefresh); - + navegator.appendChild(logOut); // Agregar elementos a divposts writeAndPost.appendChild(textarea); writeAndPost.appendChild(buttonCreatePost); diff --git a/src/style.css b/src/style.css index 0e357757..dd49b87d 100644 --- a/src/style.css +++ b/src/style.css @@ -325,4 +325,11 @@ a { #btn-modal, #btnYes, #btnNo{ margin: 5px; +} + +.logOut{ + width: 25px; + height: 25px; + + } \ No newline at end of file diff --git a/test/index.spec.js b/test/index.spec.js index 7d5f5605..1e032cb0 100644 --- a/test/index.spec.js +++ b/test/index.spec.js @@ -6,8 +6,8 @@ import { createAccount } from '../src/pages/createAccount.js'; import { signIn } from '../src/pages/signIn.js'; import { wall } from '../src/pages/wall.js'; -jest.mock('../lib/functions', () => { - const originalModule = jest.requireActual('../lib/functions'); +jest.mock('../lib/functions.js', () => { + const originalModule = jest.requireActual('../lib/functions.js'); // Mock the default export and named export 'foo' return { From ed181775b9fe210e45990c7589423299d12a6f89 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 2 Jun 2023 13:19:31 -0400 Subject: [PATCH 43/51] hovers --- src/images/logout.png | Bin 5170 -> 32947 bytes src/images/logout2.png | Bin 0 -> 8141 bytes src/lib/functions.js | 4 +- src/pages/wall.js | 15 +++++- src/style.css | 112 ++++++++++++++++++++++++++++------------- 5 files changed, 92 insertions(+), 39 deletions(-) create mode 100644 src/images/logout2.png diff --git a/src/images/logout.png b/src/images/logout.png index 201d92e96fdde6f00dfdf52386c76e07739df669..83c895c84fdac70ba010303c328f10a2e329584c 100644 GIT binary patch literal 32947 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 onSnapshot(orderedQuery, callback); // export function login(email, password) { // const auth1 = getAuth(app); // const resultPromise = signInWithEmailAndPassword(auth1, email, password); diff --git a/src/pages/wall.js b/src/pages/wall.js index d2c313ea..35ddc89c 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -10,9 +10,8 @@ import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, editpost, postPromise, - addPost, postCol, signOut, + addPost, postCol, signOut, getPost, } from '../lib/functions'; - export function wall() { // Crear elementos const container = document.createElement('div'); @@ -59,6 +58,18 @@ export function wall() { container.appendChild(divposts); const createPost = (poster, postId) => { + + // Llamar a la función getPost para obtener los datos de los posts + getPost((querySnapshot) => { + // Iterar sobre los documentos en el querySnapshot + querySnapshot.forEach((doc) => { + // Obtener los datos del documento + const post = doc.data(); + // Hacer algo con los datos del post, por ejemplo: + console.log(post); + }); + }); + // CREAR MODAL OPCIONES const modalOptions = document.createElement('dialog'); modalOptions.classList.add('modalOptions'); diff --git a/src/style.css b/src/style.css index dd49b87d..4a08175e 100644 --- a/src/style.css +++ b/src/style.css @@ -34,18 +34,37 @@ header { } nav { - + height: 70px; display: flex; - justify-content: center; + justify-content: space-between; margin-bottom: 20px; } .refresh { - + margin: 2px; margin-bottom: 10px; } +.refresh:hover { + margin: 0px; + height: 90%; + width: auto; +} + +.logOut { + margin: 2px; + height: 70%; + width: auto; + transform: scaleX(-1); +} + +.logOut:hover { + margin: 0px; + height: 80%; + width: auto; +} + #exit { width: 50px; height: 200px; @@ -133,16 +152,17 @@ a { gap: 20px; overflow: auto; overflow-x: hidden; - + /* Oculta la barra de desplazamiento en navegadores compatibles */ scrollbar-color: transparent transparent; /* Establece el color de la barra de desplazamiento transparente */ } #posts::-webkit-scrollbar-track { - background-color: #6f2121; /* Color de fondo de la barra de desplazamiento */ - } - + background-color: #6f2121; + /* Color de fondo de la barra de desplazamiento */ +} + .post { width: 90%; @@ -172,11 +192,14 @@ a { display: flex; flex-direction: column; */ display: grid; - grid-template-columns: 0.3fr 1fr; /* Dos columnas, la primera se ajusta al contenido y la segunda ocupa el espacio restante */ + grid-template-columns: 0.3fr 1fr; + /* Dos columnas, la primera se ajusta al contenido y la segunda ocupa el espacio restante */ /*grid-template-rows: 1fr 1fr 1fr; Tres filas, cada una se ajusta al contenido */ grid-auto-rows: min-content; - grid-gap: 10px; /* Espacio entre las filas y columnas */ - align-items: center; /* Alineación vertical centrada */ + grid-gap: 10px; + /* Espacio entre las filas y columnas */ + align-items: center; + /* Alineación vertical centrada */ } .userName { @@ -248,39 +271,56 @@ a { margin-left: 15px; hacer responsive dsps*/ } -.buttonCreatePost:hover{ + +.buttonCreatePost:hover { background-color: #1f836d; - + } - .likesPic{ + +.likesPic { width: 28px; right: 10px; bottom: 10px; } -.menuLikeSection{ + +.likesPic:hover { + width: 32px; + right: 5px; + bottom: 5px; +} + +.menuLikeSection { width: 10%; display: flex; flex-direction: column; justify-content: space-between; align-items: center; - + } -.menuOptions{ + +.menuOptions { width: 39px; margin-top: 10px; } -.likesAndCount{ + +.menuOptions:hover { + width: 43px; + margin-top: 7px; +} + +.likesAndCount { display: flex; flex-direction: column; align-items: center; height: 25%; margin-bottom: 15px; } + /* .userNameandDate{ grid-column: 2 / span 2; grid-row: 1 / 1; } */ -.publicDate{ +.publicDate { margin-top: 5px; grid-column-start: 2; grid-column-end: 2; @@ -289,47 +329,47 @@ a { } /* CSS MODAL */ -#modalEdit::backdrop, .modalOptions::backdrop, #modalDelete::backdrop{ +#modalEdit::backdrop, +.modalOptions::backdrop, +#modalDelete::backdrop { background-color: rgba(0, 0, 0, 0.65); } -#modalEdit, #modalDelete { +#modalEdit, +#modalDelete { text-align: center; - background-color:#98DEE9; + background-color: #98DEE9; } -.modalOptions{ - background-color:#98DEE9 ; +.modalOptions { + background-color: #98DEE9; text-align: center; - + } -.modalImgEdit, .modalImgDel{ +.modalImgEdit, +.modalImgDel { width: 50px; display: flex; align-items: center; } -.editLabel, .deleteLabel{ +.editLabel, +.deleteLabel { text-align: center; } -.xModal{ +.xModal { width: 20px; margin-top: 30px; } -.modalImgDel{ +.modalImgDel { margin-top: 15px; } -#btn-modal, #btnYes, #btnNo{ +#btn-modal, +#btnYes, +#btnNo { margin: 5px; -} - -.logOut{ - width: 25px; - height: 25px; - - } \ No newline at end of file From cd1ac35dd9105abd7ccbb5652d35439623a4f066 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Fri, 2 Jun 2023 15:28:12 -0400 Subject: [PATCH 44/51] update real time --- src/lib/functions.js | 6 +++-- src/pages/wall.js | 53 ++++++++++++++++++++++++-------------------- src/style.css | 6 +++++ 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/lib/functions.js b/src/lib/functions.js index b24fe33c..451b6b29 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -14,13 +14,15 @@ import { onAuthStateChanged, } from 'firebase/auth'; import { - collection, arrayRemove, arrayUnion, doc, updateDoc, getDoc, getDocs, addDoc, deleteDoc, onSnapshot, query, orderBy, Timestamp, + collection, arrayRemove, arrayUnion, doc, updateDoc, getDoc, getDocs, addDoc, deleteDoc, onSnapshot, query, orderBy, serverTimestamp, } from 'firebase/firestore'; import { app, auth, colRef, db, } from './firebase'; -const orderedQuery = query(colRef, orderBy('Timestamp', 'desc'));// Consulta la colección y la ordena los posts por su fecha/hora de publicación +export const timeStamp = serverTimestamp; +const orderedQuery = query(colRef, orderBy('fecha', 'asc'));// Consulta la colección y la ordena los posts por su fecha/hora de publicación// Consulta la colección y la ordena los posts por su fecha/hora de publicación +//const orderedQuery = query(colRef); export const getPost = (callback) => onSnapshot(orderedQuery, callback); // export function login(email, password) { // const auth1 = getAuth(app); diff --git a/src/pages/wall.js b/src/pages/wall.js index 35ddc89c..916e41b2 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -10,8 +10,9 @@ import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, editpost, postPromise, - addPost, postCol, signOut, getPost, + addPost, postCol, signOut, getPost, timeStamp, } from '../lib/functions'; + export function wall() { // Crear elementos const container = document.createElement('div'); @@ -58,18 +59,6 @@ export function wall() { container.appendChild(divposts); const createPost = (poster, postId) => { - - // Llamar a la función getPost para obtener los datos de los posts - getPost((querySnapshot) => { - // Iterar sobre los documentos en el querySnapshot - querySnapshot.forEach((doc) => { - // Obtener los datos del documento - const post = doc.data(); - // Hacer algo con los datos del post, por ejemplo: - console.log(post); - }); - }); - // CREAR MODAL OPCIONES const modalOptions = document.createElement('dialog'); modalOptions.classList.add('modalOptions'); @@ -156,7 +145,17 @@ export function wall() { userName.className = 'userName'; publicDate.className = 'publicDate'; avatar.src = poster.avatar; - publicDate.textContent = poster.fecha.toLocaleString(); + + const currentDate = poster.fecha.toDate(); // devuelve la fecha local + const day = currentDate.getDate();// devuelve el día solamente + const month = currentDate.getMonth() + 1; // Los meses comienzan desde 0 + const year = currentDate.getFullYear(); + const formattedDate = `${day}/${month}/${year}`; + + // const dateObject = timestamp.toDate(); // Convert to Date object + // const dateString = dateObject.toISOString(); // Convert to string in ISO format + + publicDate.textContent = formattedDate; publicDate.type = poster.fecha; userName.textContent = poster.usuario; imagenPost.src = 'ruta/al/imagen2'; @@ -287,31 +286,37 @@ export function wall() { // } }; - // Crea el post en Firebase, guarda en postData y le asigna un Id - postPromise.then((postList) => { - postList.forEach((postPost) => { + // Llamar a la función getPost para obtener los datos de los posts + getPost((queryData) => { + console.log('Current data: ', queryData); + divposts.innerHTML = ''; + queryData.forEach((postPost) => { const postData = postPost.data(); const postId = postPost.id; createPost(postData, postId); }); }); + + // Crea el post en Firebase, guarda en postData y le asigna un Id + // postPromise.then((postList) => { + // postList.forEach((postPost) => { + // const postData = postPost.data(); + // const postId = postPost.id; + // createPost(postData, postId); + // }); + // }); console.log(authDetector); buttonCreatePost.addEventListener('click', async () => { const userDetector = await authDetector();// Obtener el email del usuario - const currentDate = new Date(); // devuelve la fecha local - const day = currentDate.getDate();// devuelve el día solamente - const month = currentDate.getMonth() + 1; // Los meses comienzan desde 0 - const year = currentDate.getFullYear(); - const formattedDate = `${day}/${month}/${year}`; - const data = { avatar: '/images/Avatar.png', descripción: textarea.value, - fecha: formattedDate, + fecha: timeStamp(), usuario: userDetector, // Asignar el email del usuario a "usuario" likes: [], + }; const result = await addPost(postCol, data); diff --git a/src/style.css b/src/style.css index 4a08175e..9e8c68a0 100644 --- a/src/style.css +++ b/src/style.css @@ -50,6 +50,7 @@ nav { margin: 0px; height: 90%; width: auto; + cursor: pointer; } .logOut { @@ -63,6 +64,7 @@ nav { margin: 0px; height: 80%; width: auto; + cursor: pointer; } #exit { @@ -107,6 +109,7 @@ input::placeholder { .button:hover { background-color: #1f836d; + cursor: pointer; } /* CSS DE PAGE HOME */ @@ -274,6 +277,7 @@ a { .buttonCreatePost:hover { background-color: #1f836d; + cursor: pointer; } @@ -287,6 +291,7 @@ a { width: 32px; right: 5px; bottom: 5px; + cursor: pointer; } .menuLikeSection { @@ -306,6 +311,7 @@ a { .menuOptions:hover { width: 43px; margin-top: 7px; + cursor: pointer; } .likesAndCount { From 13bea85a87b402aaddbddf795693c1c2019f781c Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Sun, 4 Jun 2023 18:24:56 -0600 Subject: [PATCH 45/51] Borrador de readme --- README.md | 537 ++------------------------------------- src/images/createacc.png | Bin 0 -> 26539 bytes src/images/home.png | Bin 0 -> 19682 bytes src/images/signin.png | Bin 0 -> 24575 bytes src/images/wall.png | Bin 0 -> 22192 bytes 5 files changed, 21 insertions(+), 516 deletions(-) create mode 100644 src/images/createacc.png create mode 100644 src/images/home.png create mode 100644 src/images/signin.png create mode 100644 src/images/wall.png diff --git a/README.md b/README.md index c64bad1e..01c1aad6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Creando una Red Social +# Red Social - EasyGym ## Índice @@ -17,538 +17,43 @@ Instagram, Snapchat, Twitter, Facebook, Twitch, Linkedin, etc. Las redes sociales han invadido nuestras vidas. Las amamos u odiamos, y muchos no podemos vivir sin ellas. -![adem-ay-Tk9m_HP4rgQ-unsplash](https://user-images.githubusercontent.com/110297/135544666-4efa54f1-4ff6-4c4c-b398-6df04ef56117.jpg) - -Hay redes sociales de todo tipo y para todo tipo de intereses. Por ejemplo, -en una ronda de financiamiento con inversionistas, se presentó una red social -para químicos en la que los usuarios podían publicar artículos sobre sus -investigaciones, comentar en los artículos de sus colegas, y filtrar artículos -de acuerdo a determinadas etiquetas o su popularidad, lo más reciente, o lo -más comentado. +Hay redes sociales de todo tipo y para todo tipo de intereses. ## 2. Resumen del proyecto -En este proyecto construirás una Red Social sobre lo que decidan tú y tu equipo. -Podría ser, por ejemplo, sobre alimentación saludable, feminismo, educación, -salud, energías renovables, amantes de las [Empanadas](https://es.wikipedia.org/wiki/Empanada) -o de los [Tacos de Canasta](https://es.wikipedia.org/wiki/Taco), -de la [Feijoada](https://es.wikipedia.org/wiki/Feijoada), o de lo que sea. - -Tu Red Social tendrá que permitir a cualquier usuario crear una cuenta de acceso -y loguearse con ella; crear, editar, borrar y _"likear"_ publicacciones. - -Por lo tanto, en este proyecto construirás una -[Single-page Application (SPA)](https://es.wikipedia.org/wiki/Single-page_application) -[_responsive_](https://curriculum.laboratoria.la/es/topics/css/02-responsive) (con más de una vista / página) -en la que podamos **leer y escribir datos**. +En este proyecto construímos una red social dedicada a una comunidad que puede crear, ver y compartir rutinas rápidas de ejercicio que pueden ser realizadas desde cualquier parte del mundo y en cualquier lugar, ya sea casa, jardín, parque o un centro deportivo. ### Los objetivos generales de este proyecto son los siguientes -* Desarrollar una SPA con temática de red social -* Aplicar los conceptos de responsividad en el desarrollo de las vistas (templates) -* Implementar un router para la navegación entre las diferentes vistas de la aplicación -* Emplear un servicio externo para la persistencia de datos de la aplicación -* Crear una suite de pruebas unitarias que permitan testear código asíncrono +* Qué cada usuario cree una cuenta. +* Comparta rutinas. +* Revise tips del resto de los usuarios. +* Pueda dar likes cualquier publicación. -Para lograr estos objetivos, deberás aprender y hacer uso de las siguientes -herramientas o habilidades técnicas: +## 3. Pantalla Principal -## 3. Objetivos de aprendizaje +Esta es la pantalla inicial dónde podemos encontrar una breve descripción del propósito de la página. También nos da la opción de ingresar con Sign In (si ya contamos con una cuenta) o con Create Account (si no tenemos cuenta y deseamos crearla) -Reflexiona y luego marca los objetivos que has llegado a entender y aplicar en tu proyecto. Piensa en eso al decidir tu estrategia de trabajo. +![](src/images/home.png) ### HTML - [ ] **Uso de HTML semántico** -
Links

- - * [HTML semántico](https://curriculum.laboratoria.la/es/topics/html/02-html5/02-semantic-html) - * [Semantics - MDN Web Docs Glossary](https://developer.mozilla.org/en-US/docs/Glossary/Semantics#Semantics_in_HTML) -

- -### CSS - -- [ ] **Uso de selectores de CSS** - -
Links

- - * [Intro a CSS](https://curriculum.laboratoria.la/es/topics/css/01-css/01-intro-css) - * [CSS Selectors - MDN](https://developer.mozilla.org/es/docs/Web/CSS/CSS_Selectors) -

- -- [ ] **Modelo de caja (box model): borde, margen, padding** - -
Links

- - * [Box Model & Display](https://curriculum.laboratoria.la/es/topics/css/01-css/02-boxmodel-and-display) - * [The box model - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model) - * [Introduction to the CSS box model - MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Box_Model/Introduction_to_the_CSS_box_model) - * [CSS display - MDN](https://developer.mozilla.org/pt-BR/docs/Web/CSS/display) - * [display - CSS Tricks](https://css-tricks.com/almanac/properties/d/display/) -

- -- [ ] **Uso de flexbox en CSS** - -
Links

- - * [A Complete Guide to Flexbox - CSS Tricks](https://css-tricks.com/snippets/css/a-guide-to-flexbox/) - * [Flexbox Froggy](https://flexboxfroggy.com/#es) - * [Flexbox - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox) -

- -- [ ] **Uso de CSS Grid Layout** - -
Links

- - * [A Complete Guide to Grid - CSS Tricks](https://css-tricks.com/snippets/css/complete-guide-grid/) - * [Grids - MDN](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Grids) -

- -### Web APIs - -- [ ] **Uso de selectores del DOM** - -
Links

- - * [Manipulación del DOM](https://curriculum.laboratoria.la/es/topics/browser/02-dom/03-1-dom-methods-selection) - * [Introducción al DOM - MDN](https://developer.mozilla.org/es/docs/Web/API/Document_Object_Model/Introduction) - * [Localizando elementos DOM usando selectores - MDN](https://developer.mozilla.org/es/docs/Web/API/Document_object_model/Locating_DOM_elements_using_selectors) -

- -- [ ] **Manejo de eventos del DOM (listeners, propagación, delegación)** - -
Links

- - * [Introducción a eventos - MDN](https://developer.mozilla.org/es/docs/Learn/JavaScript/Building_blocks/Events) - * [EventTarget.addEventListener() - MDN](https://developer.mozilla.org/es/docs/Web/API/EventTarget/addEventListener) - * [EventTarget.removeEventListener() - MDN](https://developer.mozilla.org/es/docs/Web/API/EventTarget/removeEventListener) - * [El objeto Event](https://developer.mozilla.org/es/docs/Web/API/Event) -

- -- [ ] **Manipulación dinámica del DOM** - -
Links

- - * [Introducción al DOM](https://developer.mozilla.org/es/docs/Web/API/Document_Object_Model/Introduction) - * [Node.appendChild() - MDN](https://developer.mozilla.org/es/docs/Web/API/Node/appendChild) - * [Document.createElement() - MDN](https://developer.mozilla.org/es/docs/Web/API/Document/createElement) - * [Document.createTextNode()](https://developer.mozilla.org/es/docs/Web/API/Document/createTextNode) - * [Element.innerHTML - MDN](https://developer.mozilla.org/es/docs/Web/API/Element/innerHTML) - * [Node.textContent - MDN](https://developer.mozilla.org/es/docs/Web/API/Node/textContent) -

- -- [ ] **Ruteado (History API, evento hashchange, window.location)** - -
Links

- - * [Manipulando el historial del navegador - MDN](https://developer.mozilla.org/es/docs/DOM/Manipulando_el_historial_del_navegador) -

- -### JavaScript - -- [ ] **Arrays (arreglos)** - -
Links

- - * [Arreglos](https://curriculum.laboratoria.la/es/topics/javascript/04-arrays) - * [Array - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/) - * [Array.prototype.sort() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) - * [Array.prototype.forEach() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach) - * [Array.prototype.map() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/map) - * [Array.prototype.filter() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) - * [Array.prototype.reduce() - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce) -

- -- [ ] **Objetos (key, value)** - -
Links

- - * [Objetos en JavaScript](https://curriculum.laboratoria.la/es/topics/javascript/05-objects/01-objects) -

- -- [ ] **Diferenciar entre tipos de datos primitivos y no primitivos** - -- [ ] **Variables (declaración, asignación, ámbito)** - -
Links

- - * [Valores, tipos de datos y operadores](https://curriculum.laboratoria.la/es/topics/javascript/01-basics/01-values-variables-and-types) - * [Variables](https://curriculum.laboratoria.la/es/topics/javascript/01-basics/02-variables) -

- -- [ ] **Uso de condicionales (if-else, switch, operador ternario, lógica booleana)** - -
Links

- - * [Estructuras condicionales y repetitivas](https://curriculum.laboratoria.la/es/topics/javascript/02-flow-control/01-conditionals-and-loops) - * [Tomando decisiones en tu código — condicionales - MDN](https://developer.mozilla.org/es/docs/Learn/JavaScript/Building_blocks/conditionals) -

- -- [ ] **Uso de bucles/ciclos (while, for, for..of)** - -
Links

- - * [Bucles (Loops)](https://curriculum.laboratoria.la/es/topics/javascript/02-flow-control/02-loops) - * [Bucles e iteración - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Loops_and_iteration) -

- -- [ ] **Funciones (params, args, return)** - -
Links

- - * [Funciones (control de flujo)](https://curriculum.laboratoria.la/es/topics/javascript/02-flow-control/03-functions) - * [Funciones clásicas](https://curriculum.laboratoria.la/es/topics/javascript/03-functions/01-classic) - * [Arrow Functions](https://curriculum.laboratoria.la/es/topics/javascript/03-functions/02-arrow) - * [Funciones — bloques de código reutilizables - MDN](https://developer.mozilla.org/es/docs/Learn/JavaScript/Building_blocks/Functions) -

- -- [ ] **Pruebas unitarias (unit tests)** - -
Links

- - * [Empezando con Jest - Documentación oficial](https://jestjs.io/docs/es-ES/getting-started) -

- -- [ ] **Pruebas asíncronas** - -
Links

- - * [Tests de código asincrónico con Jest - Documentación oficial](https://jestjs.io/docs/es-ES/asynchronous) -

- -- [ ] **Uso de mocks y espías** - -
Links

- - * [Manual Mocks con Jest - Documentación oficial](https://jestjs.io/docs/es-ES/manual-mocks) -

- -- [ ] **Módulos de ECMAScript (ES Modules)** - -
Links

- - * [import - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/import) - * [export - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Statements/export) -

- -- [ ] **Uso de linter (ESLINT)** - -- [ ] **Uso de identificadores descriptivos (Nomenclatura y Semántica)** - -- [ ] **Diferenciar entre expresiones (expressions) y sentencias (statements)** - -- [ ] **Callbacks** - -
Links

- - * [Función Callback - MDN](https://developer.mozilla.org/es/docs/Glossary/Callback_function) -

- -- [ ] **Promesas** - -
Links

- - * [Promise - MDN](https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/Promise) - * [How to Write a JavaScript Promise - freecodecamp (en inglés)](https://www.freecodecamp.org/news/how-to-write-a-javascript-promise-4ed8d44292b8/) -

- -### Control de Versiones (Git y GitHub) - -- [ ] **Git: Instalación y configuración** - -- [ ] **Git: Control de versiones con git (init, clone, add, commit, status, push, pull, remote)** - -- [ ] **Git: Integración de cambios entre ramas (branch, checkout, fetch, merge, reset, rebase, tag)** - -- [ ] **GitHub: Creación de cuenta y repos, configuración de llaves SSH** - -- [ ] **GitHub: Despliegue con GitHub Pages** - -
Links

- - * [Sitio oficial de GitHub Pages](https://pages.github.com/) -

- -- [ ] **GitHub: Colaboración en Github (branches | forks | pull requests | code review | tags)** - -- [ ] **GitHub: Organización en Github (projects | issues | labels | milestones | releases)** - -### Centrado en el usuario - -- [ ] **Diseñar y desarrollar un producto o servicio poniendo a las usuarias en el centro** - -### Diseño de producto - -- [ ] **Crear prototipos de alta fidelidad que incluyan interacciones** - -- [ ] **Seguir los principios básicos de diseño visual** - -### Investigación - -- [ ] **Planear y ejecutar testeos de usabilidad de prototipos en distintos niveles de fidelidad** - -
Links

- - * [Intro a testeos usabilidad](https://coda.io/@bootcamp-laboratoria/contenido-ux/test-de-usabilidad-15) - * [Pruebas con Usuarios 1 — ¿Qué, cuándo y para qué testeamos?](https://eugeniacasabona.medium.com/pruebas-con-usuarios-1-qu%C3%A9-cu%C3%A1ndo-y-para-qu%C3%A9-testeamos-7c3a89b4b5e7) -

- -### Firebase - -- [ ] **Firebase Auth** - -
Links

- - * [Primeros pasos con Firebase Authentication en sitios web - Documentación oficial](https://firebase.google.com/docs/auth/web/start?hl=es) - * [Administra usuarios en Firebase (onAuthStateChanged)](https://firebase.google.com/docs/auth/web/manage-users?hl=es#get_the_currently_signed-in_user) -

- -- [ ] **Firestore** - -
Links

- - * [Firestore - Documentación oficial](https://firebase.google.com/docs/firestore?hl=es) - * [Reglas de seguridad de Firestore - Documentación oficial](https://firebase.google.com/docs/rules?hl=es) - * [Obtén actualizaciones en tiempo real con Cloud Firestore - Documentación oficial](https://firebase.google.com/docs/firestore/query-data/listen?hl=es) -

- -## 4. Consideraciones generales - -* Este proyecto se debe trabajar en equipos de tres. - -* El rango de tiempo estimado para completar el proyecto es de 4 a 5 Sprints. - -* La lógica del proyecto debe estar implementada completamente en JavaScript - (ES6+), HTML y CSS :smiley:. Para este proyecto **no está permitido** utilizar - _frameworks_ o librerías de CSS y JS. - -* La división y organización del trabajo debe permitir, sin excepciones, que - **cada integrante** del equipo practique el aprendizaje de todo lo involucrado - en **cada historia**. _No se dividan el trabajo como en una fábrica._ - - ¿Hasta acá has avanzado en tus proyectos con cierta fluidez y sin mayores - problemas? Sé generosa con tus compañeras, permíteles aprender y practicar - sin restricciones, aunque tome un poco más de tiempo. Aproveha de - _coachearlas_, de hacer _pair programming_, una de las mejores maneras de - aprender es explicando verbalmente. - - - ¿Se te está haciendo difícil y te cuesta un poco más avanzar? No te quedes - con las partes "fáciles" del proyecto, conversa, negocia, exige tu oportunidad - para practicar y aprender lo que se te hace más difícil. - -* Solamente pueden trabajar en una única historia por vez, no pueden avanzar a - la siguiente sin haber completado la anterior. La historia se completa cuando - se cumplen **todos** sus Criterios de Aceptación + **toda** su Definición - de Terminado. - -Para comenzar tendrás que hacer un _fork_ y _clonar_ este repositorio. - -## 5. Criterios de aceptación mínimos del proyecto - -### 5.1 Boilerplate - -Este proyecto no incluye un _boilerplate_ completo, solo algunos archivos de -configuración basico, así es que tendrás que definir la estructura de carpetas -y escribir tus propias Pruebas Unitarias (_tests_). Para hacerlo, puedes guiarte -de los proyectos anteriores y/o organizar los archivos siguiendo una estructura -de [Modelo-Vista-Controlador](https://developer.mozilla.org/es/docs/Glossary/MVC). - -En este proyecto vamos a usar una herramienta llamada -[Vite](https://es.vitejs.dev/) para empaquetar nuestros módulos y arrancar -el servidor de desarrollo, el cual provee nuestros archivos utilizando -la estrategia `Hot Module Replacement` -[(HMR)](https://es.vitejs.dev/guide/features.html#hot-module-replacement), -esto significa que cuando hagas cambios en los archivos que estén siendo -servidos, el navegador automáticamente se actualizará sin tener que refrescar -y volver a cargar todo el sitio. Debes tener especial cuidado de no tener -ninguna _dependencia circular_ en tu código ya que -[eso puede ocasionar problemas con HMR](https://es.vitejs.dev/guide/troubleshooting.html#ocurre-un-refresco-completo-en-lugar-de-hmr). -(`eslint-plugin-import` tiene una regla -[import/no-cycle](https://github.com/import-js/eslint-plugin-import/blob/main/docs/rules/no-cycle.md) -que va a avisar si las tiene.) - -### 5.2 Definición del producto - -En el `README.md` cuéntanos brevemente cómo descubriste las necesidades de los -usuarios y cómo llegaste a la definición final de tu producto. Es importante -que detalles: - -* Quiénes son los principales usuarios de producto. -* Qué problema resuelve el producto / para qué le servirá a estos usuarios. - -### 5.3 Historias de usuario - -Una vez que entiendas las necesidades de tus usuarixs, escribe las Historias de -Usuario que representen todo lo que necesitan hacer/ver en la Red Social. Cada -una de tus Historias de Usuario debe tener: - -* **Criterios de Aceptación:** todo lo que debe ocurrir para satisfacer las - necesidades del usuario. - -* **Definición de terminado:** todos los aspectos técnicos que deben cumplirse - para que, como equipo, sepan que esa historia está terminada y lista - para publicarse. **Todas** tus Historias de Usuario (salvo excepciones), deben - incluir estos aspectos en su Definición de Terminado (más todo lo que - necesiten agregar): - - - Debe ser una SPA. - - Debe ser _responsive_. - - Deben haber recibido _code review_ de al menos una compañera de otro equipo. - - Hicieron los _test_ unitarios - - Testearon manualmente buscando errores e imperfecciones simples. - - Hicieron _pruebas_ de usabilidad e incorporaron el _feedback_ de los - usuarios como mejoras. - - Desplegaron su aplicación y etiquetaron la versión (git tag). - -### 5.4 Diseño de la Interfaz de Usuario (prototipo de baja fidelidad) - -Debes definir cuál será el flujo que seguirá el usuario dentro de tu aplicación -y, con eso, diseña la Interfaz de Usuario (UI por sus siglas en inglés) que -siga este flujo. - -### 5.5 Responsive - -Debe verse bien en dispositivos de pantallas grandes -(computadoras/es, laptops, etc.) y pequeñas (_tablets_, celulares, etc.). Te -sugerimos seguir la técnica de _`mobile first`_ (más detalles sobre esta técnica -al final). - -### 5.6 Consideraciones del comportamiento de la interfaz de usuario (UI) - -Estas consideraciones te ayudarán a escribir las Definiciones de Terminado de -tus H.U.: - -#### Creación de cuenta de usuario e inicio de sesión - -* _Login_ con Firebase: - - Para el _login_ y las publicaciones en el muro puedes utilizar [Firebase](https://firebase.google.com/products/database/) - - Creación de cuenta de acceso y autenticación con cuenta de correo y - contraseña, y también con una cuenta de Google. -* Validaciones: - - Solamente se permite el acceso a usuarios con cuentas válidas. - - No pueden haber usuarios repetidos. - - La cuenta de usuario debe ser un correo electrónico válido. - - Lo que se escriba en el campo (_input_) de contraseña debe ser secreto. -* Comportamiento: - - Al enviarse el formulario de registro o inicio de sesión, debe validarse. - - Si hay errores, se deben mostrar mensajes descriptivos para ayudar al - usuario a corregirlos. - -#### Muro/timeline - -* Validaciones: - - Al publicar, se debe validar que exista contenido en el _input_. -* Comportamiento: - - Al recargar la aplicación, se debe verificar si el usuario está _logueado_ - antes de mostrar contenido. - - Poder publicar un _post_. - - Poder dar y quitar _like_ a una publicación. Máximo uno por usuario. - - Llevar un conteo de los _likes_. - - Poder eliminar un post específico. - - Pedir confirmación antes de eliminar un _post_. - - Al dar _click_ para editar un _post_, debe cambiar el texto por un _input_ - que permita editar el texto y luego guardar los cambios. - - Al guardar los cambios debe cambiar de vuelta a un texto normal pero con la - información editada. - - Al recargar la página debo de poder ver los textos editados. - -### 5.7 Consideraciones técnicas Front-end - -* Separar la manipulación del DOM de la lógica (Separación de responsabilidades). -* Contar con múltiples vistas. Para esto, tu aplicación debe ser una - [Single Page Application (SPA)](https://es.wikipedia.org/wiki/Single-page_application) -* Alterar y persistir datos. Los datos que agregues o modifiques deberán - persistir a lo largo de la aplicación. Te recomendamos que uses - [Firebase](https://firebase.google.com/) para eso también. - -#### Pruebas unitarias (unit tests) - -* Recuerda que no hay un _setup_ de **tests** definido, dependerá de - la estructura de tu proyecto. Algo que no debes de olvidar es pensar en éstas - pruebas, te pueden ayudar a definir la estructura y nomenclatura de tu lógica. - -* Los tests unitarios deben cubrir un mínimo del 70% de _statements_, _functions_, - _lines_, y _branches_. - -### 5.8 Consideraciones técnicas UX - -* Hacer al menos 2 entrevistas con usuarios. -* Hacer un prototipo de baja fidelidad. -* Asegurarte de que la implementación en código siga los lineamientos del - diseño. -* Hacer sesiones de _testing de usabilidad_ con el producto en HTML. - -## 6. Hacker edition - -Las secciones llamadas _Hacker Edition_ son **opcionales**. Si **terminaste** -con todo lo anterior y te queda tiempo, intenta completarlas. Así podrás -profundizar y/o ejercitar más sobre los objetivos de aprendizaje del proyecto. - -* Permite crear posts con imágenes. -* Permite buscar usuarios, agregar y eliminar "amigos". -* Permite definir la privacidad de los _posts_ (público o solamente para amigos). -* Permite ver su muro de cualquier usuario "no-amigo" (solamente los - posts _públicos_). -* Permite comentar o responder una publicación. -* Permite editar perfil. - -## 7. Entrega - -El proyecto será _entregado_ subiendo tu código a GitHub (`commit`/`push`) y la -interfaz será desplegada usando GitHub pages u otro servicio de hosting -(Firebase, Netlify, Vercel, etc) que puedas haber encontrado en el camino. -Revisa la [documentación de Vite](https://vitejs.dev/guide/static-deploy.html) -para guiarte con eso. - -*** - -## 8. Pistas, tips y Lecturas complementarias - -### Mobile first - -El concepto de [_mobile first_](https://www.mediaclick.es/blog/diseno-web-responsive-design-y-la-importancia-del-mobile-first/) -hace referencia a un proceso de diseño y desarrollo donde partimos de cómo se ve -y cómo funciona la aplicación en un dispositivo móvil primero, y más adelante se -ve como adaptar la aplicación a pantallas progresivamente grandes y -características específicas del entorno desktop. Esto es en contraposición al -modelo tradicional, donde primero se diseñaban los websites (o webapps) para -desktop y después se trataba de _arrugar_ el diseño para que entre en pantallas -más chicas. La clave acá es asegurarse de que desde el principio diseñan usando -la vista _responsive_ de las herramientas de desarrollador (developer tools) del -navegador. De esa forma, partimos de cómo se ve y comporta la aplicación en una -pantalla y entorno móvil. - -### Múltiples vistas +## 4. Pantalla Sign In -En proyectos anteriores nuestras aplicaciones habían estado compuestas de una -sola _vista_ principal (una sóla _página_). En este proyecto se introduce la -necesidad de tener que dividir nuestra interfaz en varias _vistas_ o _páginas_ -y ofrecer una manera de navegar entre estas vistas. Este problema se puede -afrontar de muchas maneras: con archivos HTML independientes (cada uno con su -URL) y links tradicionales, manteniendo estado en memoria y rederizando -condicionalmente (sin refrescar la página), [manipulando el historial del -navegador](https://developer.mozilla.org/es/docs/DOM/Manipulando_el_historial_del_navegador) -con [`window.history`](https://developer.mozilla.org/es/docs/Web/API/Window/history). -En este proyecto te invitamos a explorar opciones y decidir una opción -de implementación. +En esta sección podemos ingresar a la página con el usuario y contraseña que previamente creamos. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, podemos irnos a crear una cuenta si así lo deseamos. -### Escritura de datos +![](src/images/signin.png) + +## 5. Pantalla Create Account -En los proyectos anteriores hemos consumido (leído) datos, pero todavía no -habíamos escrito datos (salvar cambios, crear datos, borrar, ...). En este -proyecto tendrás que crear (salvar) nuevos datos, así como leer, actualizar y -modificar datos existentes. Estos datos se podrán guardar de forma remota -usando [Firebase](https://firebase.google.com/). +En esta sección podemos ingresar a la página creando un usuario. Los datos que son solicitados son: nombre, correo electrónico y contraseña. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, también podemos ingresar si ya tenemos usuario creado, en la parte final aparece un enlace que dice: Sign In. -Para usar Firebase hay que crear un proyecto en la consola de Firebase e -instalar la dependencia `firebase` utilizando `npm`. -Lee [las instrucciones paso a paso aqui](https://firebase.google.com/docs/web/setup). +![](src/images/createacc.png) + +## 6. Pantalla de Muro -Otras: +En esta sección podemos crear un post acerca de una rutina rápida que deseemos compartir. También podemos ver los comentarios existentes de los demás usuarios que pertenecesn a la red social. Podemos dar likes a las publicaciones que sean de nuestro agrado. En este apartado, solamente quienes crearon la publicación, podrán tener habilitada la opción de editarla o eliminarla. Así como el "like" que hayan dado, sólo quien lo dio, podrá retirarlo en caso de que se haya arrepentido. -* [Modulos: Export](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/export) -* [Modulos: Import](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Sentencias/import) -* [Diseño web, responsive design y la importancia del mobile first - Media Click](https://www.mediaclick.es/blog/diseno-web-responsive-design-y-la-importancia-del-mobile-first/) -* [Mobile First: el enfoque actual del diseño web móvil - 1and1](https://www.1and1.es/digitalguide/paginas-web/diseno-web/mobile-first-la-nueva-tendencia-del-diseno-web/) -* [Mobile First - desarrolloweb.com](https://desarrolloweb.com/articulos/mobile-first-responsive.html) -* [Mobile First Is NOT Mobile Only - Nielsen Norman Group](https://www.nngroup.com/articles/mobile-first-not-mobile-only/) +![](src/images/wall.png) \ No newline at end of file diff --git a/src/images/createacc.png b/src/images/createacc.png new file mode 100644 index 0000000000000000000000000000000000000000..6af57c28e0946accc394519cfed07e4b63e95ea7 GIT binary patch literal 26539 zcmZ^~bzED)+u(~7D8-6fahKu_!QI_mi@OFX?(Xhx#a&w5wRmusP&7zsH~sD1-S@qB z?;rUjXJ*c1=FEAX`93nys>(8GABaA{z`&r%$x5ojz`!!Vz`$X?hl7@63v5L}zhK?f zWyE0`WJq5B>YVjyYFZ!ob*w%1Mf8`WRp3 z+xXzfbXUCr|8BX@Nx@Y<2z+Ht?uCYIdwDZ8_G`a|)=>hxP6gd8I)QdGhmp*EmVb>>cvQ{dE zkDg}av@{={ez0nhx;f{-#7>`Q-6n8xN+rc|oxvD`bcF5KBPxl|O()b`{QRr4pK~r# zH~Z+5Ub=j-r<_bpxL!rRuUV3fyJE)6@4^}f?URM)mys_;E)ns*{U@1PDID>ZI2J_& zVvu*z>_R8rtv|sNhVS(vXM8@K!6Rsw>o-m`2MNqAGQWM(t3hal!LQ*#Y4M1>qEVZW zaOHc4OLkh2L@$lsi@~FxW1~x;YXfViwng52V~TQjyEHhbK^%L~Snbmz{SFC)jaq%| zw>x5dA;XC_tbjm#MasbU@&(hhg%5xs|bTbaX_QDBD$vWNp@`&arFCml$a{+1=5XFS#wJ!yM=i!vB zJ;zl{fE4>s*YE&}1rqSia>151OsKk%oGy<7L_m{{OmCM2o|62ufK65!KLoH@r)_hJ z8th_|;W<%H)8Hyz6C_As%#FXhX*D36sgac?a%ZRK@F&VabFS)XA-qa4{q8lr_o9%F z2Uq&2x{C(W?ECdKa%h?N%3hmztX3UqwYIe$W^jFq*@1`>mBx%o>lb130(ob1v%rxR zAroybW_EgHS+3Qi_|!_Cj8FQWQU*aeBj+ALV?65w5yDMhT~!FMYGoX!$rISIIoT#1 zRjNG>t#zo5;)%vGnV6?FzKiDWoV??2mv#1gRZdyAuuxX{OaC^_$>MMH`K(|cS0W4! zgdL%4o6C(EiY&iU+w!B-Z=dV8xlmb~1%ACjU*H#XE3oMzQWX^3e*UEWw@51cr;3iBRigR)hvrBSLBk#~Bm~4Jo|3ksV z;T@)fi21=o1;#YR>qfLXoY1`(fimUbLZ_5*%x46gPvD!|rkB9d-7t|LF9R8d>!yR* zEr4YHJX{=D0aSLxl-g$ma?vY+n-=38H0ozsN;MV$O6*k%@)IXNn1+-fiKyu-}*=PFI;1xotD--Gi5`q-L@8r@?MJX8p9xJ%pZ z`5=&Kj=sRE6qYlaew;Q&gBG~QmLj}k!h#)b1;1Y!`R1@7Y(%~5I_NCFP*ak_i`?tkmY2I_TzpF@)%q+&q=@jgzgSg} ztmKrF1vQW}T8y9C%zqRcyvX|jgDz=Zo#;Hi^!E?bbGul`ADhzaoWtVv)WmcWb_GE1 zc}%!o_sO<(_;+lRkFei6=?I#?XUEDAF|VBVPnw!#*xmUgTvuBYB;S76A-RDrH#$$= zYuV^#zaBr=kU{Kwlx{i#%O`Ko`==!-8NMB!uM{OS*DWlhcIwO{I!0#rHx?+!L+);& zTL0bxamt^}(o@}zGbs1>2I&sMNAJBpC7*s9LZKe7fUH_w_PRU zYsP12{R@#<0;dJPWHs+Hg*FrFr!1Ty?1N8t$)7}CN2?aq);n*esBfDP)^|03pTZdr za`FEXsN_2>L_xV|_8k@#xh0QQjMQmFeD;`ndDv!1QZlZ*0sK7wW7T%@{Wz<{>{C$= z9sy)H#L`1dO~7scjPmgnjTx#k)`fBcz@;_A6|UXi)LRHJH(dRVqL1uuKa~v~pEX=- zj{anMt87YsMe3$w*}oVC2{*L*amD`CJEmUwmvG=$Q722^W zv~f-GJ!>}gy4`0a>WfPv7@y#9H%DKj*xPk@*CYz(D~M#L#{N8y(=dpIH{8Iw3C*E> zKMKGm7vskN^z-W0Ec+pc`DH)ms3xv7X#57S^3kX$V_(HToA$K8mYmQa&aogS#fyKy z;L8BR=4Lx1ZIGq_Uu?&+628aWa8%)w`~L7lu1GQwJMui>9VQ}Fp34qa(}!AaAK7h} zzLlwsz_FHpw$r<)+IJeT&twbC*W9ej5O);HiNN-w#rlvz+S83#qNAPcVRcXs5= z1Y{>(JV;@FlzHdvjmYI*1!65uH>{To5pbRC$OwQl@JSJ9u zEt9|FTRKNQoL>$qeD1Y#4k-iP{#ez*JMQpG99?7{x_A``w@wz8eaaNr6**9fMMCWE zNE;t(q-(bmhtCP9KWF`;3%rRWnscrd!q7H)YJWLw|1snbtB&D5Zz9!&KktS_OW>W@ zkR9BCU&~E+B2s-Xpo@ld=J{>(HInF>%>M1_f<~u1W%Sq7Eri6w*%n5w>}u%`9nlr( z=c2&dggC}77eRojS%H_oee%#nxw3PH;1!E^V8{MpyFbb-FJ!P!!TWq$C*2UjyjmtW zU;w`N>Kd9|Z0V6VGm$BrJwP-*r{Xx2DeDpyYUP;%JR7=}^%_+CP~d=I_Re;_`zRsL zbs|#tjdHF#{Or@SJ_*|9LYFAM_wzT+6`=yQ{wz@^)TE#xYDXT76LlR)Swa`q!NzCf zEx{%lRy7H`h+rBs4+@U{xj+e61DIV>3is({e1yHDCb~QLe8J3fv*IWU0!Rjo+*0So zYr2e+dxKSmwPOZ$?XHOoa;$R)@SQl>7+|MD(52CS@jw*ef>hVT&A_<#&zK1oqP5{p zqj23{#a3eT45wFJr(fYbzm<0b;6Ob(hZZRPW1Gy{cQWabGa8;QtW6&wZsoS1UcVoQ z{*d1R;9EsFs z-QJDE%l3IYeWSqPP*5s=Wd~kiV1L;0sRn;{+i;(do*zbIfvR5a)sU|~ME&zL$JPL2 zW*O?R+8~^i2*Rtnf?JTL;%c_ehc&_jw5{BO9-E9na|w!1=hgK(DvqCpyQ=43FhMGk zNto4o8&W-pgq2v9)uIq^`nX~`h;!W`2tj#3li(AGL~jjWi{oQ}BU^>#;Aa2#bF-_c z`%&;Zpe`0zRCvVbwtmoFOh*0v6TGXlJLy~>baLp8@@>F6a@ukfbncQO{P%O`55mUI z4^dzlevE7**T7mvvyVai4rgKzFfswQG|htnK;FolBA*-gQ&h}CF4cFpB$Gy#f~~CGFKbcf0jxtzs64yC!X(>KGkz$i=%*He9}ud z*eC0f=p*I*rfGk-6-L>IoT3IPBSdsnv0LuzIg|!>o%PuKm2_PkOf$~Dxv(iRJ);;1rT*&zHn1`BPT%0B zYvMHIeybGRUT%&N(fjPJBzgot|`H z#&I@2y3X(shQfQs^Bv;im?;e@n#Y2G(xkpEKNYZ}7=-lQ={CS@86Y*m)`1!g><4(C zlXi80cZQkVIZ>~#i-G%ypdPxoP8)}Q{8QkVYhr)LEVQbd7SMkf*g*3(EbXDPTm*y+ zJN9_hoJULSavZEO)`(Y zJbq2tGCR2%>C@aCyG>i~)7g+tCH|RduN7_eb^^)N%W|(su+}l$Zcs`@WI=cH;3svz45t<7W-&m*XRN17(k%~6~a1Yo&t25IVw0U1OGaGdF=TG2VmHgKL!2 zZLE(wf)_V(+^BQR(+@8VuG5RA{sbhev$gNG4g$S1I=wgN7)rNtdrfx>LQahTwq5`` z-r_{>G>Pwod{;hB>va7`4R&xDk{Y=L4E%W6W8Q|JauPj{en7ZU%IPfj4T<@P1^VHA zolr10@fTffBYLLmrsjFA_*wU7?>mA#6twGRp!{`{vNWvo9-Bi@Au;Y!=zx~T-@%hM zW4hVoxw+dvxVzcEjT<7JMy4XUX-z2F3agA7LMRxsRKI<_$&Ct+_tbou~=JZ z7_pGMur8E=eYt>zHBT~4YGdjx>)|X}ATP`oDlzkl*4=S0`Ypxos}xI&^o&|dZDhRR z2^)GRK7kM20PG6q+4GF!U&JiEnsi_7Zw9Fz9>LyuRa@}zAfOBVsuXAG7T&U`1MP}*l`U=xIWA`v)p%O zMmPVcw?(MmBE@7VKG_yeV#x2RV7g5|f1**T@W8+=V2(>+PqUtYTsBrgUU+JYW(m@ zrD{miZPM3-D8n|zco9biA)kB=m?%vul%^qfUP`A!7Esa`JPWPg8+_9WqjZpfXjnfqrGdEw*CyL4G_7`J5c z36brpomlMby4QgBtBH169{!-mXBy_1r{%{)U)-q5^+@XpR@G_H+;f^3CdIRie~6$g zzoIBsk^^bTo%>Ft|5+QJ<+JK2k^dYl67QaboIaH7di70PO`vYxBzz0SC;yHmnK!Yk zSKZOEV8mC|qycpP+oCpB+;C&f{Ns#}NUeaK@jC=%fN}O(?d#)Lf78*6DcV@ALxYyX z*Mnt=?^Q=}rL~QtHV~-{MZP{&WL#1sqtgcqlrPdemjyk)Z0qBF8_M-6UJdFqwOY1C zTJ^K7h9Z(IY%{F77*m&#)3fkpM!X`d&;=bB1iLGKtqn;9v-EM)q^!L#tadOtPP^Al zyY=-u^lY)6ch+x=3T>_k{r&OhcCDEIkzDKv#XI)|a`^mne#e%0Asgx$C;|8ynqb!E2fPibQWbD`AsfDsVW@pAIxv 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 literal 0 HcmV?d00001 diff --git a/src/images/home.png b/src/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..0750d72b88acd3fe7c848dc0d069ba9d0f51be79 GIT binary patch literal 19682 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 T6NZ47Oze=Yv&|#i$%H=u0KZL% literal 0 HcmV?d00001 diff --git a/src/images/signin.png b/src/images/signin.png new file mode 100644 index 0000000000000000000000000000000000000000..847f6ae17a58c8b67980076819c8bd1277fbf2dc GIT binary patch literal 24575 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 Svw<$Ne^{8>Kr4(r@BJSF3(JuJ literal 0 HcmV?d00001 From 9f22adc239586cf0bf9f8a13423f1a2869128bf0 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Sun, 4 Jun 2023 18:28:14 -0600 Subject: [PATCH 46/51] Borrador de Readme parte 2 --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 01c1aad6..01bc7880 100644 --- a/README.md +++ b/README.md @@ -36,10 +36,6 @@ Esta es la pantalla inicial dónde podemos encontrar una breve descripción del ![](src/images/home.png) -### HTML - -- [ ] **Uso de HTML semántico** - ## 4. Pantalla Sign In En esta sección podemos ingresar a la página con el usuario y contraseña que previamente creamos. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, podemos irnos a crear una cuenta si así lo deseamos. From 159d6914a2e7033914e16985fc6c68bd570d9dad Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Sun, 4 Jun 2023 18:31:05 -0600 Subject: [PATCH 47/51] Borrador de Readme parte 3 --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 01bc7880..96aebc31 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,10 @@ * [1. Preámbulo](#1-preámbulo) * [2. Resumen del proyecto](#2-resumen-del-proyecto) -* [3. Objetivos de aprendizaje](#3-objetivos-de-aprendizaje) -* [4. Consideraciones generales](#4-consideraciones-generales) -* [5. Criterios de aceptación mínimos del proyecto](#5-criterios-de-aceptación-mínimos-del-proyecto) -* [6. Hacker edition](#6-hacker-edition) -* [7. Entrega](#7-entrega) -* [8. Pistas, tips y lecturas complementarias](#8-pistas-tips-y-lecturas-complementarias) +* [3. Pantalla Principal](#3-pantalla-principal) +* [4. Pantalla Sign In](#4-pantalla-sign-in) +* [5. Pantalla Create Account](#5-pantalla-create-account) +* [6. Pantalla de Muro](#6-pantalla-de-muro) ## 1. Preámbulo From d61ac81811eac9a0558e1604dd271f965133ab39 Mon Sep 17 00:00:00 2001 From: Clau2210 Date: Sun, 4 Jun 2023 18:32:09 -0600 Subject: [PATCH 48/51] Borrador de Readme parte 4 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 96aebc31..f311532f 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ En este proyecto construímos una red social dedicada a una comunidad que puede * Qué cada usuario cree una cuenta. * Comparta rutinas. * Revise tips del resto de los usuarios. -* Pueda dar likes cualquier publicación. +* Pueda dar likes a cualquier publicación. ## 3. Pantalla Principal From a3e2f256cc0fb502ebd3a1615851dd2fda37ac49 Mon Sep 17 00:00:00 2001 From: Tamarindo Date: Mon, 5 Jun 2023 10:38:55 -0400 Subject: [PATCH 49/51] readme --- README.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f311532f..5115b0f9 100644 --- a/README.md +++ b/README.md @@ -20,13 +20,18 @@ Hay redes sociales de todo tipo y para todo tipo de intereses. ## 2. Resumen del proyecto En este proyecto construímos una red social dedicada a una comunidad que puede crear, ver y compartir rutinas rápidas de ejercicio que pueden ser realizadas desde cualquier parte del mundo y en cualquier lugar, ya sea casa, jardín, parque o un centro deportivo. +Para realizarlo creamos un proyecto en Firebas y en este una colección para guardar los post de los usuarios. +Para dar inicio a este proyecto utilizamos Figma para crear los prototipos de baja y alta fidelidad, también utilizamos Trello para definir las historias de usuario y para organizar, planificar y distribuir las tareas para cada sprint. ### Los objetivos generales de este proyecto son los siguientes * Qué cada usuario cree una cuenta. +* Qué cada usuario pueda iniciar sesión. * Comparta rutinas. * Revise tips del resto de los usuarios. * Pueda dar likes a cualquier publicación. +* Pueda editar sus publicaciones. +* Pueda eliminar sus publicaciones. ## 3. Pantalla Principal @@ -36,18 +41,18 @@ Esta es la pantalla inicial dónde podemos encontrar una breve descripción del ## 4. Pantalla Sign In -En esta sección podemos ingresar a la página con el usuario y contraseña que previamente creamos. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, podemos irnos a crear una cuenta si así lo deseamos. +En esta sección, utilizando Firebase Authentication, podemos ingresar a la página con el usuario y contraseña que previamente creamos. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, podemos irnos a crear una cuenta si es que todavía no la hemos creado. ![](src/images/signin.png) ## 5. Pantalla Create Account -En esta sección podemos ingresar a la página creando un usuario. Los datos que son solicitados son: nombre, correo electrónico y contraseña. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, también podemos ingresar si ya tenemos usuario creado, en la parte final aparece un enlace que dice: Sign In. +En esta sección, nuevamente utilizando Firebase Authentication, podemos ingresar a la página creando un usuario. Los datos que son solicitados son: nombre, correo electrónico y contraseña. También nos da la opción de ingresar con nuestra cuenta de Google. Finalmente, mediante este sitio, también podemos ingresar si ya tenemos usuario creado; en la parte final aparece un enlace que dice: Sign In. ![](src/images/createacc.png) ## 6. Pantalla de Muro -En esta sección podemos crear un post acerca de una rutina rápida que deseemos compartir. También podemos ver los comentarios existentes de los demás usuarios que pertenecesn a la red social. Podemos dar likes a las publicaciones que sean de nuestro agrado. En este apartado, solamente quienes crearon la publicación, podrán tener habilitada la opción de editarla o eliminarla. Así como el "like" que hayan dado, sólo quien lo dio, podrá retirarlo en caso de que se haya arrepentido. +En esta sección, utilizando Firebase firestore, podemos crear un post acerca de una rutina rápida que deseemos compartir. También podemos ver los comentarios existentes de los demás usuarios que pertenecen a la red social. Podemos dar likes a las publicaciones que sean de nuestro agrado. En este apartado, solamente quienes crearon la publicación, podrán tener habilitada la opción de editarla o eliminarla. Así como el "like" que hayan dado, sólo quien lo dio, podrá retirarlo en caso de que se haya arrepentido. Además, para cuando el usuario lo desee, se agregó un botón para cerrar la sesión. Y por último esta pantalla está protegida, por lo que solo aquellos usuarios conectado pueden ver la pantalla Muro. ![](src/images/wall.png) \ No newline at end of file From 9ec1b59d568f865b2af124c8a46d3cabf6c873b3 Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 6 Jun 2023 08:33:04 -0500 Subject: [PATCH 50/51] firebase deploy --- .firebase/hosting.ZGlzdA.cache | 40 ++++++++ .firebase/hosting.cHVibGlj.cache | 1 + .firebaserc | 5 + .github/workflows/firebase-hosting-merge.yml | 20 ++++ .../firebase-hosting-pull-request.yml | 17 ++++ database.rules.json | 7 ++ firebase.json | 17 ++++ firestore.indexes.json | 4 + firestore.rules | 9 ++ {src => public}/images/Avatar.png | Bin {src => public}/images/Like.png | Bin {src => public}/images/Likes.png | Bin {src => public}/images/closeModal.png | Bin {src => public}/images/createacc.png | Bin {src => public}/images/delete.png | Bin {src => public}/images/edit.png | Bin {src => public}/images/home.png | Bin {src => public}/images/logoCompleto.png | Bin {src => public}/images/logoEasygym.png | Bin {src => public}/images/logoEasygymOnly.png | Bin {src => public}/images/logoGoogle.png | Bin {src => public}/images/logoNameEasygym.png | Bin {src => public}/images/logout.png | Bin {src => public}/images/logout2.png | Bin {src => public}/images/menuOptions.png | Bin {src => public}/images/signin.png | Bin {src => public}/images/wall.png | Bin public/index.html | 89 ++++++++++++++++++ src/index.html | 6 +- src/lib/functions.js | 2 +- src/pages/createAccount.js | 4 +- src/pages/home.js | 2 +- src/pages/signIn.js | 4 +- src/pages/wall.js | 22 ++--- 34 files changed, 228 insertions(+), 21 deletions(-) create mode 100644 .firebase/hosting.ZGlzdA.cache create mode 100644 .firebase/hosting.cHVibGlj.cache create mode 100644 .firebaserc create mode 100644 .github/workflows/firebase-hosting-merge.yml create mode 100644 .github/workflows/firebase-hosting-pull-request.yml create mode 100644 database.rules.json create mode 100644 firebase.json create mode 100644 firestore.indexes.json create mode 100644 firestore.rules rename {src => public}/images/Avatar.png (100%) rename {src => public}/images/Like.png (100%) rename {src => public}/images/Likes.png (100%) rename {src => public}/images/closeModal.png (100%) rename {src => public}/images/createacc.png (100%) rename {src => public}/images/delete.png (100%) rename {src => public}/images/edit.png (100%) rename {src => public}/images/home.png (100%) rename {src => public}/images/logoCompleto.png (100%) rename {src => public}/images/logoEasygym.png (100%) rename {src => public}/images/logoEasygymOnly.png (100%) rename {src => public}/images/logoGoogle.png (100%) rename {src => public}/images/logoNameEasygym.png (100%) rename {src => public}/images/logout.png (100%) rename {src => public}/images/logout2.png (100%) rename {src => public}/images/menuOptions.png (100%) rename {src => public}/images/signin.png (100%) rename {src => public}/images/wall.png (100%) create mode 100644 public/index.html diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache new file mode 100644 index 00000000..c31c09f2 --- /dev/null +++ b/.firebase/hosting.ZGlzdA.cache @@ -0,0 +1,40 @@ +404.html,1685981902332,05cbc6f94d7a69ce2e29646eab13be2c884e61ba93e3094df5028866876d18b3 +assets/index.0228c706.js,1685988749718,a87ccf50f6f805c1c02611273b6b142f6cc1edca0382952da8724d11b428dc8b +assets/index.3ad72261.js,1685993895689,f2374ade5cf43868e879e2ede52a4723ec2b70d137aba786edf58ae0c9717b53 +assets/index.4894615e.js,1685983941763,2e56184e1236bed80a28d86331884f14f342a09046b05c76b897a8962ec8a84e +assets/index.5b40586e.js,1685984218502,8c2f38dede2376becd398a4798b80c827e9c7a10449c9e0f9d712ef16da43a5a +assets/index.7473aa66.js,1685982961343,c70e7b923e05b99a46ad392d1c65e39a7c80127c0947e45dcc73316f6dec914b +assets/index.8581d718.js,1685983794746,ee99d3d05b32cb9a850e2698758aaa23711ba1f5410cb7e30e8da37288ccc122 +assets/index.887910e3.js,1685983499655,1aeae7cda75ff1e3bf56cb0a5f074820e2545d9d9f515376810d1d20741eae02 +assets/index.89d7b3f8.js,1685994184383,fab01136f5c0bf3ecc244af49d9939554dad062d3a7a8c165722f4b2d909d4e1 +assets/index.8a8ecbbe.js,1685993208274,9448d5ec413b66c6b15f0668fd665557661709a423da20f184b5ad2005087b19 +assets/index.95ec0159.js,1685993789210,2bd209a673010d779ed7d60552148146e6734ccece6b9f129294b4d5adb4ba08 +assets/index.ad52540f.js,1685989292413,6acde7faa20dcad2c72ea2af0d774db16bbd7dc517a54b9999f49eb9906d361a +assets/index.bab315a4.js,1685984477796,e6690e3b9ccc361ce63db9440a771f1bf2703d9a805c9ac9d23dc257edf8a7b5 +assets/index.cba7cce5.js,1685984098138,be6e92062a129afcc8aaf7bb59bd26eb3017d500640ae65a86efb80a32d1634c +assets/index.d173e84e.js,1685985472572,e6441051576dd867368c8d4af0471f34afc39cdb8cc16075f2c6ce4717bd0123 +assets/index.d8a39a69.js,1685981191140,89ba17138465dfef8cc4294923987ed085b77c075511dc1f11d01a2abbbc35ef +assets/index.ee9b7827.js,1685983867622,fd97b8456dc60902e4ba7322a0814b87bd66deaa80417f41cd8611ffdda30b5f +assets/index.f07bfc0e.js,1685982573798,77dca1d21ede1793250cdce16b65303a681da9dd21254af350975300ce269194 +assets/index.f79b7006.js,1685982750457,bc8f7a5527580fd3982e754b13df6d90b18ebf2eb9c9cef95cbf59baa21503c5 +images/Avatar.png,1685994149226,2306b7c2e69c3b031f09412a04c7dd0248b3243d1195baa2a9e919e1e52cd437 +images/Like.png,1685994149228,4047ec9a7978ed344cd8b98371e97a530eac6b5adcbc8d7c6b607ce1a7d89c3b +images/Likes.png,1685994149228,c05765a83b2002564569857102a720f4825e4db3350d7312b073c84fa3517059 +images/closeModal.png,1685994149229,137e67ae1813d4cb5c289a8c12168fc04e8ed35f0263a9a01432e88c0e0303db +images/createacc.png,1685994149230,fb89c5336963105cca30db76261537e9253a1d3055d5cb0b5ceed10ada196c7a +images/delete.png,1685994149230,7c162b036dba38a1f2605596d7571266534117062c228d8fce6a7e9c5cc9fbca +images/edit.png,1685994149230,3c8a731521c287c4457ab4a195bbc386d36fec89f348716d2ea675136a8aca93 +images/home.png,1685994149231,d5c4a0e4b578e380596984e248ab4ff7292c01c09fdacb9648e86464a8a074a9 +images/logoCompleto.png,1685994149232,01d30e9b98e31990500e66e51d4e90340a3834ebc6ac3703b4d853b34b5d2096 +images/logoEasygym.png,1685994149233,5dd2496aba58b827741cc08629dd8e191c2750685d9c691b7f7616bb123f19e7 +images/logoEasygymOnly.png,1685994149234,e428af64427326ca14985696d147e78593568d1897bfba5cab3e307d50246472 +images/logoGoogle.png,1685994149235,0bfb24f605e9a4aeafab4df2e14942744ab7b1153e7e228731a8245967e3cc40 +images/logoNameEasygym.png,1685994149236,4025c6cf57f628ebffd1c0d1aef9cd97823b64e9da3cc14d803977e6c5ba0858 +images/logout.png,1685994149236,714de0db9f8bc9b68cac053a90f60586756cd92bf4cacd5141a29d4d9e2e4018 +images/logout2.png,1685994149237,6b910d1d3f546cb30524a216cbc511d840c61b49b18c03de4c14cb92a2d9ebc1 +images/menuOptions.png,1685994149238,b8a45cdb084d3134c944dd7e7823c45dd30d1ee13090f0b8e621941ce3e2c0c3 +images/signin.png,1685994149242,66f8dd7afeefc18109c30240839fbb67ccc33c9deeca07783d8f7738795dd278 +images/wall.png,1685994149242,d4ab9de5a1252c522897a23b1e892ac7b3bd43a12556f0937383d6a8746d2726 +assets/index.a91b78aa.css,1685994479113,3f55dd2b1bb7d1005a13f40a46e66ae6f77e9205634c00d33b378fdddde4acfc +index.html,1685994479112,0fc073f0f6131a6645364ea7da2938d1dbf644a3cfbc6f16aa83c7f08e373ec6 +assets/index.3ff87eb7.js,1685994479113,23d47de3c4df5a86b6aa946574d5ebddbbdb30aa5cc5fd9266f3dd0860b57e6b diff --git a/.firebase/hosting.cHVibGlj.cache b/.firebase/hosting.cHVibGlj.cache new file mode 100644 index 00000000..b99a5e0d --- /dev/null +++ b/.firebase/hosting.cHVibGlj.cache @@ -0,0 +1 @@ +index.html,1685980088686,eee70fc660fc5325efe8e1846f70391119a17f9125ce9aaadd0d76e61c51a013 diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 00000000..66fdde88 --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "default": "easygym-sn-d107b" + } +} diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml new file mode 100644 index 00000000..ca25f7b3 --- /dev/null +++ b/.github/workflows/firebase-hosting-merge.yml @@ -0,0 +1,20 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on merge +'on': + push: + branches: + - main +jobs: + build_and_deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: npm ci && npm run build + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_EASYGYM_SN_D107B }}' + channelId: live + projectId: easygym-sn-d107b diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml new file mode 100644 index 00000000..d4882137 --- /dev/null +++ b/.github/workflows/firebase-hosting-pull-request.yml @@ -0,0 +1,17 @@ +# This file was auto-generated by the Firebase CLI +# https://github.com/firebase/firebase-tools + +name: Deploy to Firebase Hosting on PR +'on': pull_request +jobs: + build_and_preview: + if: '${{ github.event.pull_request.head.repo.full_name == github.repository }}' + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - run: npm ci && npm run build + - uses: FirebaseExtended/action-hosting-deploy@v0 + with: + repoToken: '${{ secrets.GITHUB_TOKEN }}' + firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_EASYGYM_SN_D107B }}' + projectId: easygym-sn-d107b diff --git a/database.rules.json b/database.rules.json new file mode 100644 index 00000000..f54493db --- /dev/null +++ b/database.rules.json @@ -0,0 +1,7 @@ +{ + /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */ + "rules": { + ".read": false, + ".write": false + } +} \ No newline at end of file diff --git a/firebase.json b/firebase.json new file mode 100644 index 00000000..3e1dac0e --- /dev/null +++ b/firebase.json @@ -0,0 +1,17 @@ +{ + "database": { + "rules": "database.rules.json" + }, + "firestore": { + "rules": "firestore.rules", + "indexes": "firestore.indexes.json" + }, + "hosting": { + "public": "dist", + "ignore": [ + "firebase.json", + "**/.*", + "**/node_modules/**" + ] + } +} diff --git a/firestore.indexes.json b/firestore.indexes.json new file mode 100644 index 00000000..415027e5 --- /dev/null +++ b/firestore.indexes.json @@ -0,0 +1,4 @@ +{ + "indexes": [], + "fieldOverrides": [] +} diff --git a/firestore.rules b/firestore.rules new file mode 100644 index 00000000..47f46702 --- /dev/null +++ b/firestore.rules @@ -0,0 +1,9 @@ +rules_version = '2'; +service cloud.firestore { + match /databases/{database}/documents { + match /{document=**} { + allow read, write: if + request.time < timestamp.date(2028, 6, 6); + } + } +} \ No newline at end of file diff --git a/src/images/Avatar.png b/public/images/Avatar.png similarity index 100% rename from src/images/Avatar.png rename to public/images/Avatar.png diff --git a/src/images/Like.png b/public/images/Like.png similarity index 100% rename from src/images/Like.png rename to public/images/Like.png diff --git a/src/images/Likes.png b/public/images/Likes.png similarity index 100% rename from src/images/Likes.png rename to public/images/Likes.png diff --git a/src/images/closeModal.png b/public/images/closeModal.png similarity index 100% rename from src/images/closeModal.png rename to public/images/closeModal.png diff --git a/src/images/createacc.png b/public/images/createacc.png similarity index 100% rename from src/images/createacc.png rename to public/images/createacc.png diff --git a/src/images/delete.png b/public/images/delete.png similarity index 100% rename from src/images/delete.png rename to public/images/delete.png diff --git a/src/images/edit.png b/public/images/edit.png similarity index 100% rename from src/images/edit.png rename to public/images/edit.png diff --git a/src/images/home.png b/public/images/home.png similarity index 100% rename from src/images/home.png rename to public/images/home.png diff --git a/src/images/logoCompleto.png b/public/images/logoCompleto.png similarity index 100% rename from src/images/logoCompleto.png rename to public/images/logoCompleto.png diff --git a/src/images/logoEasygym.png b/public/images/logoEasygym.png similarity index 100% rename from src/images/logoEasygym.png rename to public/images/logoEasygym.png diff --git a/src/images/logoEasygymOnly.png b/public/images/logoEasygymOnly.png similarity index 100% rename from src/images/logoEasygymOnly.png rename to public/images/logoEasygymOnly.png diff --git a/src/images/logoGoogle.png b/public/images/logoGoogle.png similarity index 100% rename from src/images/logoGoogle.png rename to public/images/logoGoogle.png diff --git a/src/images/logoNameEasygym.png b/public/images/logoNameEasygym.png similarity index 100% rename from src/images/logoNameEasygym.png rename to public/images/logoNameEasygym.png diff --git a/src/images/logout.png b/public/images/logout.png similarity index 100% rename from src/images/logout.png rename to public/images/logout.png diff --git a/src/images/logout2.png b/public/images/logout2.png similarity index 100% rename from src/images/logout2.png rename to public/images/logout2.png diff --git a/src/images/menuOptions.png b/public/images/menuOptions.png similarity index 100% rename from src/images/menuOptions.png rename to public/images/menuOptions.png diff --git a/src/images/signin.png b/public/images/signin.png similarity index 100% rename from src/images/signin.png rename to public/images/signin.png diff --git a/src/images/wall.png b/public/images/wall.png similarity index 100% rename from src/images/wall.png rename to public/images/wall.png diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..ad41d9d4 --- /dev/null +++ b/public/index.html @@ -0,0 +1,89 @@ + + + + + + Welcome to Firebase Hosting + + + + + + + + + + + + + + + + + + + +

+

Firebase SDK Loading…

+ + + + diff --git a/src/index.html b/src/index.html index 29d1f9b9..aafdaeb4 100644 --- a/src/index.html +++ b/src/index.html @@ -12,9 +12,9 @@
- - - + + + diff --git a/src/lib/functions.js b/src/lib/functions.js index 451b6b29..b1263314 100644 --- a/src/lib/functions.js +++ b/src/lib/functions.js @@ -22,7 +22,7 @@ import { export const timeStamp = serverTimestamp; const orderedQuery = query(colRef, orderBy('fecha', 'asc'));// Consulta la colección y la ordena los posts por su fecha/hora de publicación// Consulta la colección y la ordena los posts por su fecha/hora de publicación -//const orderedQuery = query(colRef); +// const orderedQuery = query(colRef); export const getPost = (callback) => onSnapshot(orderedQuery, callback); // export function login(email, password) { // const auth1 = getAuth(app); diff --git a/src/pages/createAccount.js b/src/pages/createAccount.js index 212b97e7..2ab8907a 100644 --- a/src/pages/createAccount.js +++ b/src/pages/createAccount.js @@ -25,11 +25,11 @@ export function createAccount(navigateTo) { const or = document.createElement('p'); const continueWithGoogleButton = document.createElement('button'); const logoGoogle = document.createElement('img'); - logoGoogle.src = './images/logoGoogle.png'; + logoGoogle.src = '/images/logoGoogle.png'; // Establecer atributos y contenido container.classList.add('container'); - logo.setAttribute('src', './images/logoNameEasygym.png'); + logo.setAttribute('src', '/images/logoNameEasygym.png'); nameLabel.textContent = 'Name'; nameInput.classList.add('insertInfo'); nameInput.setAttribute('placeholder', 'My name'); diff --git a/src/pages/home.js b/src/pages/home.js index 208d5576..b77c3edf 100644 --- a/src/pages/home.js +++ b/src/pages/home.js @@ -12,7 +12,7 @@ export function home(navigateTo) { // Establecer atributos y contenido container.classList.add('container'); - logo.setAttribute('src', './images/logoEasygymOnly.png'); + logo.setAttribute('src', '/images/logoEasygymOnly.png'); divButtons.classList.add('descriptionPage'); description.textContent = 'We are a community where you can view and share quick routines to perform from anywhere in the world.'; signInButton.classList.add('button'); diff --git a/src/pages/signIn.js b/src/pages/signIn.js index e07e61b7..4b11f285 100644 --- a/src/pages/signIn.js +++ b/src/pages/signIn.js @@ -23,11 +23,11 @@ export function signIn(navigateTo) { const or = document.createElement('p'); const continueWithGoogleButton = document.createElement('button'); const logoGoogle = document.createElement('img'); - logoGoogle.src = './images/logoGoogle.png'; + logoGoogle.src = '/images/logoGoogle.png'; // Establecer atributos y contenido container.classList.add('container'); - logo.setAttribute('src', './images/logoNameEasygym.png'); + logo.setAttribute('src', '/images/logoNameEasygym.png'); emailLabel.textContent = 'Email'; emailInput.classList.add('insertInfo'); emailInput.setAttribute('placeholder', 'example@gmail.com'); diff --git a/src/pages/wall.js b/src/pages/wall.js index 916e41b2..cd0dbeb2 100644 --- a/src/pages/wall.js +++ b/src/pages/wall.js @@ -6,8 +6,6 @@ /* eslint-disable no-console */ /* eslint-disable import/no-extraneous-dependencies */ -// import { signOut } from 'firebase/auth'; - import { authDetector, userEmail, dislikeCounter, likeCounter, verifyLikes, deletePost, editpost, postPromise, addPost, postCol, signOut, getPost, timeStamp, @@ -25,9 +23,9 @@ export function wall() { const writeAndPost = document.createElement('div'); // Establecer atributos y contenido - logoRefresh.setAttribute('src', './images/logoEasygym.png'); + logoRefresh.setAttribute('src', '/images/logoEasygym.png'); logoRefresh.setAttribute('onclick', 'location.reload()'); - logOut.setAttribute('src', './images/logout.png'); + logOut.setAttribute('src', '/images/logout.png'); logOut.classList.add('logOut'); container.id = 'container'; divposts.id = 'posts'; @@ -63,19 +61,19 @@ export function wall() { const modalOptions = document.createElement('dialog'); modalOptions.classList.add('modalOptions'); const modalImgEdit = document.createElement('img'); - modalImgEdit.setAttribute('src', './images/edit.png'); + modalImgEdit.setAttribute('src', '/images/edit.png'); modalImgEdit.classList.add('modalImgEdit'); const editLabel = document.createElement('label'); editLabel.classList.add('editLabel'); editLabel.textContent = ('Edit'); const modalImgDel = document.createElement('img'); - modalImgDel.setAttribute('src', './images/delete.png'); + modalImgDel.setAttribute('src', '/images/delete.png'); modalImgDel.classList.add('modalImgDel'); const deleteLabel = document.createElement('label'); deleteLabel.classList.add('deleteLabel'); deleteLabel.textContent = ('Delete'); const xModal = document.createElement('img'); - xModal.setAttribute('src', './images/closeModal.png'); + xModal.setAttribute('src', '/images/closeModal.png'); xModal.classList.add('xModal'); const space = document.createElement('br'); @@ -162,10 +160,10 @@ export function wall() { descriptionAndLikes.textContent = poster.descripción; menuLikeSection.classList.add('menuLikeSection'); menuOptions.classList.add('menuOptions'); - menuOptions.setAttribute('src', './images/menuOptions.png'); + menuOptions.setAttribute('src', '/images/menuOptions.png'); likesAndCount.classList.add('likesAndCount'); likesPic.classList.add('likesPic'); - likesPic.setAttribute('src', './images/Like.png'); + likesPic.setAttribute('src', '/images/Like.png'); likesLab.classList.add('likesLab'); likesLab.textContent = (poster.likes && poster.likes.length) || 0; // likesLab.textContent = poster.likes?.length || 0; // ? si likes no existe q no falle al cargar los posts @@ -260,17 +258,17 @@ export function wall() { // Mostrar la imagen antes de hacer like const likesArray = poster.likes; if (likesArray != null && likesArray.includes(userEmail())) { - likesPic.setAttribute('src', './images/Likes.png'); + likesPic.setAttribute('src', '/images/Likes.png'); } // Al dar like hacer cambio de imagen y numero likesPic.addEventListener('click', async () => { const { userLiked, likesCount } = await verifyLikes(postId, userEmail()); if (userLiked) { await dislikeCounter(postId); - likesPic.setAttribute('src', './images/Like.png'); + likesPic.setAttribute('src', '/images/Like.png'); } else { await likeCounter(postId); - likesPic.setAttribute('src', './images/Likes.png'); + likesPic.setAttribute('src', '/images/Likes.png'); } // obtén el recuento actualizado de "likes" y actualiza la interfaz de usuario const updatedLikes = await verifyLikes(postId, userEmail()); From 13e5da1a0438862cb41c804dc0186857fa063d6c Mon Sep 17 00:00:00 2001 From: Ivonne Figueredo Date: Tue, 13 Jun 2023 08:31:06 -0500 Subject: [PATCH 51/51] lineas de cache --- .firebase/hosting.ZGlzdA.cache | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index c31c09f2..8d42e860 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -35,6 +35,6 @@ images/logout2.png,1685994149237,6b910d1d3f546cb30524a216cbc511d840c61b49b18c03d images/menuOptions.png,1685994149238,b8a45cdb084d3134c944dd7e7823c45dd30d1ee13090f0b8e621941ce3e2c0c3 images/signin.png,1685994149242,66f8dd7afeefc18109c30240839fbb67ccc33c9deeca07783d8f7738795dd278 images/wall.png,1685994149242,d4ab9de5a1252c522897a23b1e892ac7b3bd43a12556f0937383d6a8746d2726 -assets/index.a91b78aa.css,1685994479113,3f55dd2b1bb7d1005a13f40a46e66ae6f77e9205634c00d33b378fdddde4acfc -index.html,1685994479112,0fc073f0f6131a6645364ea7da2938d1dbf644a3cfbc6f16aa83c7f08e373ec6 -assets/index.3ff87eb7.js,1685994479113,23d47de3c4df5a86b6aa946574d5ebddbbdb30aa5cc5fd9266f3dd0860b57e6b +index.html,1686064752252,0fc073f0f6131a6645364ea7da2938d1dbf644a3cfbc6f16aa83c7f08e373ec6 +assets/index.a91b78aa.css,1686064752252,3f55dd2b1bb7d1005a13f40a46e66ae6f77e9205634c00d33b378fdddde4acfc +assets/index.3ff87eb7.js,1686064752252,23d47de3c4df5a86b6aa946574d5ebddbbdb30aa5cc5fd9266f3dd0860b57e6b