From e69fcc7f2e6a237b37169bf866aadb42c7454188 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 15:18:56 -0400 Subject: [PATCH 001/109] Update login form --- package.json | 1 + src/components/Background.js | 24 ++ src/components/Link.js | 20 + src/components/LoginComponents/LoginForm.js | 383 ++++++++++---------- src/pages/Login/LoginPage.js | 18 +- src/styled-components/colors.js | 16 +- yarn.lock | 5 + 7 files changed, 254 insertions(+), 213 deletions(-) create mode 100644 src/components/Background.js create mode 100644 src/components/Link.js diff --git a/package.json b/package.json index 0819155..5a84ae0 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "react-native": "0.70.5", "react-native-ionicons": "^4.6.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", + "react-native-linear-gradient": "^2.6.2", "react-native-safe-area-context": "3.3.2", "react-native-screens": "^3.18.2", "react-native-svg": "12.1.1", diff --git a/src/components/Background.js b/src/components/Background.js new file mode 100644 index 0000000..c84971b --- /dev/null +++ b/src/components/Background.js @@ -0,0 +1,24 @@ +import React from 'react' +import { View, StyleSheet } from 'react-native' +import Svg, { Defs, Rect, LinearGradient, Stop } from 'react-native-svg' + +import colors from '../styled-components/colors'; + +const Background = ({ children }) => { + return ( + + + + + + + + + + + {children} + + ); +}; + +export default Background; \ No newline at end of file diff --git a/src/components/Link.js b/src/components/Link.js new file mode 100644 index 0000000..9b4007f --- /dev/null +++ b/src/components/Link.js @@ -0,0 +1,20 @@ +import { Link } from 'native-base' + +import colors from '../styled-components/colors' + +const StyledLink = ({ url, text }) => { + return ( + + {text} + + ) +} + +export default StyledLink \ No newline at end of file diff --git a/src/components/LoginComponents/LoginForm.js b/src/components/LoginComponents/LoginForm.js index be59167..3fa0a3b 100644 --- a/src/components/LoginComponents/LoginForm.js +++ b/src/components/LoginComponents/LoginForm.js @@ -35,6 +35,7 @@ import { emailValidator, passwordValidator } from '../../utilities/functions' import EdenLogo from '../../assets/logo/eden.png' import colors from '../../styled-components/colors' +import StyledLink from '../Link' const LoginForm = () => { @@ -77,241 +78,231 @@ const LoginForm = () => { minW='100%' minH='100%' > - + + + + Bienvenido a + + + + Logo Eden + + - Bienvenido a + Ingresa tu usuario y contraseña para entrar a tu perfil - - Logo Eden - + - - - + ( + - Ingresa tu usuario y contraseña para entrar a tu perfil - - - - - - ( - + Correo electrónico + + + + } - > - - Correo electrónico - - - - + /> + {emailValidator(value) ? null : ( + } - /> - {emailValidator(value) ? null : ( - - } + > + El correo electrónico no es válido + + )} + + )} + /> + + ( + + + Contraseña + + - El correo electrónico no es válido - - )} - - )} - /> - - ( - + } - > - - Contraseña - - + setShow(!show)} > - - } - InputRightElement={ - - setShow(!show)} - > - - - + + + } + /> + {passwordValidator(value) ? null : ( + } - /> - {passwordValidator(value) ? null : ( - - } - > - La contraseña no es válida - - )} - - )} - /> + > + La contraseña no es válida + + )} + + )} + /> + + - - - - - ¿No recuerdas alguno de tus datos? - - - - No te preocupes, - - - ingresa aquí - - - - - - - - - + ¿No recuerdas alguno de tus datos? + - - ¿No tienes cuenta? + No te preocupes, - - Regístrate aquí - + + + + + + + ¿No tienes cuenta? + + + + - + + + ) } diff --git a/src/pages/Login/LoginPage.js b/src/pages/Login/LoginPage.js index 4df0985..0f18b3b 100644 --- a/src/pages/Login/LoginPage.js +++ b/src/pages/Login/LoginPage.js @@ -2,25 +2,25 @@ import React from 'react' import { ScrollView, VStack } from 'native-base' import LoginForm from '../../components/LoginComponents/LoginForm' - -import colors from '../../styled-components/colors' +import Background from '../../components/Background' const LoginPage = ({ navigation }) => { return ( - - - + + + + + ) diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 31d415c..739b749 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -1,9 +1,9 @@ const colors = { base: '#f4f4f4', - primary: '#bef002', + primary: '#00C28D', secondary: '#066598', - bgPrimary: '#e9fce6', - bgSecondary: '#31383E', + bgPrimary: '#152C43', + bgSecondary: '#016F6C', error: { primary: '#d95f5f', secondary: '#f52556', @@ -21,13 +21,13 @@ const colors = { secondary: 'rgba(42,53,60, .75)', }, button: { - bgPrimary: '#87c326', - bgSecondary: '#066598', - fontPrimary: '#31383E', - fontSecondary: '#e9fce6' + bgPrimary: '#48CBC5', + bgSecondary: '#00C28D', + fontPrimary: '#1E9C98', + fontSecondary: '#80DCDA' }, link: { - color: '#87c326' + color: '#2CA29F' } } diff --git a/yarn.lock b/yarn.lock index 20fa80d..7f3b468 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7066,6 +7066,11 @@ react-native-keyboard-aware-scroll-view@^0.9.5: prop-types "^15.6.2" react-native-iphone-x-helper "^1.0.3" +react-native-linear-gradient@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.6.2.tgz#56598a76832724b2afa7889747635b5c80948f38" + integrity sha512-Z8Xxvupsex+9BBFoSYS87bilNPWcRfRsGC0cpJk72Nxb5p2nEkGSBv73xZbEHnW2mUFvP+huYxrVvjZkr/gRjQ== + react-native-ratings@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/react-native-ratings/-/react-native-ratings-8.1.0.tgz#3fa9ad29128dc3a88e59518ba151e61c59dd0647" From 68f8b08725cc88beb227585aaefe31d0a9c8370c Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 16:09:08 -0400 Subject: [PATCH 002/109] Update README.md --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index cd9876a..9cde463 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,16 @@ ![languages](https://img.shields.io/github/languages/count/gustavoerivero/EdenMobile) ![porc](https://img.shields.io/github/languages/top/gustavoerivero/EdenMobile) +
+ + + + + + +
English Spanish
+
+ "Edén: Servicio de juegos" is an information system structured by three components, including a CRM, an information portal and a mobile application. Eden is a From bff8afe3a4b0e4fd38e1c45c862343d002c6ddbb Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 16:10:03 -0400 Subject: [PATCH 003/109] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9cde463..d888e1b 100644 --- a/README.md +++ b/README.md @@ -158,4 +158,4 @@ carried out by the Thoteam subgroup, formed by;

--- -⌨️ made with❤️ by [Thoteam] +⌨️ made with ❤️ by [Thoteam] From 8df242558950067c023877097dd0124ed949bf7e Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 16:21:06 -0400 Subject: [PATCH 004/109] Create README-ES.md --- README-ES.md | 163 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 README-ES.md diff --git a/README-ES.md b/README-ES.md new file mode 100644 index 0000000..8100d16 --- /dev/null +++ b/README-ES.md @@ -0,0 +1,163 @@ + +

+ Eden +

+ +![dependencies](https://img.shields.io/depfu/dependencies/github/gustavoerivero/EdenMobile) +![nodeV](https://img.shields.io/node/v/react-native) +![size](https://img.shields.io/github/repo-size/gustavoerivero/EdenMobile) +![version](https://img.shields.io/github/package-json/v/gustavoerivero/EdenMobile) +![license](https://img.shields.io/github/license/gustavoerivero/EdenMobile) +![collabs](https://img.shields.io/github/contributors/gustavoerivero/EdenMobile) +![lastcommit](https://img.shields.io/github/last-commit/gustavoerivero/EdenMobile) +![languages](https://img.shields.io/github/languages/count/gustavoerivero/EdenMobile) +![porc](https://img.shields.io/github/languages/top/gustavoerivero/EdenMobile) + +
+ + + + + + +
English Spanish
+
+ + +"Edén: Servicio de juegos" es un sistema de información estructurado por tres componentes, +incluyendo un CRM, un portal informativo y una aplicación móvil. Eden es un +sistema de gestión logística y de información para la administración de +clubes sociales y deportivos, que apoya especialmente las disciplinas deportivas de "bolas +criollas" y dominó. + +Este repositorio corresponde al componente de la aplicación móvil, que está +especialmente enfocado a la visualización de datos del club, notificaciones, perfiles de +usuarios y/o perfiles de los jugadores y, si se dan los permisos correspondientes +la gestión de los partidos deportivos. + +## Comenzando 🚀 + +La aplicación está desarrollada con React Native para el frontend y PHP con Laravel para el +backend y también hace uso de otras librerías que son necesarias para el correcto funcionamiento +de la aplicación. + +### Prerrequisitos 📋 + +* [Node.js](https://nodejs.org/en/) versión 18.12.1 + +* [Postman](https://www.postman.com/) para las peticiones HTTP. + +* Para el proyecto se utilizó [Visual Studio Code](https://code.visualstudio.com/) como editor de texto tanto para el frontend como para el backend, pero también se puede utilizar cualquier editor de texto. + +### Instalación 🔧 + +Para comenzar, se procede a la descarga del repositorio. Para ello, se abre la consola, +ir a la carpeta donde se desea guardar el proyecto y ejecutar el siguiente comando: + +```bash + git clone https://github.com/gustavoerivero/EdenMobile.git +``` + +A continuación, se debe acceder a la carpeta clonada en el repositorio "EdenMobile". + +Para un sistema operativo Windows, con el comando: + +```bash +cd EdenMobile +``` + +A continuación, se procede a la instalación de las librerías y dependencias necesarias para su ejecución. + +```bash +npm install +``` + +O, como alternativa; + +```bash +yarn install +``` + +Si ninguna de las opciones anteriores funciona, intentar con; + +```bash +npm i -f +``` + +Una vez que la instalación de las dependencias es exitosa, el proyecto está listo para desplegar. + +## Despliegue 📦 + +Para realizar un despliegue local, se procede ejecutando los siguientes comandos: + +### Primer paso: Iniciar Metro + +En primer lugar, es necesario iniciar Metro, el bundler de JavaScript que viene con React Native. + +Para iniciar Metro, hay que ejecutar ```npx react-native start``` o, ```yarn react-native start``` +dentro de la carpeta del proyecto Eden: + +```bash + npx react-native start +``` + +o + +```bash + yarn react-native start +``` + +Esto permitirá iniciar el Metro Bundler. + +### Segundo paso: Iniciar el proyecto + +Dejar que Metro Bundler se ejecute en el terminal. Ahora bien, abrir un nuevo terminal dentro del proyecto Eden . Consecuentemente, se debe ejecutar lo siguiente: + +```bash + npx react-native run-android +``` + +o + +```bash + yarn react-native run-android +``` + +Si todo está configurado correctamente, se debería ver la aplicación funcionando en +un emulador de Android en breve. + +```npx react-native run-android``` o ```yarn react-native run-android```, son formas de ejecutar la aplicación, pero también se puede ejecutar directamente desde Android Studio. + +Para más información, es posible acceder directamente a la [documentación de React Native](https://reactnative.dev/docs/environment-setup). + +## Documentación 📕 + +Para conocer la documentación utilizada para el desarrollo de la aplicación, es posible visitar la [documentación](https://drive.google.com/drive/folders/1mAbI0DoGZUTUPalTCa9e0e3yG1RdAi9N). + +## Autores 💻 + +El proyecto ha sido concebido, diseñado y desarrollado por estudiantes del último semestre de Ingeniería Informática de la Universidad Centroccidental "Lisandro Alvarado" de la LXIII promoción agrupados bajo el nombre de "Eurus". + +### Thoteam ✒️ +Sin embargo, para el desarrollo de la aplicación móvil, el desarrollo fue +llevado a cabo por el subgrupo Thoteam, formado por; + +* @gustavoerivero - [gustavoerivero](https://github.com/gustavoerivero) +* @joseriveroc - [joseriveroc](https://github.com/joseriveroc) +* @luisv98 - [luisv98](https://github.com/luisv98) + +--- + +

+ + UCLA + + + DCYT + + Eurus + Thoteam +

+ +--- +⌨️ hecho con ❤️ por [Thoteam] From c306e02a308a56db3826a1be5d6741a252c2b520 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 18:15:17 -0400 Subject: [PATCH 005/109] Add the Eden Logo svg file --- .vscode/settings.json | 5 +- README-ES.md | 2 +- README.md | 2 +- metro.config.js | 32 ++- package.json | 1 + public/assets/eden.svg | 1 + src/assets/logo/eden.svg | 1 + src/components/LoginComponents/LoginForm.js | 39 ++-- src/components/StyledField.js | 6 +- yarn.lock | 228 +++++++++++++++++++- 10 files changed, 277 insertions(+), 40 deletions(-) create mode 100644 public/assets/eden.svg create mode 100644 src/assets/logo/eden.svg diff --git a/.vscode/settings.json b/.vscode/settings.json index 1133129..fd87bb6 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,6 @@ { - "java.configuration.updateBuildConfiguration": "automatic" + "java.configuration.updateBuildConfiguration": "automatic", + "files.associations": { + "ostream": "cpp" + } } \ No newline at end of file diff --git a/README-ES.md b/README-ES.md index 8100d16..406e398 100644 --- a/README-ES.md +++ b/README-ES.md @@ -1,6 +1,6 @@

- Eden + Eden

![dependencies](https://img.shields.io/depfu/dependencies/github/gustavoerivero/EdenMobile) diff --git a/README.md b/README.md index d888e1b..d9bb4bb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- Eden + Eden

![dependencies](https://img.shields.io/depfu/dependencies/github/gustavoerivero/EdenMobile) diff --git a/metro.config.js b/metro.config.js index e91aba9..a54a64a 100644 --- a/metro.config.js +++ b/metro.config.js @@ -5,13 +5,25 @@ * @format */ -module.exports = { - transformer: { - getTransformOptions: async () => ({ - transform: { - experimentalImportSupport: false, - inlineRequires: true, - }, - }), - }, -}; +const { getDefaultConfig } = require("metro-config"); + +module.exports = (async () => { + const { + resolver: { sourceExts, assetExts } + } = await getDefaultConfig(); + return { + transformer: { + getTransformOptions: async () => ({ + transform: { + experimentalImportSupport: false, + inlineRequires: false + } + }), + babelTransformerPath: require.resolve("react-native-svg-transformer") + }, + resolver: { + assetExts: assetExts.filter(ext => ext !== "svg"), + sourceExts: [...sourceExts, "svg"] + } + }; +})(); \ No newline at end of file diff --git a/package.json b/package.json index 5a84ae0..45e048c 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "react-native-safe-area-context": "3.3.2", "react-native-screens": "^3.18.2", "react-native-svg": "12.1.1", + "react-native-svg-transformer": "^1.0.0", "react-native-vector-icons": "^9.2.0", "react-redux": "^8.0.5", "yup": "^0.32.11" diff --git a/public/assets/eden.svg b/public/assets/eden.svg new file mode 100644 index 0000000..87401d6 --- /dev/null +++ b/public/assets/eden.svg @@ -0,0 +1 @@ +Logo EdenPeqRecurso 4_1 \ No newline at end of file diff --git a/src/assets/logo/eden.svg b/src/assets/logo/eden.svg new file mode 100644 index 0000000..87401d6 --- /dev/null +++ b/src/assets/logo/eden.svg @@ -0,0 +1 @@ +Logo EdenPeqRecurso 4_1 \ No newline at end of file diff --git a/src/components/LoginComponents/LoginForm.js b/src/components/LoginComponents/LoginForm.js index 3fa0a3b..8a4baa1 100644 --- a/src/components/LoginComponents/LoginForm.js +++ b/src/components/LoginComponents/LoginForm.js @@ -1,4 +1,4 @@ -import React, { useState } from 'react' +import React, { useState, useRef } from 'react' import { TouchableOpacity } from 'react-native' @@ -8,12 +8,10 @@ import { Text, VStack, Stack, - Image, FormControl, WarningOutlineIcon, Button, Divider, - Link, HStack, } from 'native-base' @@ -32,7 +30,7 @@ import Icon from 'react-native-vector-icons/Ionicons' import { emailValidator, passwordValidator } from '../../utilities/functions' -import EdenLogo from '../../assets/logo/eden.png' +import Eden from '../../assets/logo/eden.svg' import colors from '../../styled-components/colors' import StyledLink from '../Link' @@ -71,6 +69,8 @@ const LoginForm = () => { const [show, setShow] = useState(false) + const ref = useRef() + return ( { shadow={8} alignItems='center' justifyContent='center' - my={10} + my={5} > - + { - Logo Eden + { Correo electrónico { } @@ -189,11 +185,12 @@ const LoginForm = () => { Contraseña { } diff --git a/src/components/StyledField.js b/src/components/StyledField.js index 0ffdfe6..e2cdba8 100644 --- a/src/components/StyledField.js +++ b/src/components/StyledField.js @@ -1,9 +1,9 @@ -import React from 'react' +import React, { forwardRef } from 'react' import { Input } from 'native-base' import colors from '../styled-components/colors' -const StyledField = ({ style = {}, ...props }) => { +const StyledField = ({ style = {}, ...props }, ref) => { const inputStyle = { ...style } @@ -25,4 +25,4 @@ const StyledField = ({ style = {}, ...props }) => { ) } -export default StyledField \ No newline at end of file +export default forwardRef(StyledField) \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 7f3b468..46c875d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29,7 +29,7 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30" integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ== -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.13.16", "@babel/core@^7.14.0", "@babel/core@^7.19.6", "@babel/core@^7.7.5": version "7.20.2" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92" integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g== @@ -2279,11 +2279,108 @@ dependencies: "@sinonjs/commons" "^1.7.0" +"@svgr/babel-plugin-add-jsx-attribute@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba" + integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ== + +"@svgr/babel-plugin-remove-jsx-attribute@*": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-6.5.0.tgz#652bfd4ed0a0699843585cda96faeb09d6e1306e" + integrity sha512-8zYdkym7qNyfXpWvu4yq46k41pyNM9SOstoWhKlm+IfdCE1DdnRKeMUPsWIEO/DEkaWxJ8T9esNdG3QwQ93jBA== + +"@svgr/babel-plugin-remove-jsx-empty-expression@*": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-6.5.0.tgz#4b78994ab7d39032c729903fc2dd5c0fa4565cb8" + integrity sha512-NFdxMq3xA42Kb1UbzCVxplUc0iqSyM9X8kopImvFnB+uSDdzIHOdbs1op8ofAvVRtbg4oZiyRl3fTYeKcOe9Iw== + +"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60" + integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg== + +"@svgr/babel-plugin-svg-dynamic-title@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4" + integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw== + +"@svgr/babel-plugin-svg-em-dimensions@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217" + integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA== + +"@svgr/babel-plugin-transform-react-native-svg@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305" + integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg== + +"@svgr/babel-plugin-transform-svg-component@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250" + integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ== + +"@svgr/babel-preset@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828" + integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw== + dependencies: + "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1" + "@svgr/babel-plugin-remove-jsx-attribute" "*" + "@svgr/babel-plugin-remove-jsx-empty-expression" "*" + "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1" + "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1" + "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1" + "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1" + "@svgr/babel-plugin-transform-svg-component" "^6.5.1" + +"@svgr/core@^6.1.2": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a" + integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/plugin-jsx" "^6.5.1" + camelcase "^6.2.0" + cosmiconfig "^7.0.1" + +"@svgr/hast-util-to-babel-ast@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2" + integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw== + dependencies: + "@babel/types" "^7.20.0" + entities "^4.4.0" + +"@svgr/plugin-jsx@^6.5.1": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072" + integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw== + dependencies: + "@babel/core" "^7.19.6" + "@svgr/babel-preset" "^6.5.1" + "@svgr/hast-util-to-babel-ast" "^6.5.1" + svg-parser "^2.0.4" + +"@svgr/plugin-svgo@^6.1.2": + version "6.5.1" + resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz#0f91910e988fc0b842f88e0960c2862e022abe84" + integrity sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ== + dependencies: + cosmiconfig "^7.0.1" + deepmerge "^4.2.2" + svgo "^2.8.0" + "@tootallnate/once@1": version "1.1.2" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + "@tsconfig/react-native@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@tsconfig/react-native/-/react-native-2.0.2.tgz#ac9b8ceb1de91e2f23ab89f915490a1a4afd65a0" @@ -2396,6 +2493,11 @@ resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "@types/prettier@^2.0.0": version "2.7.1" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e" @@ -3190,7 +3292,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.0.0: +camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== @@ -3386,6 +3488,11 @@ command-exists@^1.2.8: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + commander@^9.4.0: version "9.4.1" resolved "https://registry.yarnpkg.com/commander/-/commander-9.4.1.tgz#d1dd8f2ce6faf93147295c0df13c7c21141cfbdd" @@ -3473,6 +3580,17 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0: js-yaml "^3.13.1" parse-json "^4.0.0" +cosmiconfig@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -3511,7 +3629,18 @@ css-select@^2.1.0: domutils "^1.7.0" nth-check "^1.0.2" -css-tree@^1.0.0-alpha.39: +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.0.0-alpha.39, css-tree@^1.1.2, css-tree@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== @@ -3524,6 +3653,18 @@ css-what@^3.2.1: resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4" integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ== +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" @@ -3713,12 +3854,21 @@ dom-serializer@0: domelementtype "^2.0.1" entities "^2.0.0" +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + domelementtype@1: version "1.3.1" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== -domelementtype@^2.0.1: +domelementtype@^2.0.1, domelementtype@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== @@ -3730,6 +3880,13 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + domutils@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" @@ -3738,6 +3895,15 @@ domutils@^1.7.0: dom-serializer "0" domelementtype "1" +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -3782,6 +3948,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + envinfo@^7.7.2: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" @@ -6527,6 +6698,13 @@ nth-check@^1.0.2: dependencies: boolbase "~1.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -6799,6 +6977,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== +path-dirname@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q== + path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -7096,6 +7279,15 @@ react-native-size-matters@^0.4.0: resolved "https://registry.yarnpkg.com/react-native-size-matters/-/react-native-size-matters-0.4.0.tgz#01bfd0d59454318f4e0b13fe9c1eb0523d70f2e0" integrity sha512-8/C0htHrFWeUm9N8JegmadovUfgTWkGBkDPZ1N3YkXtDWb+98Ya2gThiKcu445r8c7YhcrBfnHz/mYsXIusaOQ== +react-native-svg-transformer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/react-native-svg-transformer/-/react-native-svg-transformer-1.0.0.tgz#7a707e5e95d20321b5f3dcfd0c3c8762ebd0221b" + integrity sha512-ALHU5VvLLyKM/BvyEG7VYJmqglvaXtU7mGRCxrEwwpJO/GBf1ZMUzc4AeJAjSodj7yYtlDYRxNSt9ySWpaa6JQ== + dependencies: + "@svgr/core" "^6.1.2" + "@svgr/plugin-svgo" "^6.1.2" + path-dirname "^1.0.2" + react-native-svg@12.1.1: version "12.1.1" resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-12.1.1.tgz#5f292410b8bcc07bbc52b2da7ceb22caf5bcaaee" @@ -7791,6 +7983,11 @@ stable-hash@^0.0.2: resolved "https://registry.yarnpkg.com/stable-hash/-/stable-hash-0.0.2.tgz#a909deaa5b9d430b100ca0a10132a533f2665e94" integrity sha512-tPwQ3c1rLIwbJpq59duoznegEbmgfV630C2n4R4G96LKBFljgK8j+O9AxjqB6cAzu4gE7s4pByrLWtZel8E+Mg== +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + stack-utils@^2.0.2: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -7969,6 +8166,24 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== +svg-parser@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5" + integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ== + +svgo@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -8569,6 +8784,11 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + yargs-parser@^18.1.2: version "18.1.3" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" From be872b6e27f09ea8158b639b71e1524335b3a83a Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 13 Nov 2022 18:21:36 -0400 Subject: [PATCH 006/109] Add the Eden Logo svg file --- src/components/LoginComponents/LoginForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/LoginComponents/LoginForm.js b/src/components/LoginComponents/LoginForm.js index 8a4baa1..2716549 100644 --- a/src/components/LoginComponents/LoginForm.js +++ b/src/components/LoginComponents/LoginForm.js @@ -86,7 +86,7 @@ const LoginForm = () => { shadow={8} alignItems='center' justifyContent='center' - my={5} + my={10} > Date: Tue, 15 Nov 2022 20:03:39 +0000 Subject: [PATCH 007/109] Update all of typescript-eslint to version 5.43.0 --- package.json | 4 +-- yarn.lock | 98 ++++++++++++++++++++++++++-------------------------- 2 files changed, 51 insertions(+), 51 deletions(-) diff --git a/package.json b/package.json index 45e048c..75194ad 100644 --- a/package.json +++ b/package.json @@ -48,8 +48,8 @@ "@types/react": "^18.0.21", "@types/react-native": "^0.70.6", "@types/react-test-renderer": "^18.0.0", - "@typescript-eslint/eslint-plugin": "^5.37.0", - "@typescript-eslint/parser": "^5.37.0", + "@typescript-eslint/eslint-plugin": "^5.43.0", + "@typescript-eslint/parser": "^5.43.0", "babel-jest": "^26.6.3", "eslint": "^7.32.0", "jest": "^26.6.3", diff --git a/yarn.lock b/yarn.lock index 46c875d..7e3328e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2602,14 +2602,14 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/eslint-plugin@^5.37.0": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.42.1.tgz#696b9cc21dfd4749c1c8ad1307f76a36a00aa0e3" - integrity sha512-LyR6x784JCiJ1j6sH5Y0K6cdExqCCm8DJUTcwG5ThNXJj/G8o5E56u5EdG4SLy+bZAwZBswC+GYn3eGdttBVCg== - dependencies: - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/type-utils" "5.42.1" - "@typescript-eslint/utils" "5.42.1" +"@typescript-eslint/eslint-plugin@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz#4a5248eb31b454715ddfbf8cfbf497529a0a78bc" + integrity sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA== + dependencies: + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/type-utils" "5.43.0" + "@typescript-eslint/utils" "5.43.0" debug "^4.3.4" ignore "^5.2.0" natural-compare-lite "^1.4.0" @@ -2639,31 +2639,31 @@ "@typescript-eslint/typescript-estree" "3.10.1" eslint-visitor-keys "^1.1.0" -"@typescript-eslint/parser@^5.37.0": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.42.1.tgz#3e66156f2f74b11690b45950d8f5f28a62751d35" - integrity sha512-kAV+NiNBWVQDY9gDJDToTE/NO8BHi4f6b7zTsVAJoTkmB/zlfOpiEVBzHOKtlgTndCKe8vj9F/PuolemZSh50Q== +"@typescript-eslint/parser@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.43.0.tgz#9c86581234b88f2ba406f0b99a274a91c11630fd" + integrity sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug== dependencies: - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/typescript-estree" "5.42.1" + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/typescript-estree" "5.43.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.42.1.tgz#05e5e1351485637d466464237e5259b49f609b18" - integrity sha512-QAZY/CBP1Emx4rzxurgqj3rUinfsh/6mvuKbLNMfJMMKYLRBfweus8brgXF8f64ABkIZ3zdj2/rYYtF8eiuksQ== +"@typescript-eslint/scope-manager@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz#566e46303392014d5d163704724872e1f2dd3c15" + integrity sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw== dependencies: - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/visitor-keys" "5.42.1" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/visitor-keys" "5.43.0" -"@typescript-eslint/type-utils@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.42.1.tgz#21328feb2d4b193c5852b35aabd241ccc1449daa" - integrity sha512-WWiMChneex5w4xPIX56SSnQQo0tEOy5ZV2dqmj8Z371LJ0E+aymWD25JQ/l4FOuuX+Q49A7pzh/CGIQflxMVXg== +"@typescript-eslint/type-utils@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz#91110fb827df5161209ecca06f70d19a96030be6" + integrity sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg== dependencies: - "@typescript-eslint/typescript-estree" "5.42.1" - "@typescript-eslint/utils" "5.42.1" + "@typescript-eslint/typescript-estree" "5.43.0" + "@typescript-eslint/utils" "5.43.0" debug "^4.3.4" tsutils "^3.21.0" @@ -2672,10 +2672,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-3.10.1.tgz#1d7463fa7c32d8a23ab508a803ca2fe26e758727" integrity sha512-+3+FCUJIahE9q0lDi1WleYzjCwJs5hIsbugIgnbB+dSCYUxl8L6PwmsyOPFZde2hc1DlTo/xnkOgiTLSyAbHiQ== -"@typescript-eslint/types@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.42.1.tgz#0d4283c30e9b70d2aa2391c36294413de9106df2" - integrity sha512-Qrco9dsFF5lhalz+lLFtxs3ui1/YfC6NdXu+RAGBa8uSfn01cjO7ssCsjIsUs484vny9Xm699FSKwpkCcqwWwA== +"@typescript-eslint/types@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.43.0.tgz#e4ddd7846fcbc074325293515fa98e844d8d2578" + integrity sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg== "@typescript-eslint/typescript-estree@3.10.1": version "3.10.1" @@ -2691,29 +2691,29 @@ semver "^7.3.2" tsutils "^3.17.1" -"@typescript-eslint/typescript-estree@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.42.1.tgz#f9a223ecb547a781d37e07a5ac6ba9ff681eaef0" - integrity sha512-qElc0bDOuO0B8wDhhW4mYVgi/LZL+igPwXtV87n69/kYC/7NG3MES0jHxJNCr4EP7kY1XVsRy8C/u3DYeTKQmw== +"@typescript-eslint/typescript-estree@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz#b6883e58ba236a602c334be116bfc00b58b3b9f2" + integrity sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg== dependencies: - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/visitor-keys" "5.42.1" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/visitor-keys" "5.43.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.42.1.tgz#2789b1cd990f0c07aaa3e462dbe0f18d736d5071" - integrity sha512-Gxvf12xSp3iYZd/fLqiQRD4uKZjDNR01bQ+j8zvhPjpsZ4HmvEFL/tC4amGNyxN9Rq+iqvpHLhlqx6KTxz9ZyQ== +"@typescript-eslint/utils@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.43.0.tgz#00fdeea07811dbdf68774a6f6eacfee17fcc669f" + integrity sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.42.1" - "@typescript-eslint/types" "5.42.1" - "@typescript-eslint/typescript-estree" "5.42.1" + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/typescript-estree" "5.43.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" semver "^7.3.7" @@ -2725,12 +2725,12 @@ dependencies: eslint-visitor-keys "^1.1.0" -"@typescript-eslint/visitor-keys@5.42.1": - version "5.42.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.42.1.tgz#df10839adf6605e1cdb79174cf21e46df9be4872" - integrity sha512-LOQtSF4z+hejmpUvitPlc4hA7ERGoj2BVkesOcG91HCn8edLGUXbTrErmutmPbl8Bo9HjAvOO/zBKQHExXNA2A== +"@typescript-eslint/visitor-keys@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz#cbbdadfdfea385310a20a962afda728ea106befa" + integrity sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg== dependencies: - "@typescript-eslint/types" "5.42.1" + "@typescript-eslint/types" "5.43.0" eslint-visitor-keys "^3.3.0" abab@^2.0.3, abab@^2.0.5: From eaeeba9871b62958eed4bf6d9a46376f6b1facb8 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 00:12:00 +0000 Subject: [PATCH 008/109] Update react-hook-form to version 7.39.4 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 45e048c..1506b68 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "native-base": "^3.4.21", "react": "18.1.0", "react-dom": "^18.2.0", - "react-hook-form": "^7.39.3", + "react-hook-form": "^7.39.4", "react-native": "0.70.5", "react-native-ionicons": "^4.6.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", diff --git a/yarn.lock b/yarn.lock index 46c875d..37b92cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7196,10 +7196,10 @@ react-freeze@^1.0.0: resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.3.tgz#5e3ca90e682fed1d73a7cb50c2c7402b3e85618d" integrity sha512-ZnXwLQnGzrDpHBHiC56TXFXvmolPeMjTn1UOm610M4EXGzbEDR7oOIyS2ZiItgbs6eZc4oU/a0hpk8PrcKvv5g== -react-hook-form@^7.39.3: - version "7.39.3" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.39.3.tgz#d5e66dae44187606992ba01f26460cca2565ea58" - integrity sha512-H/vwk1vBf+TiXuyW6+hWz+zCujiDO6NqHlN5sPE/a+NGKKGK95XTM65DZz3NmEgs2M20Wka+g4uv4VD367wDBA== +react-hook-form@^7.39.4: + version "7.39.4" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.39.4.tgz#7d9edf4e778a0cec4383f0119cd0699e3826a14a" + integrity sha512-B0e78r9kR9L2M4A4AXGbHoA/vyv34sB/n8QWJAw33TFz8f5t9helBbYAeqnbvcQf1EYzJxKX/bGQQh9K+evCyQ== "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.1.0: version "18.2.0" From da283a5727ec376e207a535d82d1a129eaf6e872 Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 16:41:06 +0000 Subject: [PATCH 009/109] Update native-base to version 3.4.22 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 45e048c..1f189fc 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "formik": "^2.2.9", "jwt-decode": "^3.1.2", "mime": "^3.0.0", - "native-base": "^3.4.21", + "native-base": "^3.4.22", "react": "18.1.0", "react-dom": "^18.2.0", "react-hook-form": "^7.39.3", diff --git a/yarn.lock b/yarn.lock index 46c875d..943aff1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6539,10 +6539,10 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -native-base@^3.4.21: - version "3.4.21" - resolved "https://registry.yarnpkg.com/native-base/-/native-base-3.4.21.tgz#c64fb97701721d5b4979a5f8af91f2bed71415b6" - integrity sha512-5HlwohfIKwZVtjqtnaI48dDkmUmNfCfFtQZaQR4yJgHmDMdi7+mNwGJAiCUc6YDhRoknlGMR0MirLIuvRFhV5w== +native-base@^3.4.22: + version "3.4.22" + resolved "https://registry.yarnpkg.com/native-base/-/native-base-3.4.22.tgz#ad175f4741806e5fa02b3f2e8a98be1db6ea6109" + integrity sha512-OmIrbE9b9zbGc/m8+cnBzVeunziB7LTupf81FWFs3ByNKOoMp7QP7XM2vpwJW+RA9lZQothRu084zE59dMNydg== dependencies: "@react-aria/focus" "3.2.3" "@react-aria/utils" "^3.6.0" From 5c60dde7bc96415f68335fea189ee18594f015fc Mon Sep 17 00:00:00 2001 From: "depfu[bot]" <23717796+depfu[bot]@users.noreply.github.com> Date: Sat, 19 Nov 2022 17:35:43 +0000 Subject: [PATCH 010/109] Update typescript to version 4.9.3 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c86c311..ee1d693 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "jest": "^26.6.3", "metro-react-native-babel-preset": "0.72.3", "react-test-renderer": "18.1.0", - "typescript": "^4.8.3" + "typescript": "^4.9.3" }, "jest": { "preset": "react-native", diff --git a/yarn.lock b/yarn.lock index 0b89221..b03e75e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8407,10 +8407,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.8.3: - version "4.8.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" - integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== +typescript@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.3.tgz#3aea307c1746b8c384435d8ac36b8a2e580d85db" + integrity sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA== uglify-es@^3.1.9: version "3.3.9" From 943ef850796ad9a2fe5b3fd6caa6311d4da9bfff Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sat, 19 Nov 2022 13:36:22 -0400 Subject: [PATCH 011/109] Update LICENSE From 588ac5f5abd0a61388dd4ca44092ff72b72b8bc2 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sat, 19 Nov 2022 19:27:06 -0400 Subject: [PATCH 012/109] Add navbar --- package.json | 4 + src/components/Background.js | 6 +- src/components/Container.js | 27 +++++ src/components/LoginComponents/LoginForm.js | 4 +- src/components/NavBar.js | 18 ++++ src/navigation/BottomNavigation.js | 107 ++++++++++++++++++++ src/navigation/StackNavigation.js | 14 ++- src/navigation/styled-components/styles.js | 22 ++++ src/pages/Login/LoginPage.js | 8 +- src/pages/Main/CalendarPage.js | 19 ++++ src/pages/Main/HomePage.js | 14 +++ src/pages/Main/NotificationPage.js | 19 ++++ src/pages/Main/PostPage.js | 19 ++++ src/pages/Main/UserPage.js | 19 ++++ src/styled-components/colors.js | 7 ++ yarn.lock | 39 +++++++ 16 files changed, 338 insertions(+), 8 deletions(-) create mode 100644 src/components/Container.js create mode 100644 src/components/NavBar.js create mode 100644 src/navigation/BottomNavigation.js create mode 100644 src/navigation/styled-components/styles.js create mode 100644 src/pages/Main/CalendarPage.js create mode 100644 src/pages/Main/HomePage.js create mode 100644 src/pages/Main/NotificationPage.js create mode 100644 src/pages/Main/PostPage.js create mode 100644 src/pages/Main/UserPage.js diff --git a/package.json b/package.json index ee1d693..9c895c9 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,10 @@ "lint": "eslint . --ext .js,.jsx,.ts,.tsx" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.2.1", + "@fortawesome/free-brands-svg-icons": "^6.2.1", + "@fortawesome/free-solid-svg-icons": "^6.2.1", + "@fortawesome/react-native-fontawesome": "^0.3.0", "@hookform/resolvers": "^2.9.10", "@react-native-async-storage/async-storage": "^1.17.11", "@react-navigation/bottom-tabs": "^6.4.0", diff --git a/src/components/Background.js b/src/components/Background.js index c84971b..98d1aaa 100644 --- a/src/components/Background.js +++ b/src/components/Background.js @@ -4,14 +4,14 @@ import Svg, { Defs, Rect, LinearGradient, Stop } from 'react-native-svg' import colors from '../styled-components/colors'; -const Background = ({ children }) => { +const Background = ({ topColor, bottomColor, children }) => { return ( - - + + diff --git a/src/components/Container.js b/src/components/Container.js new file mode 100644 index 0000000..81aec42 --- /dev/null +++ b/src/components/Container.js @@ -0,0 +1,27 @@ +import React from 'react' +import { ScrollView } from 'react-native' +import colors from '../styled-components/colors' +import NavBar from './NavBar' +import Background from './Background' + +const Container = ({ navigation, children }) => { + return ( + + + + {children} + + + ) +} + +export default Container \ No newline at end of file diff --git a/src/components/LoginComponents/LoginForm.js b/src/components/LoginComponents/LoginForm.js index 2716549..db84124 100644 --- a/src/components/LoginComponents/LoginForm.js +++ b/src/components/LoginComponents/LoginForm.js @@ -35,7 +35,7 @@ import Eden from '../../assets/logo/eden.svg' import colors from '../../styled-components/colors' import StyledLink from '../Link' -const LoginForm = () => { +const LoginForm = ({ navigation }) => { const { showErrorToast } = useCustomToast() const { isLoading, startLoading, stopLoading } = useLoading() @@ -238,7 +238,7 @@ const LoginForm = () => { Eden -![dependencies](https://img.shields.io/depfu/dependencies/github/gustavoerivero/EdenMobile) -![nodeV](https://img.shields.io/node/v/react-native) -![size](https://img.shields.io/github/repo-size/gustavoerivero/EdenMobile) -![version](https://img.shields.io/github/package-json/v/gustavoerivero/EdenMobile) -![license](https://img.shields.io/github/license/gustavoerivero/EdenMobile) -![collabs](https://img.shields.io/github/contributors/gustavoerivero/EdenMobile) -![lastcommit](https://img.shields.io/github/last-commit/gustavoerivero/EdenMobile) -![languages](https://img.shields.io/github/languages/count/gustavoerivero/EdenMobile) -![porc](https://img.shields.io/github/languages/top/gustavoerivero/EdenMobile) +
+ dependencies + node version + project size + project version + project license + project collabs + project last commit + project languages + project major language percent +
From a969d3c276d440200b07b8adb6baf562b4ed8a78 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 20 Nov 2022 16:45:55 -0400 Subject: [PATCH 014/109] Update Home Page components --- src/components/Background.js | 2 - src/components/Container.js | 14 ++-- src/components/HomeComponents/InfoCard.js | 65 +++++++++++++++++++ .../styled-components/styles.js | 16 +++++ src/components/NavBar.js | 4 +- src/components/StatusBar.js | 18 +++++ src/components/styled-components/styles.js | 23 +++++++ src/pages/Main/HomePage.js | 40 +++++++++++- src/styled-components/colors.js | 8 ++- 9 files changed, 179 insertions(+), 11 deletions(-) create mode 100644 src/components/HomeComponents/InfoCard.js create mode 100644 src/components/HomeComponents/styled-components/styles.js create mode 100644 src/components/StatusBar.js create mode 100644 src/components/styled-components/styles.js diff --git a/src/components/Background.js b/src/components/Background.js index 98d1aaa..0d7e13d 100644 --- a/src/components/Background.js +++ b/src/components/Background.js @@ -2,8 +2,6 @@ import React from 'react' import { View, StyleSheet } from 'react-native' import Svg, { Defs, Rect, LinearGradient, Stop } from 'react-native-svg' -import colors from '../styled-components/colors'; - const Background = ({ topColor, bottomColor, children }) => { return ( diff --git a/src/components/Container.js b/src/components/Container.js index 81aec42..865b70a 100644 --- a/src/components/Container.js +++ b/src/components/Container.js @@ -3,16 +3,20 @@ import { ScrollView } from 'react-native' import colors from '../styled-components/colors' import NavBar from './NavBar' import Background from './Background' +import styles from './styled-components/styles' +import StatusBar from './StatusBar' -const Container = ({ navigation, children }) => { +const Container = ({ statusBarStyle, statusBarColor, hiddenStatusBar, children }) => { return ( + ) diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 5cbf91a..4b940e2 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -52,6 +52,13 @@ const colors = { }, divider: { primary: '#48CBC5' + }, + notification: { + backgroundColor: 'white', + active: 'rgba(72, 203, 197, 1)', + inactive: '#6B6D79', + textActive: 'black', + textInactive: '#6B6D79' } } diff --git a/src/utilities/functions.js b/src/utilities/functions.js index ddeb523..8c8ef07 100644 --- a/src/utilities/functions.js +++ b/src/utilities/functions.js @@ -43,7 +43,7 @@ const getHour = (date) => { try { let hourData = date.split('T')[1] hourData = hourData.split(':') - + let hour = Number(hourData[0]) let minute = Number(hourData[1]) @@ -59,6 +59,37 @@ const getHour = (date) => { } } +const getDate = (date) => { + + try { + + const months = [ + 'Enero', 'Febrero', 'Marzo', + 'Abril', 'Mayo', 'Junio', + 'Julio', 'Agosto', 'Septiembre', + 'Octubre', 'Noviembre', 'Diciembre' + ] + + const days = [ + 'Lunes', 'Martes', 'Miércoles', 'Jueves', + 'Viernes', 'Sábado', 'Domingo' + ] + + const d = new Date(date) + + return { + dayWeek: days[d.getDay()], + day: d.getDate() + 1, + month: months[d.getMonth()].toLowerCase(), + year: d.getFullYear() + } + + } catch (error) { + console.log(`Error trying to get date: ${error}`) + return null + } +} + module.exports = { emailValidator, passwordValidator, @@ -66,4 +97,5 @@ module.exports = { cutText, formatDate, getHour, + getDate, } \ No newline at end of file From 9a7c328b77582a9e9221da7f255bc9ce1c3ac14c Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 22 Jan 2023 20:57:05 -0400 Subject: [PATCH 046/109] Update select roster page --- .../CreoleBallsComponents/CreoleGameCard.js | 163 ++++++----- .../CreoleBallsComponents/RosterTeam.js | 121 ++++++++ src/components/LoginComponents/LoginForm.js | 3 +- src/hooks/useCustomToast.js | 6 +- src/navigation/BottomNavigation.js | 1 + src/navigation/LoginBottomNavigation.js | 3 +- src/navigation/StackNavigation.js | 104 +++---- src/pages/CreoleBalls/CreoleBallsListPage.js | 41 ++- .../CreoleBalls/CreoleBallsTournamentPage.js | 19 -- src/pages/CreoleBalls/PlayerRoster.js | 266 ++++++++++++++++++ src/pages/Main/HomePage.js | 65 ++++- src/pages/Main/NotificationPage.js | 15 +- src/pages/Main/PostPage.js | 211 +++++++++++++- src/styled-components/colors.js | 14 +- 14 files changed, 861 insertions(+), 171 deletions(-) create mode 100644 src/components/CreoleBallsComponents/RosterTeam.js create mode 100644 src/pages/CreoleBalls/PlayerRoster.js diff --git a/src/components/CreoleBallsComponents/CreoleGameCard.js b/src/components/CreoleBallsComponents/CreoleGameCard.js index 3be64e6..59cc493 100644 --- a/src/components/CreoleBallsComponents/CreoleGameCard.js +++ b/src/components/CreoleBallsComponents/CreoleGameCard.js @@ -1,6 +1,6 @@ import React from 'react' import { Box, HStack, Stack, VStack, Text, Divider } from 'native-base' -import { useWindowDimensions } from 'react-native' +import { TouchableOpacity, useWindowDimensions } from 'react-native' import colors from '../../styled-components/colors' const CreoleGameCard = ({ navigation, id, title, teamA, teamB }) => { @@ -15,89 +15,102 @@ const CreoleGameCard = ({ navigation, id, title, teamA, teamB }) => { shadow={1} minH={130} > - { + navigation?.navigate('PlayerRoster', { + id: id, + title: title, + teamA: teamA, + teamB: teamB, + }) + console.log(`Game ID: ${id} pressed...`) + }} > - - - - Juego N°{id} - - - - - + - - 0 - - - {teamA} - - - - + + + - - 0 - - + 0 + + + {teamA} + + + + - {teamB} - - - - - - - + 0 + + + {teamB} + + + + + + - El juego no ha finalizado... - - - + + El juego no ha finalizado... + + + + ) } diff --git a/src/components/CreoleBallsComponents/RosterTeam.js b/src/components/CreoleBallsComponents/RosterTeam.js new file mode 100644 index 0000000..8a3e265 --- /dev/null +++ b/src/components/CreoleBallsComponents/RosterTeam.js @@ -0,0 +1,121 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' +import { VStack, Text, Box, HStack, FlatList } from 'native-base' + +import Icon from 'react-native-vector-icons/Ionicons' + +import colors from '../../styled-components/colors' + +const RosterTeam = ({ id = 0, teamID = 0, name = '', team = [], roster = [], setRoster, add, remove, r }) => { + + const layout = useWindowDimensions() + + const [checked, setChecked] = useState(false) + + const renderItem = ({ item }) => { + return ( + { + setChecked(!checked) + + if (roster.some(member => member.name === item.name)) { + remove(item) + } else { + add(item) + } + }} + disabled={!roster.some(member => member.id === item.id) && roster.length >= 8} + > + member.id === item.id) && roster.length >= 8 ? 0.5 : 1} + > + member.id === item.id) ? + colors.creoleRoster.checkboxColor : !roster.some(member => member.id === item.id) && roster.length >= 8 ? + colors.creoleRoster.checkboxInactiveBorderColor : + colors.creoleRoster.checkboxBackgroundColor + } + borderWidth={2} + borderRadius={2} + borderColor={ + roster.some(member => member.id === item.id) ? + colors.creoleRoster.checkboxColor : + colors.creoleRoster.checkboxInactiveBorderColor + } + alignItems='center' + > + {roster.some(member => member.id === item.id) && + + } + + member.id === item.id) && roster.length >= 8} + color={roster.some(member => member.id === item.id) ? + colors.creoleRoster.checkboxColor : + colors.creoleRoster.textColor} + > + {item.name} + + + + ) + } + + return ( + + + + Equipo {id}: + + + {name} + + + + + item?.id} + renderItem={renderItem} + /> + + + ) +} + +export default RosterTeam \ No newline at end of file diff --git a/src/components/LoginComponents/LoginForm.js b/src/components/LoginComponents/LoginForm.js index 515f0a7..072513c 100644 --- a/src/components/LoginComponents/LoginForm.js +++ b/src/components/LoginComponents/LoginForm.js @@ -40,7 +40,7 @@ import StyledLink from '../Link' const LoginForm = ({ navigation }) => { - const { showErrorToast } = useCustomToast() + const { showSuccessToast, showErrorToast } = useCustomToast() const { isLoading, startLoading, stopLoading } = useLoading() const { dispatch } = useAuthContext() @@ -69,6 +69,7 @@ const LoginForm = ({ navigation }) => { const token = '1253642' if (token) { + showSuccessToast('¡Bienvenido!') setSession(response.id, token) dispatch({ type: 'LOGIN', diff --git a/src/hooks/useCustomToast.js b/src/hooks/useCustomToast.js index 484d125..b3b97b7 100644 --- a/src/hooks/useCustomToast.js +++ b/src/hooks/useCustomToast.js @@ -5,7 +5,7 @@ import colors from '../styled-components/colors' const { width } = Dimensions.get('window') -const Toast = ({ id, text = 'r', color = colors.primary, bgColor = colors.secundary}) => ( +const Toast = ({ id = 0, text = 'Hello World!', color = colors.primary, bgColor = colors.secundary}) => ( diff --git a/src/navigation/BottomNavigation.js b/src/navigation/BottomNavigation.js index 3189f37..ecd60a0 100644 --- a/src/navigation/BottomNavigation.js +++ b/src/navigation/BottomNavigation.js @@ -81,6 +81,7 @@ const BottomNavigation = () => { return ( { return ( { }} > {bottomRoutes - .map(({ name, component, Icon }) => ( + .map(({ name, component, Icon }) => ( { const { state: { isAuthenticated }, } = useAuthContext() + const stackRoutes = [ + { + name: 'Login', + component: LoginBottomNavigation, + requireAuth: false, + options: { + headerShown: false, + } + }, + { + name: 'SignIn', + component: BottomNavigation, + requireAuth: true, + options: { + headerShown: false, + } + }, + + { + name: 'EventPage', + component: EventPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + + { + name: 'CreoleBallsTournamentPage', + component: CreoleBallsTournamentPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + + { + name: 'CreoleBallsListPage', + component: CreoleBallsListPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + { + name: 'PlayerRoster', + component: PlayerRoster, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + + + ] + return ( { justifyContent='space-between' > - + + navigation?.goBack()} + > + + + + + {tournament.title} - + {events?.length > 0 || !isLoading ? ( { > )} @@ -157,14 +178,12 @@ const CreoleBallsListPage = ({ navigation, route }) => { bgColor={colors.divider.primary} borderRadius={50} /> - + + diff --git a/src/pages/CreoleBalls/CreoleBallsTournamentPage.js b/src/pages/CreoleBalls/CreoleBallsTournamentPage.js index 49ce18b..48e1fe0 100644 --- a/src/pages/CreoleBalls/CreoleBallsTournamentPage.js +++ b/src/pages/CreoleBalls/CreoleBallsTournamentPage.js @@ -279,25 +279,6 @@ const CreoleBallsTournamentPage = ({ navigation, route }) => { - - { - console.log(`Share button is pressed`) - }} - > - - - - { + switch (action.type) { + case 'ADD_MEMBER': + return [...state, action.payload] + case 'REMOVE_MEMBER': + return action.payload + default: return state + } +} + +const firstRosterReducer = (state, action) => { + switch (action.type) { + case 'ADD_MEMBER': + return [...state, action.payload] + case 'REMOVE_MEMBER': + return action.payload + default: return state + } +} + +const secondRosterReducer = (state, action) => { + switch (action.type) { + case 'ADD_MEMBER': + return [...state, action.payload] + case 'REMOVE_MEMBER': + return action.payload + default: return state + } +} + +const PlayerRoster = ({ navigation, route }) => { + + const game = route?.params + + const layout = useWindowDimensions() + + const [firstRoster, firstDispatch] = useReducer(firstRosterReducer, []) + const [secondRoster, secondDispatch] = useReducer(secondRosterReducer, []) + + const addFirstRoster = (player) => { + firstDispatch({ + type: 'ADD_MEMBER', + payload: player + }) + } + + const removeFirstRoster = (player) => { + firstDispatch({ + type: 'REMOVE_MEMBER', + payload: firstRoster.filter(member => member.id !== player.id) + }) + } + + const addSecondRoster = (player) => { + secondDispatch({ + type: 'ADD_MEMBER', + payload: player + }) + } + + const removeSecondRoster = (player) => { + secondDispatch({ + type: 'REMOVE_MEMBER', + payload: secondRoster.filter(member => member.id !== player.id) + }) + } + + const [firstTeam, setFirstTeam] = useState([ + { + id: 1, + name: 'Alberto Alvarez' + }, + { + id: 2, + name: 'Gonzalo Gonzalaz' + }, + { + id: 3, + name: 'Pedro Pérez' + }, + { + id: 4, + name: 'Ricardo Rodríguez' + }, + { + id: 5, + name: 'William Pérez' + }, + { + id: 6, + name: 'Luis Lares' + }, + { + id: 7, + name: 'Andrés Corrales' + }, + { + id: 8, + name: 'Félix Rivas' + } + ]) + const [secondTeam, setSecondTeam] = useState([ + { + id: 1, + name: 'Cristiano Ronaldo' + }, + { + id: 2, + name: 'Lionel Messi' + }, + { + id: 3, + name: 'Salomón Rondón' + }, + { + id: 4, + name: 'Kun Agüero' + }, + { + id: 5, + name: 'Iker Casillas' + }, + { + id: 6, + name: 'Manuel Neuer' + }, + { + id: 7, + name: 'Tony Kross' + }, + { + id: 8, + name: 'Luis Suárez' + }, + { + id: 9, + name: 'David Beckham' + }, + { + id: 10, + name: 'Adrián Anzola' + }, + ]) + + return ( + + + + + + navigation?.goBack()} + > + + + + + + + {game.title} + + + + + + + + + + + + + + + + + + ) +} + +export default PlayerRoster \ No newline at end of file diff --git a/src/pages/Main/HomePage.js b/src/pages/Main/HomePage.js index 63b218a..36ce14b 100644 --- a/src/pages/Main/HomePage.js +++ b/src/pages/Main/HomePage.js @@ -15,6 +15,7 @@ import NotFound from '../../components/NotFound' import { getEvents } from '../../services/events/EventsService' import { formatDate, getHour } from '../../utilities/functions' +import useCustomToast from '../../hooks/useCustomToast' const HomePage = ({ navigation }) => { @@ -31,6 +32,67 @@ const HomePage = ({ navigation }) => { const layout = useWindowDimensions() + const { showErrorToast } = useCustomToast() + + const data = [ + { + id: 0, + nombre: 'Torneo de voleibol', + descripcion: 'Sábado 26 de noviembre', + tipo: 'N', + creado: '2023-01-22T03:24:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector D', + }, + image: 'https://imagenes.elpais.com/resizer/L-x86NTaSVVBr9YZnnn1driudPw=/980x0/cloudfront-eu-central-1.images.arcpublishing.com/prisa/CNK6AU3UNFB2REUA4VXS233FKE.jpg' + }, + { + id: 1, + nombre: 'Juegos interclub', + descripcion: 'del 01 al 07 de diciembre', + tipo: 'N', + creado: '2023-02-14T03:24:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector B', + }, + image: 'https://warwick.ac.uk/services/sport/find-your-active.jpg' + }, + { + id: 2, + nombre: 'Torneo de bolas criollas', + descripcion: 'Viernes 09 de diciembre', + tipo: 'D', + creado: '2023-05-22T16:34:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector C', + }, + image: 'https://http2.mlstatic.com/D_NQ_NP_655547-MLV25593228224_052017-O.webp' + }, + { + id: 3, + nombre: 'Torneo de dominó', + descripcion: 'Martes 12 de diciembre', + tipo: 'D', + creado: '2023-12-12T16:34:00', + instalacion: { + nombre: 'Área de caneys', + }, + area: { + nombre: 'Sector A', + }, + image: 'https://patasdegallo.com/wp-content/uploads/2016/12/capacidad-mental.jpg' + }, + ] + const onRefresh = useCallback(() => { setIsNextPage(true) setCurrentPage(1) @@ -60,6 +122,7 @@ const HomePage = ({ navigation }) => { }) .catch(error => { console.log(`Event error: ${error}`) + setEvents(data) }) .finally(() => { stopLoading() @@ -91,7 +154,7 @@ const HomePage = ({ navigation }) => { description={item?.descripcion || ""} location={item?.instalacion?.nombre || ""} area={item?.area?.nombre || ""} - image={`https://medinajosedev.com/storage/${item?.imagen_principal}` || ""} + image={item?.image /*`https://medinajosedev.com/storage/${item?.imagen_principal}` || ""*/} navigation={navigation} /> diff --git a/src/pages/Main/NotificationPage.js b/src/pages/Main/NotificationPage.js index a4eb4fc..43dff2b 100644 --- a/src/pages/Main/NotificationPage.js +++ b/src/pages/Main/NotificationPage.js @@ -63,7 +63,7 @@ const NotificationPage = ({ navigation }) => { const { isLoading, startLoading, stopLoading } = useLoading() - const [events, setEvents] = useState(started) + const [notification, setEvents] = useState(started) const [currentPage, setCurrentPage] = useState(1) const [isNextPage, setIsNextPage] = useState(true) const [refreshing, setRefreshing] = useState(false) @@ -82,7 +82,7 @@ const NotificationPage = ({ navigation }) => { if (isNextPage) { startLoading() - +/* getEvents(currentPage) .then(res => { const { data, status } = res @@ -91,10 +91,10 @@ const NotificationPage = ({ navigation }) => { console.log(data?.data?.data) - console.log(events) + console.log(notification) setIsNextPage(data?.links?.next ? true : false) - console.log(`Events: ${events}`) + console.log(`Events: ${notification}`) console.log(`Next page: ${isNextPage}`) }) .catch(error => { @@ -103,6 +103,7 @@ const NotificationPage = ({ navigation }) => { .finally(() => { stopLoading() }) + */ } @@ -154,11 +155,11 @@ const NotificationPage = ({ navigation }) => { py={2} alignItems='center' > - {!events || events?.length === 0 ? ( + {!notification || notification?.length === 0 ? ( - ) : events?.length > 0 || !isLoading ? ( + ) : notification?.length > 0 || !isLoading ? ( { /> } showsVerticalScrollIndicator={false} - data={events} + data={notification} minW={layout.width} maxH={layout.height * .85} keyExtractor={item => item?.id} diff --git a/src/pages/Main/PostPage.js b/src/pages/Main/PostPage.js index 42190f6..70d222a 100644 --- a/src/pages/Main/PostPage.js +++ b/src/pages/Main/PostPage.js @@ -1,15 +1,218 @@ -import React from 'react' -import { VStack } from 'native-base' +import React, { useCallback, useState } from 'react' +import { ActivityIndicator, useWindowDimensions, RefreshControl } from 'react-native' + +import { useFocusEffect } from '@react-navigation/native' +import { FlatList, Stack, Text, VStack } from 'native-base' + import Container from '../../components/Container' +import InfoCard from '../../components/HomeComponents/InfoCard' +import useLoading from '../../hooks/useLoading' + + +import colors from '../../styled-components/colors' + +import NotFound from '../../components/NotFound' + +import { getEvents } from '../../services/events/EventsService' + +import { formatDate, getHour } from '../../utilities/functions' +import useCustomToast from '../../hooks/useCustomToast' const PostPage = ({ navigation }) => { + const wait = (timeOut) => { + return new Promise(resolve => setTimeout(resolve, timeOut)) + } + + const { isLoading, startLoading, stopLoading } = useLoading() + + const [events, setEvents] = useState(null) + const [currentPage, setCurrentPage] = useState(1) + const [isNextPage, setIsNextPage] = useState(true) + const [refreshing, setRefreshing] = useState(false) + + const layout = useWindowDimensions() + + const { showErrorToast } = useCustomToast() + + const data = [ + { + id: 0, + nombre: 'Torneo de dominó', + descripcion: 'Sábado 26 de noviembre', + tipo: 'D', + creado: '2023-01-22T03:24:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector D', + }, + image: 'https://patasdegallo.com/wp-content/uploads/2016/12/capacidad-mental.jpg' + }, + { + id: 1, + nombre: 'Juegos de bolas criollas', + descripcion: 'del 01 al 07 de diciembre', + tipo: 'D', + creado: '2023-02-14T03:24:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector B', + }, + image: 'https://http2.mlstatic.com/D_NQ_NP_655547-MLV25593228224_052017-O.webp' + }, + { + id: 2, + nombre: 'Torneo de bolas criollas en playa asiática', + descripcion: 'Viernes 09 de diciembre', + tipo: 'D', + creado: '2023-05-22T16:34:00', + instalacion: { + nombre: 'Área de deportes', + }, + area: { + nombre: 'Sector C', + }, + image: 'https://http2.mlstatic.com/D_NQ_NP_655547-MLV25593228224_052017-O.webp' + }, + { + id: 3, + nombre: 'Torneo de dominó', + descripcion: 'Martes 12 de diciembre', + tipo: 'D', + creado: '2023-12-12T16:34:00', + instalacion: { + nombre: 'Área de caneys', + }, + area: { + nombre: 'Sector A', + }, + image: 'https://patasdegallo.com/wp-content/uploads/2016/12/capacidad-mental.jpg' + }, + ] + + const onRefresh = useCallback(() => { + setIsNextPage(true) + setCurrentPage(1) + setRefreshing(true) + wait(2000).then(() => setRefreshing(false)) + }, []) + + const getData = () => { + + if (isNextPage) { + + startLoading() + + getEvents(currentPage) + .then(res => { + const { data, status } = res + + setEvents(status === 200 ? data?.data?.data : []) + + console.log(data?.data?.data) + + console.log(events) + + setIsNextPage(data?.links?.next ? true : false) + console.log(`Events: ${events}`) + console.log(`Next page: ${isNextPage}`) + }) + .catch(error => { + console.log(`Event error: ${error}`) + setEvents(data) + }) + .finally(() => { + stopLoading() + }) + + } + + } + + useFocusEffect( + useCallback(() => { + getData() + }, [currentPage]) + ) + + const renderItem = ({ item }) => { + + return ( + + + + ) + } + + const renderLoader = () => { + return ( + isLoading && + + + + ) + } + + const loadMoreItem = () => { + setCurrentPage(currentPage + 1) + } + return ( - + {!events || events?.length === 0 ? ( + + ) : events?.length > 0 || !isLoading ? ( + + } + showsVerticalScrollIndicator={false} + data={events} + maxH={layout.height * .80} + keyExtractor={item => item?.id} + renderItem={renderItem} + ListFooterComponent={renderLoader} + onEndReached={loadMoreItem} + /> + ) : ( + + + + )} ) diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 4b940e2..d76d543 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -7,6 +7,7 @@ const colors = { white: '#ffffff', gray: '#6B6D79', gray1: '#ecf0f3', + gray2: '#d4d4d8', error: { primary: '#d95f5f', secondary: '#f52556', @@ -54,11 +55,20 @@ const colors = { primary: '#48CBC5' }, notification: { - backgroundColor: 'white', + backgroundColor: '#FFFFFF', active: 'rgba(72, 203, 197, 1)', inactive: '#6B6D79', - textActive: 'black', + textActive: '#000000', textInactive: '#6B6D79' + }, + creoleRoster: { + backgroundColor: '#ECF0F3', + checkboxColor: '#48CBC5', + checkboxBackgroundColor: '#FFFFFF', + checkboxInactiveBorderColor: '#6B6D79', + textColor: '#6B6D79', + titleTextColor: '#48CBC5', + teamTextColor: '#6B6D79' } } From 84cf25ba2db3e4f085ee0a80c7f40de84cad4209 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Mon, 23 Jan 2023 21:04:33 -0400 Subject: [PATCH 047/109] Update --- src/components/HomeComponents/InfoCard.js | 16 +- src/navigation/StackNavigation.js | 9 + .../CreoleBalls/CreoleBallsTournamentPage.js | 3 +- src/pages/CreoleBalls/PlayerRoster.js | 14 +- src/pages/CreoleBalls/StartedGamePage.js | 355 ++++++++++++++++++ src/pages/Events/EventPage.js | 21 +- src/pages/Main/CalendarPage.js | 4 +- src/pages/Main/HomePage.js | 9 +- src/pages/Main/PostPage.js | 10 +- src/styled-components/colors.js | 11 +- src/utilities/functions.js | 6 +- 11 files changed, 419 insertions(+), 39 deletions(-) create mode 100644 src/pages/CreoleBalls/StartedGamePage.js diff --git a/src/components/HomeComponents/InfoCard.js b/src/components/HomeComponents/InfoCard.js index 88fb556..a93e6b6 100644 --- a/src/components/HomeComponents/InfoCard.js +++ b/src/components/HomeComponents/InfoCard.js @@ -9,7 +9,7 @@ import colors from '../../styled-components/colors' import styles from './styled-components/styles' -const InfoCard = ({ navigation, id = 0, type = 3, title = '', date = '', hour = '', location = '', area = '', description = '', image = '' }) => { +const InfoCard = ({ navigation, id = 0, type = 3, title = '', date = '', hour = '', location = '', area = '', description = '', image = '', tournament = null }) => { return ( { + if (type === 'B') + navigation?.navigate('CreoleBallsTournamentPage', { + id: id, + type: type, + title: title, + date: date, + hour: hour, + location: location, + area: area, + description: description, + image: image, + tournament: tournament + }) if (type === 'D') navigation?.navigate('CreoleBallsTournamentPage', { id: id, @@ -33,6 +46,7 @@ const InfoCard = ({ navigation, id = 0, type = 3, title = '', date = '', hour = area: area, description: description, image: image, + tournament: tournament }) if (type === 'N') navigation?.navigate('EventPage', { diff --git a/src/navigation/StackNavigation.js b/src/navigation/StackNavigation.js index 57f7983..f33a3af 100644 --- a/src/navigation/StackNavigation.js +++ b/src/navigation/StackNavigation.js @@ -11,6 +11,7 @@ import styles from './styled-components/styles' import CreoleBallsTournamentPage from '../pages/CreoleBalls/CreoleBallsTournamentPage' import CreoleBallsListPage from '../pages/CreoleBalls/CreoleBallsListPage' import PlayerRoster from '../pages/CreoleBalls/PlayerRoster' +import StartedGamePage from '../pages/CreoleBalls/StartedGamePage' const Stack = createNativeStackNavigator() @@ -72,6 +73,14 @@ const StackNavigation = () => { headerShown: false, } }, + { + name: 'StartedGamePage', + component: StartedGamePage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, ] diff --git a/src/pages/CreoleBalls/CreoleBallsTournamentPage.js b/src/pages/CreoleBalls/CreoleBallsTournamentPage.js index 48e1fe0..668d341 100644 --- a/src/pages/CreoleBalls/CreoleBallsTournamentPage.js +++ b/src/pages/CreoleBalls/CreoleBallsTournamentPage.js @@ -286,6 +286,7 @@ const CreoleBallsTournamentPage = ({ navigation, route }) => { openDelay={200} > { console.log(`Game list button is pressed`) navigation?.navigate('CreoleBallsListPage', { @@ -303,7 +304,7 @@ const CreoleBallsTournamentPage = ({ navigation, route }) => { > diff --git a/src/pages/CreoleBalls/PlayerRoster.js b/src/pages/CreoleBalls/PlayerRoster.js index 50446fb..bd521ab 100644 --- a/src/pages/CreoleBalls/PlayerRoster.js +++ b/src/pages/CreoleBalls/PlayerRoster.js @@ -74,6 +74,8 @@ const PlayerRoster = ({ navigation, route }) => { }) } + const [teamA, setTeamA] = useState('Apucla') + const [firstTeam, setFirstTeam] = useState([ { id: 1, @@ -108,6 +110,8 @@ const PlayerRoster = ({ navigation, route }) => { name: 'Félix Rivas' } ]) + + const [teamB, setTeamB] = useState('DCyTeam') const [secondTeam, setSecondTeam] = useState([ { id: 1, @@ -198,7 +202,7 @@ const PlayerRoster = ({ navigation, route }) => { { { disabled={firstRoster.length !== 8 || secondRoster.length !== 8} onPress={() => { console.log('Is pressed') + navigation?.navigate('StartedGamePage', { + teamA: teamA, + teamB: teamB, + rosterA: firstRoster, + rosterB: secondRoster + }) }} > { + + const layout = useWindowDimensions() + + const game = route?.params + + const [coinPressed, setCoinPressed] = useState(false) + const [shoot, setShoot] = useState(false) + const [coinTeam, setCoinTeam] = useState(false) + + const coinThrow = () => { + + const throws = Math.round(Math.random() * 6) + setShoot(true) + setCoinPressed(true) + + const coinShoot = setInterval(() => + setCoinTeam(Math.random() < .5 ? true : false) + , throws * 100) + + setTimeout(() => { + clearInterval(coinShoot) + setCoinPressed(false) + }, throws * 500) + + } + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + 0 + + + + + + 0 + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + ¿Quién comienza el juego? + + + + + + { + setShoot(true) + setCoinTeam(true) + }} + disabled={coinPressed} + > + + + + + + {game.teamA} + + + + + { + setShoot(true) + setCoinTeam(false) + }} + disabled={coinPressed} + > + + + + + + {game.teamB} + + + + + + + + + + o + + + + + + + + + {shoot && + + {coinTeam ? game.teamA : game.teamB} + + } + + + + + + ) +} + +export default StartedGamePage \ No newline at end of file diff --git a/src/pages/Events/EventPage.js b/src/pages/Events/EventPage.js index a8a695e..15f094c 100644 --- a/src/pages/Events/EventPage.js +++ b/src/pages/Events/EventPage.js @@ -200,28 +200,9 @@ const EventPage = ({ navigation, route }) => { w={layout.width} h={12} px={10} - justifyContent='space-between' + justifyContent='flex-end' alignItems='center' > - - { - console.log(`Share button is pressed`) - }} - > - - - - + + + + + ) +} + +export default ColorTeamPage \ No newline at end of file diff --git a/src/pages/CreoleBalls/CreoleBallsListPage.js b/src/pages/CreoleBalls/CreoleBallsListPage.js index e2b9513..c9c6a30 100644 --- a/src/pages/CreoleBalls/CreoleBallsListPage.js +++ b/src/pages/CreoleBalls/CreoleBallsListPage.js @@ -16,38 +16,38 @@ const games = [ { id: 1, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'Apucla', + teamB: 'DCyTeam' }, { id: 2, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'Agronórmicos', + teamB: 'Ballysteam' }, { id: 3, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'UCLArt', + teamB: 'Econiteam' }, { id: 4, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'Criomed', + teamB: 'Conteam' }, { id: 5, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'Tetrateam', + teamB: 'CEDYTeam' }, { id: 6, date: '01/12/2022', - teamA: 'Equipo 1', - teamB: 'Equipo 2' + teamA: 'Anteam', + teamB: 'Osys' }, ] diff --git a/src/pages/CreoleBalls/PlayTeamAPage.js b/src/pages/CreoleBalls/PlayTeamAPage.js new file mode 100644 index 0000000..f76a729 --- /dev/null +++ b/src/pages/CreoleBalls/PlayTeamAPage.js @@ -0,0 +1,351 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' + +import { VStack, HStack, Stack, Text, Divider, Box, Button, ScrollView, FlatList } from 'native-base' +import Icon from 'react-native-vector-icons/Ionicons' + +import Container from '../../components/Container' +import colors from '../../styled-components/colors' + +const PlayerTeam = ({ item }) => { + + return ( + + + + + + {item.name} + + + + + + ) +} + +const PlayTeamAPage = ({ navigation, route }) => { + + const layout = useWindowDimensions() + + const game = route?.params + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + 0 + + + + + + 0 + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + + + + + + + {game?.selectedTeam} + + + + + + + + item?.id} + renderItem={PlayerTeam} + /> + + + + + + + + + + + + + + + + + + ) +} + +export default PlayTeamAPage \ No newline at end of file diff --git a/src/pages/CreoleBalls/PlayTeamBPage.js b/src/pages/CreoleBalls/PlayTeamBPage.js new file mode 100644 index 0000000..36705df --- /dev/null +++ b/src/pages/CreoleBalls/PlayTeamBPage.js @@ -0,0 +1,351 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' + +import { VStack, HStack, Stack, Text, Divider, Box, Button, ScrollView, FlatList } from 'native-base' +import Icon from 'react-native-vector-icons/Ionicons' + +import Container from '../../components/Container' +import colors from '../../styled-components/colors' + +const PlayerTeam = ({ item }) => { + + return ( + + + + + + {item.name} + + + + + + ) +} + +const PlayTeamBPage = ({ navigation, route }) => { + + const layout = useWindowDimensions() + + const game = route?.params + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + 0 + + + + + + 0 + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + + + + + + + {game?.selectedTeam} + + + + + + + + item?.id} + renderItem={PlayerTeam} + /> + + + + + + + + + + + + + + + + + + ) +} + +export default PlayTeamBPage \ No newline at end of file diff --git a/src/pages/CreoleBalls/PlayerRoster.js b/src/pages/CreoleBalls/PlayerRoster.js index bd521ab..ea81fbc 100644 --- a/src/pages/CreoleBalls/PlayerRoster.js +++ b/src/pages/CreoleBalls/PlayerRoster.js @@ -74,7 +74,7 @@ const PlayerRoster = ({ navigation, route }) => { }) } - const [teamA, setTeamA] = useState('Apucla') + const [teamA, setTeamA] = useState(game?.teamA || '') const [firstTeam, setFirstTeam] = useState([ { @@ -111,7 +111,7 @@ const PlayerRoster = ({ navigation, route }) => { } ]) - const [teamB, setTeamB] = useState('DCyTeam') + const [teamB, setTeamB] = useState(game?.teamB || '') const [secondTeam, setSecondTeam] = useState([ { id: 1, diff --git a/src/pages/CreoleBalls/StartedGamePage.js b/src/pages/CreoleBalls/StartedGamePage.js index 5148a03..9bfce88 100644 --- a/src/pages/CreoleBalls/StartedGamePage.js +++ b/src/pages/CreoleBalls/StartedGamePage.js @@ -30,6 +30,16 @@ const StartedGamePage = ({ navigation, route }) => { setTimeout(() => { clearInterval(coinShoot) setCoinPressed(false) + setTimeout(() => { + navigation?.navigate('ColorTeamPage', { + selectedTeam: coinTeam ? game?.teamA : game?.teamB, + initialTeam: coinTeam ? game?.teamA : game?.teamB, + teamA: game?.teamA, + teamB: game?.teamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) + }, 5000) }, throws * 500) } @@ -124,7 +134,7 @@ const StartedGamePage = ({ navigation, route }) => { {`${game?.teamA.slice(0, 3).toUpperCase()}`} @@ -153,7 +163,7 @@ const StartedGamePage = ({ navigation, route }) => { {`${game?.teamB.slice(0, 3).toUpperCase()}`} @@ -276,17 +286,24 @@ const StartedGamePage = ({ navigation, route }) => { shadow={3} justifyContent='center' alignItems='center' - bgColor={!coinPressed ? colors.button.bgPrimary : colors.gray} + bgColor={!coinPressed && shoot ? colors.button.bgPrimary : colors.gray2} _pressed={colors.bgSecondary} onPress={() => { - console.log('Select team') + navigation?.navigate('ColorTeamPage', { + selectedTeam: coinTeam ? game?.teamA : game?.teamB, + initialTeam: coinTeam ? game?.teamA : game?.teamB, + teamA: game?.teamA, + teamB: game?.teamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) }} - disabled={coinPressed} + disabled={coinPressed || !shoot} > Comenzar con selección @@ -306,14 +323,14 @@ const StartedGamePage = ({ navigation, route }) => { shadow={3} justifyContent='center' alignItems='center' - bgColor={!coinPressed ? colors.button.bgPrimary : colors.gray} + bgColor={!coinPressed ? colors.button.bgPrimary : colors.gray2} onPress={() => coinThrow()} disabled={coinPressed} > Lanzar la moneda diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 5c30cdb..d21bdb9 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -8,6 +8,7 @@ const colors = { gray: '#6B6D79', gray1: '#ecf0f3', gray2: '#d4d4d8', + gray3: '#ECF0F3', error: { primary: '#d95f5f', secondary: '#f52556', From b173c828b68dd2e83866ee4f8a6b61f7b64811e4 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Tue, 24 Jan 2023 22:31:01 -0400 Subject: [PATCH 050/109] Update --- src/navigation/StackNavigation.js | 9 + src/pages/CreoleBalls/PlayTeamAPage.js | 92 +-- src/pages/CreoleBalls/PlayTeamBPage.js | 92 +-- src/pages/CreoleBalls/PlayerRoster.js | 80 +-- src/pages/CreoleBalls/PlayerShootDataPage.js | 662 +++++++++++++++++++ src/pages/CreoleBalls/StartedGamePage.js | 30 +- src/pages/CreoleBalls/data/teamA.js | 522 +++++++++++++++ src/pages/CreoleBalls/data/teamB.js | 418 ++++++++++++ src/styled-components/colors.js | 3 +- 9 files changed, 1734 insertions(+), 174 deletions(-) create mode 100644 src/pages/CreoleBalls/PlayerShootDataPage.js create mode 100644 src/pages/CreoleBalls/data/teamA.js create mode 100644 src/pages/CreoleBalls/data/teamB.js diff --git a/src/navigation/StackNavigation.js b/src/navigation/StackNavigation.js index 206de3c..1198697 100644 --- a/src/navigation/StackNavigation.js +++ b/src/navigation/StackNavigation.js @@ -15,6 +15,7 @@ import StartedGamePage from '../pages/CreoleBalls/StartedGamePage' import ColorTeamPage from '../pages/CreoleBalls/ColorTeamPage' import PlayTeamAPage from '../pages/CreoleBalls/PlayTeamAPage' import PlayTeamBPage from '../pages/CreoleBalls/PlayTeamBPage' +import PlayerShootDataPage from '../pages/CreoleBalls/PlayerShootDataPage' const Stack = createNativeStackNavigator() @@ -108,6 +109,14 @@ const StackNavigation = () => { headerShown: false, } }, + { + name: 'PlayerShootDataPage', + component: PlayerShootDataPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, ] diff --git a/src/pages/CreoleBalls/PlayTeamAPage.js b/src/pages/CreoleBalls/PlayTeamAPage.js index f76a729..a054473 100644 --- a/src/pages/CreoleBalls/PlayTeamAPage.js +++ b/src/pages/CreoleBalls/PlayTeamAPage.js @@ -7,47 +7,6 @@ import Icon from 'react-native-vector-icons/Ionicons' import Container from '../../components/Container' import colors from '../../styled-components/colors' -const PlayerTeam = ({ item }) => { - - return ( - - - - - - {item.name} - - - - - - ) -} - const PlayTeamAPage = ({ navigation, route }) => { const layout = useWindowDimensions() @@ -237,7 +196,56 @@ const PlayTeamAPage = ({ navigation, route }) => { minH='52%' maxH='50%' keyExtractor={item => item?.id} - renderItem={PlayerTeam} + renderItem={({ item }) => + + + { + navigation?.navigate('PlayerShootDataPage', { + selectedTeam: game?.teamA === game?.selectedTeam ? game?.teamA : game?.teamB, + selectedPlayer: item.id, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) + }} + > + + + {item.name} + + + + + + } /> { - - return ( - - - - - - {item.name} - - - - - - ) -} - const PlayTeamBPage = ({ navigation, route }) => { const layout = useWindowDimensions() @@ -237,7 +196,56 @@ const PlayTeamBPage = ({ navigation, route }) => { minH='52%' maxH='50%' keyExtractor={item => item?.id} - renderItem={PlayerTeam} + renderItem={({ item }) => + + + { + navigation?.navigate('PlayerShootDataPage', { + selectedTeam: game?.teamA === game?.selectedTeam ? game?.teamA : game?.teamB, + selectedPlayer: item.id, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) + }} + > + + + {item.name} + + + + + + } /> { switch (action.type) { @@ -76,84 +78,10 @@ const PlayerRoster = ({ navigation, route }) => { const [teamA, setTeamA] = useState(game?.teamA || '') - const [firstTeam, setFirstTeam] = useState([ - { - id: 1, - name: 'Alberto Alvarez' - }, - { - id: 2, - name: 'Gonzalo Gonzalaz' - }, - { - id: 3, - name: 'Pedro Pérez' - }, - { - id: 4, - name: 'Ricardo Rodríguez' - }, - { - id: 5, - name: 'William Pérez' - }, - { - id: 6, - name: 'Luis Lares' - }, - { - id: 7, - name: 'Andrés Corrales' - }, - { - id: 8, - name: 'Félix Rivas' - } - ]) + const [firstTeam, setFirstTeam] = useState(firstTeamData || []) const [teamB, setTeamB] = useState(game?.teamB || '') - const [secondTeam, setSecondTeam] = useState([ - { - id: 1, - name: 'Cristiano Ronaldo' - }, - { - id: 2, - name: 'Lionel Messi' - }, - { - id: 3, - name: 'Salomón Rondón' - }, - { - id: 4, - name: 'Kun Agüero' - }, - { - id: 5, - name: 'Iker Casillas' - }, - { - id: 6, - name: 'Manuel Neuer' - }, - { - id: 7, - name: 'Tony Kross' - }, - { - id: 8, - name: 'Luis Suárez' - }, - { - id: 9, - name: 'David Beckham' - }, - { - id: 10, - name: 'Adrián Anzola' - }, - ]) + const [secondTeam, setSecondTeam] = useState(secondTeamData || []) return ( { + + const layout = useWindowDimensions() + + const game = route?.params + + const selectedRoster = game?.selectedTeam === game?.teamA ? game?.rosterA.find(member => member.id === game?.selectedPlayer) : game?.rosterB.find(member => member.id === game?.selectedPlayer) + + const [player, setPlayer] = useState(selectedRoster) + + const [shoot, setShoot] = useState(0) + const [firstShoot, setFirstShoot] = useState(null) + const [secondShoot, setSecondShoot] = useState(null) + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + 0 + + + + + + 0 + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + + {game?.selectedTeam === game?.teamA ? + game?.rosterA.find(member => member.id === game?.selectedPlayer).name : + game?.rosterB.find(member => member.id === game?.selectedPlayer).name + } + + + + + + + + + + Jugada realizada + + + + + + { + if (!firstShoot) { + setFirstShoot('A') + } + if (firstShoot && !secondShoot) { + setSecondShoot('A') + } + }} + > + + + A + + + + + { + if (!firstShoot) { + setFirstShoot('B') + } + if (firstShoot && !secondShoot) { + setSecondShoot('B') + } + }} + > + + + B + + + + + { + if (!firstShoot) { + setFirstShoot('M') + } + if (firstShoot && !secondShoot) { + setSecondShoot('M') + } + }} + > + + + M + + + + + + + { + if (!firstShoot) { + setFirstShoot('a') + } + if (firstShoot && !secondShoot) { + setSecondShoot('a') + } + }} + > + + + a + + + + + { + if (!firstShoot) { + setFirstShoot('b') + } + if (firstShoot && !secondShoot) { + setSecondShoot('b') + } + }} + > + + + b + + + + + { + if (!firstShoot) { + setFirstShoot('m') + } + if (firstShoot && !secondShoot) { + setSecondShoot('m') + } + }} + > + + + m + + + + + + + { + if (!firstShoot) { + setFirstShoot('N') + } + if (firstShoot && !secondShoot) { + setSecondShoot('N') + } + }} + > + + + Bola nula + + + + + { + if (!firstShoot) { + setFirstShoot('F') + } + if (firstShoot && !secondShoot) { + setSecondShoot('F') + } + }} + > + + + Mingo fuera + + + + + + + + + + Lanzamiento 1 + + + + {firstShoot === 'N' ? 'Bola nula' : firstShoot === 'F' ? 'Mingo fuera' : firstShoot} + + + + + + + Lanzamiento 2 + + + + {secondShoot === 'N' ? 'Bola nula' : secondShoot === 'F' ? 'Mingo fuera' : secondShoot} + + + + + + + + + + + + + + + + + + + + + + ) +} + +export default PlayerShootDataPage \ No newline at end of file diff --git a/src/pages/CreoleBalls/StartedGamePage.js b/src/pages/CreoleBalls/StartedGamePage.js index 9bfce88..2fdd76a 100644 --- a/src/pages/CreoleBalls/StartedGamePage.js +++ b/src/pages/CreoleBalls/StartedGamePage.js @@ -23,25 +23,29 @@ const StartedGamePage = ({ navigation, route }) => { setShoot(true) setCoinPressed(true) - const coinShoot = setInterval(() => - setCoinTeam(Math.random() < .5 ? true : false) - , throws * 100) + let coin = coinTeam + + const coinShoot = setInterval(() => { + coin = Math.random() < .5 + setCoinTeam(coin) + }, throws * 100) setTimeout(() => { clearInterval(coinShoot) setCoinPressed(false) - setTimeout(() => { - navigation?.navigate('ColorTeamPage', { - selectedTeam: coinTeam ? game?.teamA : game?.teamB, - initialTeam: coinTeam ? game?.teamA : game?.teamB, - teamA: game?.teamA, - teamB: game?.teamB, - rosterA: game?.rosterA, - rosterB: game?.rosterB, - }) - }, 5000) }, throws * 500) + setTimeout(() => { + navigation?.navigate('ColorTeamPage', { + selectedTeam: coin ? game?.teamA : game?.teamB, + initialTeam: coin ? game?.teamA : game?.teamB, + teamA: game?.teamA, + teamB: game?.teamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) + }, 5000) + } return ( diff --git a/src/pages/CreoleBalls/data/teamA.js b/src/pages/CreoleBalls/data/teamA.js new file mode 100644 index 0000000..3c4d820 --- /dev/null +++ b/src/pages/CreoleBalls/data/teamA.js @@ -0,0 +1,522 @@ +export const firstTeamData = [ + { + id: 1, + name: 'Cristiano Ronaldo', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 2, + name: 'Lionel Messi', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 3, + name: 'Salomón Rondón', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 4, + name: 'Kun Agüero', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 5, + name: 'Iker Casillas', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 6, + name: 'Manuel Neuer', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 7, + name: 'Tony Kross', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 8, + name: 'Luis Suárez', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 9, + name: 'David Beckham', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 10, + name: 'Adrián Anzola', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + } +] \ No newline at end of file diff --git a/src/pages/CreoleBalls/data/teamB.js b/src/pages/CreoleBalls/data/teamB.js new file mode 100644 index 0000000..4be0808 --- /dev/null +++ b/src/pages/CreoleBalls/data/teamB.js @@ -0,0 +1,418 @@ +export const secondTeamData = [ + { + id: 1, + name: 'Alberto Alvarez', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 2, + name: 'Gonzalo Gonzalaz', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 3, + name: 'Pedro Pérez', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 4, + name: 'Ricardo Rodríguez', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 5, + name: 'William Pérez', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 6, + name: 'Luis Lares', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 7, + name: 'Andrés Corrales', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + }, + { + id: 8, + name: 'Félix Rivas', + first: { + one: null, + two: null, + }, + second: { + one: null, + two: null, + }, + third: { + one: null, + two: null, + }, + fourth: { + one: null, + two: null, + }, + fifth: { + one: null, + two: null, + }, + sixth: { + one: null, + two: null, + }, + seventh: { + one: null, + two: null, + }, + eighth: { + one: null, + two: null, + }, + ninth: { + one: null, + two: null, + }, + tenth: { + one: null, + two: null, + }, + eleventh: { + one: null, + two: null, + }, + twelfth: { + one: null, + two: null, + }, + } +] \ No newline at end of file diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index d21bdb9..8fa64e1 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -78,7 +78,8 @@ const colors = { scoreColor: '#6D6E70', text: '#1F202A', teamSelectedTextColor: '#48CBC5', - backgroundIconColor: '#ECF0F3' + backgroundIconColor: '#ECF0F3', + selectedShoot: '#48CBC5', } } From 90b42b1da8575ffe928b3a69b238370bbbca715e Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Wed, 25 Jan 2023 00:08:45 -0400 Subject: [PATCH 051/109] Update --- src/navigation/StackNavigation.js | 28 +- src/pages/CreoleBalls/ColorTeamPage.js | 2 + src/pages/CreoleBalls/CreoleResult.js | 277 +++++++++++ src/pages/CreoleBalls/PlayTeamAPage.js | 36 +- src/pages/CreoleBalls/PlayTeamBPage.js | 38 +- src/pages/CreoleBalls/PlayerShootDataPage.js | 61 +-- src/pages/CreoleBalls/RoundNextPage.js | 314 ++++++++++++ src/pages/CreoleBalls/ScoreSetPage.js | 473 +++++++++++++++++++ src/styled-components/colors.js | 2 + 9 files changed, 1182 insertions(+), 49 deletions(-) create mode 100644 src/pages/CreoleBalls/CreoleResult.js create mode 100644 src/pages/CreoleBalls/RoundNextPage.js create mode 100644 src/pages/CreoleBalls/ScoreSetPage.js diff --git a/src/navigation/StackNavigation.js b/src/navigation/StackNavigation.js index 1198697..a599e54 100644 --- a/src/navigation/StackNavigation.js +++ b/src/navigation/StackNavigation.js @@ -16,6 +16,9 @@ import ColorTeamPage from '../pages/CreoleBalls/ColorTeamPage' import PlayTeamAPage from '../pages/CreoleBalls/PlayTeamAPage' import PlayTeamBPage from '../pages/CreoleBalls/PlayTeamBPage' import PlayerShootDataPage from '../pages/CreoleBalls/PlayerShootDataPage' +import ScoreSetPage from '../pages/CreoleBalls/ScoreSetPage' +import RoundNextPage from '../pages/CreoleBalls/RoundNextPage' +import CreoleResult from '../pages/CreoleBalls/CreoleResult' const Stack = createNativeStackNavigator() @@ -117,7 +120,30 @@ const StackNavigation = () => { headerShown: false, } }, - + { + name: 'ScoreSetPage', + component: ScoreSetPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + { + name: 'RoundNextPage', + component: RoundNextPage, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, + { + name: 'CreoleResult', + component: CreoleResult, + requireAuth: isAuthenticated, + options: { + headerShown: false, + } + }, ] diff --git a/src/pages/CreoleBalls/ColorTeamPage.js b/src/pages/CreoleBalls/ColorTeamPage.js index f297396..7f041e5 100644 --- a/src/pages/CreoleBalls/ColorTeamPage.js +++ b/src/pages/CreoleBalls/ColorTeamPage.js @@ -286,6 +286,8 @@ const ColorTeamPage = ({ navigation, route }) => { colorTeamA: colorSelected ? colors.creoleStartGame.teamAColor : colors.creoleStartGame.teamBColor, teamB: game?.teamB, colorTeamB: !colorSelected ? colors.creoleStartGame.teamAColor : colors.creoleStartGame.teamBColor, + scoreTeamA: 0, + scoreTeamB: 0, rosterA: game?.rosterA, rosterB: game?.rosterB, }) diff --git a/src/pages/CreoleBalls/CreoleResult.js b/src/pages/CreoleBalls/CreoleResult.js new file mode 100644 index 0000000..18c08de --- /dev/null +++ b/src/pages/CreoleBalls/CreoleResult.js @@ -0,0 +1,277 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' + +import { VStack, HStack, Stack, Text, Divider, Box, Button, ScrollView, FlatList } from 'native-base' +import Icon from 'react-native-vector-icons/Ionicons' + +import Container from '../../components/Container' +import colors from '../../styled-components/colors' + +const CreoleResult = ({ navigation, route }) => { + + const layout = useWindowDimensions() + + const game = route?.params + + const [selectedTeam, setSelectedTeam] = useState(null) + + return ( + + + + + + Resultados finales + + + + + + + + + + + + + + {game?.teamA} + + + {game?.scoreTeamA} + + + + + + + + + + + + + + + {game?.teamB} + + + {game?.scoreTeamB} + + + + + + + + + + + + + + Ganador + + + + + + {game?.scoreTeamA === game?.scoreTeamB ? 'Empate' : + game?.scoreTeamA > game?.scoreTeamB ? + `Equipo ${game?.teamA}` : + `Equipo ${game?.teamB}` + } + + + + + + + + + + + + + + + + + + + + + ) +} + +export default CreoleResult \ No newline at end of file diff --git a/src/pages/CreoleBalls/PlayTeamAPage.js b/src/pages/CreoleBalls/PlayTeamAPage.js index a054473..69b8a17 100644 --- a/src/pages/CreoleBalls/PlayTeamAPage.js +++ b/src/pages/CreoleBalls/PlayTeamAPage.js @@ -103,7 +103,7 @@ const PlayTeamAPage = ({ navigation, route }) => { {`${game?.teamA.slice(0, 3).toUpperCase()}`} @@ -112,7 +112,7 @@ const PlayTeamAPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamA} @@ -127,12 +127,12 @@ const PlayTeamAPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamB} {`${game?.teamB.slice(0, 3).toUpperCase()}`} @@ -221,6 +221,8 @@ const PlayTeamAPage = ({ navigation, route }) => { colorTeamA: game?.colorTeamA, teamB: game?.teamB, colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, rosterA: game?.rosterA, rosterB: game?.rosterB, }) @@ -316,7 +318,18 @@ const PlayTeamAPage = ({ navigation, route }) => { bgColor={colors.gray3} _pressed={colors.bgSecondary} onPress={() => { - console.log('Select team') + navigation?.navigate('CreoleResult', { + selectedTeam: game?.selectedTeam, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) }} > { bgColor={colors.button.bgPrimary} _pressed={colors.bgSecondary} onPress={() => { - console.log('Select team') + navigation?.navigate('ScoreSetPage', { + selectedTeam: game?.selectedTeam, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) }} > { {`${game?.teamA.slice(0, 3).toUpperCase()}`} @@ -112,7 +112,7 @@ const PlayTeamBPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamA} @@ -127,12 +127,12 @@ const PlayTeamBPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamB} {`${game?.teamB.slice(0, 3).toUpperCase()}`} @@ -214,13 +214,15 @@ const PlayTeamBPage = ({ navigation, route }) => { activeOpacity={.9} onPress={() => { navigation?.navigate('PlayerShootDataPage', { - selectedTeam: game?.teamA === game?.selectedTeam ? game?.teamA : game?.teamB, + selectedTeam: game?.selectedTeam, selectedPlayer: item.id, initialTeam: game?.initialTeam, teamA: game?.teamA, colorTeamA: game?.colorTeamA, teamB: game?.teamB, colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, rosterA: game?.rosterA, rosterB: game?.rosterB, }) @@ -316,7 +318,18 @@ const PlayTeamBPage = ({ navigation, route }) => { bgColor={colors.gray3} _pressed={colors.bgSecondary} onPress={() => { - console.log('Select team') + navigation?.navigate('CreoleResult', { + selectedTeam: game?.selectedTeam, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) }} > { bgColor={colors.button.bgPrimary} _pressed={colors.bgSecondary} onPress={() => { - console.log('Select team') + navigation?.navigate('ScoreSetPage', { + selectedTeam: game?.selectedTeam, + initialTeam: game?.initialTeam, + teamA: game?.teamA, + colorTeamA: game?.colorTeamA, + teamB: game?.teamB, + colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, + rosterA: game?.rosterA, + rosterB: game?.rosterB, + }) }} > { const game = route?.params - const selectedRoster = game?.selectedTeam === game?.teamA ? game?.rosterA.find(member => member.id === game?.selectedPlayer) : game?.rosterB.find(member => member.id === game?.selectedPlayer) - - const [player, setPlayer] = useState(selectedRoster) - const [shoot, setShoot] = useState(0) const [firstShoot, setFirstShoot] = useState(null) const [secondShoot, setSecondShoot] = useState(null) @@ -111,7 +107,7 @@ const PlayerShootDataPage = ({ navigation, route }) => { {`${game?.teamA.slice(0, 3).toUpperCase()}`} @@ -120,7 +116,7 @@ const PlayerShootDataPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamA} @@ -135,12 +131,12 @@ const PlayerShootDataPage = ({ navigation, route }) => { fontSize='4xl' color={colors.creoleStartGame.scoreColor} > - 0 + {game?.scoreTeamB} {`${game?.teamB.slice(0, 3).toUpperCase()}`} @@ -211,10 +207,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('A') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('A') } }} @@ -241,10 +237,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('B') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('B') } }} @@ -271,10 +267,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('M') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('M') } }} @@ -307,10 +303,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('a') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('a') } }} @@ -337,10 +333,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('b') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('b') } }} @@ -367,10 +363,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('m') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('m') } }} @@ -403,10 +399,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('N') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('N') } }} @@ -433,10 +429,10 @@ const PlayerShootDataPage = ({ navigation, route }) => { { - if (!firstShoot) { + if (!firstShoot || shoot === 0) { setFirstShoot('F') } - if (firstShoot && !secondShoot) { + if ((firstShoot && !secondShoot) || shoot === 1) { setSecondShoot('F') } }} @@ -552,16 +548,7 @@ const PlayerShootDataPage = ({ navigation, route }) => { bgColor={colors.button.bgPrimary} _pressed={colors.bgSecondary} onPress={() => { - navigation?.navigate(game?.selectedTeam !== game?.initialTeam ? 'PlayTeamAPage' : 'PlayTeamBPage', { - selectedTeam: game?.selectedTeam !== game?.initialTeam ? game?.teamA : game?.teamB, - initialTeam: game?.initialTeam, - teamA: game?.teamA, - colorTeamA: game?.colorTeamA, - teamB: game?.teamB, - colorTeamB: game?.colorTeamB, - rosterA: game?.rosterA, - rosterB: game?.rosterB, - }) + setShoot(1) }} > { fontSize='md' color={colors.white} > - Siguiente lanzamiento {game?.selectedTeam === game?.teamA ? 'true' : 'false'} + Siguiente lanzamiento @@ -608,6 +595,8 @@ const PlayerShootDataPage = ({ navigation, route }) => { colorTeamA: game?.colorTeamA, teamB: game?.teamB, colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, rosterA: game?.rosterA, rosterB: game?.rosterB, }) @@ -638,6 +627,8 @@ const PlayerShootDataPage = ({ navigation, route }) => { colorTeamA: game?.colorTeamA, teamB: game?.teamB, colorTeamB: game?.colorTeamB, + scoreTeamA: game?.scoreTeamA, + scoreTeamB: game?.scoreTeamB, rosterA: game?.rosterA, rosterB: game?.rosterB, }) diff --git a/src/pages/CreoleBalls/RoundNextPage.js b/src/pages/CreoleBalls/RoundNextPage.js new file mode 100644 index 0000000..5d82d1a --- /dev/null +++ b/src/pages/CreoleBalls/RoundNextPage.js @@ -0,0 +1,314 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' + +import { VStack, HStack, Stack, Text, Divider, Box, Button, ScrollView, FlatList } from 'native-base' +import Icon from 'react-native-vector-icons/Ionicons' + +import Container from '../../components/Container' +import colors from '../../styled-components/colors' + +const RoundNextPage = ({ navigation, route }) => { + + const layout = useWindowDimensions() + + const game = route?.params + + const [scoreTeamA, setScoreTeamA] = useState(0) + const [scoreTeamB, setScoreTeamB] = useState(0) + const [selectedTeam, setSelectedTeam] = useState(null) + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + {game?.scoreTeamA} + + + + + + {game?.scoreTeamB} + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + ¿Quién comienza el siguiente tiro? + + + + + + + { + setSelectedTeam(game?.teamA) + }} + > + + + + + + {game?.teamA} + + + + + { + setSelectedTeam(game?.teamB) + }} + > + + + + + + {game?.teamB} + + + + + + + + + + + + + + + + + + + ) +} + +export default RoundNextPage \ No newline at end of file diff --git a/src/pages/CreoleBalls/ScoreSetPage.js b/src/pages/CreoleBalls/ScoreSetPage.js new file mode 100644 index 0000000..e4c0e57 --- /dev/null +++ b/src/pages/CreoleBalls/ScoreSetPage.js @@ -0,0 +1,473 @@ +import React, { useState } from 'react' +import { TouchableOpacity, useWindowDimensions } from 'react-native' + +import { VStack, HStack, Stack, Text, Divider, Box, Button, ScrollView, FlatList } from 'native-base' +import Icon from 'react-native-vector-icons/Ionicons' + +import Container from '../../components/Container' +import colors from '../../styled-components/colors' + +const ScoreSetPage = ({ navigation, route }) => { + + const layout = useWindowDimensions() + + const game = route?.params + + const [scoreTeamA, setScoreTeamA] = useState(route?.params?.scoreTeamA || 0) + const [scoreTeamB, setScoreTeamB] = useState(route?.params?.scoreTeamB || 0) + const [isSetScore, setIsSetScore] = useState(false) + + return ( + + + + + + navigation?.goBack()} + > + + + + Volver + + + + + + 30:00 + + + + + + + + + + } + space={2} + > + + + {`${game?.teamA.slice(0, 3).toUpperCase()}`} + + + {game?.scoreTeamA} + + + + + + {game?.scoreTeamB} + + + {`${game?.teamB.slice(0, 3).toUpperCase()}`} + + + + + + + + + Puntuación + + + + + + + Tiro Nro. 1 + + + + + + + + + + + {game?.teamA} + + + + + + + + + + {game?.teamB} + + + + + + + + + + + + {scoreTeamA} + + + + + + + + + + {scoreTeamB} + + + + + + + + + + + + + + + + + + ) +} + +export default ScoreSetPage \ No newline at end of file diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 8fa64e1..59055b6 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -80,6 +80,8 @@ const colors = { teamSelectedTextColor: '#48CBC5', backgroundIconColor: '#ECF0F3', selectedShoot: '#48CBC5', + winner: '#C0F2F3', + textWinner: '#054D50' } } From 0cc728da49692bf32ce4137d4128f71c7001ed44 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Wed, 25 Jan 2023 06:50:15 -0400 Subject: [PATCH 052/109] Update --- App.js | 25 +++++++++++------- android/app/build.gradle | 3 +++ .../java/com/edenmobile/MainActivity.java | 11 ++++++++ .../java/com/edenmobile/MainApplication.java | 5 +++- .../app/src/main/res/layout/launch_screen.xml | 15 +++++++++++ .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3056 -> 5793 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 5024 -> 5887 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2096 -> 3474 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2858 -> 3491 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4569 -> 8484 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 7098 -> 8864 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6464 -> 13829 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10676 -> 14175 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9250 -> 20481 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15523 -> 21404 bytes android/app/src/main/res/values/colors.xml | 4 +++ android/app/src/main/res/values/strings.xml | 2 +- android/settings.gradle | 4 +++ package.json | 3 ++- src/assets/logo/EdenLogo.png | Bin 0 -> 44959 bytes yarn.lock | 5 ++++ 21 files changed, 65 insertions(+), 12 deletions(-) create mode 100644 android/app/src/main/res/layout/launch_screen.xml create mode 100644 android/app/src/main/res/values/colors.xml create mode 100644 src/assets/logo/EdenLogo.png diff --git a/App.js b/App.js index 5469dab..31f67f9 100644 --- a/App.js +++ b/App.js @@ -1,3 +1,5 @@ +import React, { useEffect } from 'react' +import SplashScreen from 'react-native-splash-screen' import { NavigationContainer } from '@react-navigation/native' import { NativeBaseProvider } from 'native-base' import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context' @@ -5,17 +7,22 @@ import { AuthProvider } from './src/context/AuthContext' import StackNavigation from './src/navigation/StackNavigation' const App = () => { + + useEffect(() => { + SplashScreen.hide() + }, []) + return ( - - - - - - - - - + + + + + + + + + ) } diff --git a/android/app/build.gradle b/android/app/build.gradle index 46cc807..850eb8a 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -249,6 +249,9 @@ android { } dependencies { + + implementation project(':react-native-splash-screen') + implementation fileTree(dir: "libs", include: ["*.jar"]) //noinspection GradleDynamicVersion diff --git a/android/app/src/main/java/com/edenmobile/MainActivity.java b/android/app/src/main/java/com/edenmobile/MainActivity.java index 431f331..7651870 100644 --- a/android/app/src/main/java/com/edenmobile/MainActivity.java +++ b/android/app/src/main/java/com/edenmobile/MainActivity.java @@ -1,11 +1,22 @@ package com.edenmobile; +import android.os.Bundle; + import com.facebook.react.ReactActivity; import com.facebook.react.ReactActivityDelegate; import com.facebook.react.ReactRootView; +// react-native-splash-screen >= 0.3.1 +import org.devio.rn.splashscreen.SplashScreen; + public class MainActivity extends ReactActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + SplashScreen.show(this); + super.onCreate(savedInstanceState); + } + /** * Returns the name of the main component registered from JavaScript. This is used to schedule * rendering of the component. diff --git a/android/app/src/main/java/com/edenmobile/MainApplication.java b/android/app/src/main/java/com/edenmobile/MainApplication.java index 05be22c..beb1d3d 100644 --- a/android/app/src/main/java/com/edenmobile/MainApplication.java +++ b/android/app/src/main/java/com/edenmobile/MainApplication.java @@ -1,5 +1,8 @@ package com.edenmobile; +// react-native-splash-screen >= 0.3.1 +import org.devio.rn.splashscreen.SplashScreenReactPackage; + import android.app.Application; import android.content.Context; import com.facebook.react.PackageList; @@ -27,7 +30,7 @@ protected List getPackages() { @SuppressWarnings("UnnecessaryLocalVariable") List packages = new PackageList(this).getPackages(); // Packages that cannot be autolinked yet can be added manually here, for example: - // packages.add(new MyReactNativePackage()); + // new SplashScreenReactPackage()); return packages; } diff --git a/android/app/src/main/res/layout/launch_screen.xml b/android/app/src/main/res/layout/launch_screen.xml new file mode 100644 index 0000000..2e734e6 --- /dev/null +++ b/android/app/src/main/res/layout/launch_screen.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index a2f5908281d070150700378b64a84c7db1f97aa1..83ceca950b71fabe9ab1735a3300cc2729b8ea26 100644 GIT binary patch literal 5793 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 delta 3051 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 Ve(8YZ6o3E#002ovPDHLkV1oE8ZEOGl literal 5024 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 delta 2084 zcmV+<2;29P8?X?NBYy|?Nkl)lTdypL+ZPo^Jl6x2J#wi=CBryLW=zSa^zF$_ zW=sL^28T@CrX_#PX8Wb4PQOJTavU{;9fJz0623uo8>onR28$wE8QT9~`Q*Nt#%Ge1 zM%{xY5vQnwgMU8av{W#sKUN}j)0FVqmiI-es>83rs&_l5$nM$_r`oQdMs{0wJFVCp z&uM%n*&Y1u`kt^xRvEN9ncDf;6-Wh(!T#n|hLHUj1{vDzqxyEcqz~Ezmi2_wbp>^u zL8&I5?WDjiX7Qu}=I4t9`G435HO)Jpt^;4tottB%?uUE#zt^RaO&$**I5GbJM-Nj& zZ#XT#=iLsG7*JO@)I~kH1#tl@P}J@i#`XX!EPt%401s8_l?fjW{Bn{`kB?Jy|7T?4 z8B^bD?2XW^ok249gs7%7z;d@{{8E^W zw4}3P%eP+%f6uD|N(^9{v8zNzQGgXz-8Los!Y$wmXQIF;&%(BY2lzQY&2tg7h#%Ay z4kZE0AH~2#7AoT`g#A3W#7Kt4$uXNRX_<>h#Q`kvWAs3Y+9)i~V zyAb3%4t+;Ej~o)%J#d6}9XXtC1AiZLdpB<#)Uur{`;-H9r|3HYA>+;5F2+ZPzh?zp zR27yL(EHj*@3-VXi1of!Dzv{XP!qJ%64%Cb8z^>dqNOY^bZj7<6L?3UKI$bM_tm+9 zO#%&ZACucedQXcCj)AJkgaSHmtAv@z`&L3xBBKKC7NLNeJctVgROCUtA%E`IkjHbY zIL(%aoNRqr0c0kfyCwgJ`o@kRJcfXTKE)yJ>mMNB46|t!KFa69@jiIYIR? zuJe6Z9^@b1+DQ$G05t*~GVbGDz&(92YUCBTiC5w#E*o+^56pBkSIdObGr%qb7}=UN z?T)nN6}JI##qx^VfV^UP8Gmh574=YgI5h*lHhBhI8%GM)&eD<67_g?v!)?+EsK|r3 zP(VcWQ*3Y59boFa2Yjup+HQnfJF{s#K78F zKGcgTXVQH9lNHDzU}Xg+$b72haw2?svnhFLW`t zOLF-~Ht(_`U2)0l&Ao-Tw}v>ABz4Y>BPbi9-lS-&P#bb5i@hxxS+TD*Src-l+q^y` z3$1S@%|VAK1%GUB3)J&?+}8oFcLYoUYqHGOCf-?S+c31~rRVwST-ab`D=sd+ zh-(WNm!D-U5M0ja$2$j0h5hjhCt$x&+s-DNN#AVaWgTP>*mKw1xPAxe%7rDusX+w* O0000Px?T}ebiRA@uhS$$ZH=^Fn{^U;T6lA$|{mwan)jd+a->}IxFnfT8H&^4$<$t;hfHpioKYzBHo7)<5b8}bL!=NZY%j1LrLq=0m(-Wyw`n8Xb&v5{X z?l5B58`Sa5Pft(x^Y{1POhQCs7;&Z6DmuP01P5wrYOdbCeS1x0WF*NRB?F|(XAJ>B zye=##C|Kg<<+X#mT9<}0|1<=Q_MF1P!j<0M-uoCfNPmuWI`jb`#*3s<=~h=)*JTE| zkro+!%j#e0$&)AFy1BXi4S<}<4V@2l^(NZ*($dns&d$#Bbg2qgW!Tj3_k5$55EIKSa=vFb%jta^0Km{cm=GjQO*)c{&_<%BK(2<{AKMPC6g? z`T3vv`ugr+m{2dsjE>KZg&<{7NREpIXI%Q zyc|2O{)(1XqKa+hx3{?%-%X!^@gANqGEip8^Qoz+L2+?$x0rgN8$c3ZlmwVoR#slJ zv$G3kJ;&8^mT;Dh7P$g9?i6Cw@S%8AQ-v#!9%0hp!LS!wAfvb#%g+9UH!>N(GXh1a z1%GAT_%JLD9s>(g(+<^|)Dn^in!F&~@F-MORbR8Svx@}K%uQ-81LSvMR#w*hpr9Zk zVFrzVUiuYYgIwX>--$N3p+$zMpKTjg7STFJHbK8y+5h)F9UbNZfG{lg0;P*nbdr zyn0=OW|b0kDg_2u+rXwr5BzZZHln?~U@Qh%a>;z92`PvWK4pwD#HDn{XHyhIWC|0hK}v) zcMDMPPzs+wA2``qqhHUSP*N1uUw=r$rpZyb^sopEPo`jwzXS`1`_prZpFGEweaCQo zS0dd<88XVt%QO4*=`$6;TapXxQ~Ze&CpuiZbm@gY<>9LKh{(Cf`e{E*OpI~$);;Vx zcoGZZreK`J7d^~Kf&#;~Zb8mpSK&cLInMr8fU$j?&_fCM4E2CYrNYRl`F|+-g*epk z5gi@vbpHJL3Zh7CPcKSOPmha;h&ar8oSOq09c19L3N&TjYAl{P6%iq$@Zix?tls!7 zT9ryn43S_`NFe$;+TmE<9mM$#hrC6O{Qo@0r7PDFF@6*sI=Au)vFfYcxRZWVvu~hF zF|9mmK)PyAdV2c&Ns}i12!Bv=7JyknLBS3$FRw*xVbtHzP&k>EiBoBr*p;{fLXnUT zhqFIlgMiPc4eaOG8^$6LRFn!0jc@T=Q3Z-^MO>dC6{UGED1s23bBYz|77WN!D!+5UE zgTy+P*_8`pF(o`0-<>#%M^B$)&&E&TCj0RIfolcH4B z@6tuSAX0kx6iUm=p;A%E{jI1y0Gd)YfWG#&@b?*l*EO|}%M~;eLp@v#4}Q)}o(0ba zji@6bL@G%ym5QoV7k@!@71SP`_CXX-{<<2e=Q42M$A6)@nRLGZrJ~duPsVuiGeqJC zBfb$F?QAhWb~4;t`l=_;?`z+s>O;lj@$3N9vH+|pO7-ep7+_x{SG3~twH$2R{R2pW zBLzsKXiP)rJJcNs@pItkR@p=RJLw^H6r6K^@^q>3kuKIp% zolq)ODE++xYc}si{(};_$x{(V$teI2SUmH6tXnn*MnuZ{zD>>%+sYl?00I9tKF`xO4+&hk#+k% zRxON0eNz)=EMAY2(lSQ>c^DVyhwnCjMgz(#EXFU{cX08S8#sO7?{IbQtLZw~^QEp( z<>cfX9)A@vY8C2Y8rec-cKrC!Ss%{)Xdh!^zu? zZ;qUTLQW3cfbigvIJj*sL;@l0gQhpl2%h#a*2aH?X^|n_V&TMz6H8{znne!5-m+X#Z%Y@ql^ed%064U59r%28bxS^Z0q1_cij(^`(w(b% z=zs6Pii?Y{4H`6PIw@jgPr%&|h>sjO^5N{+v-grXWry~Dfct&By)vWgWRG0)M;&@u zS<+M8M^8hGLV<}P0Z87qp3Z>>CC~7eFLq$tx_J0`d#dw^(}8wI2Wh{L9Xqyk?%cUQ zl0K+yKcIfz7=Ud>Ma6Y{dwZw0Mf7{6bASFR6idr6Hs%w&H!c8&wypzd09PdKL{xY% z-hXc_j7WvkJJdG3diAQz!NDQW1*k4%&WX5Bli;*SNl95aefsn*q$bd$GHrl%f7Ct) zD9wqQHbXL53*x`n4!OJ)I}=x6|M9bM>DL?6B0^wdOnk;2ojXgZRO0mM)1Sq~#eW?F zP|qCxwyV_yj0sF(^Y9*>3pxb)-Pm~Y{CB#|_8Q~{OR+g3LIPoGBGT)3?u6o!l3Rm3 zJV@+U1CX(&blUt8w~G@J5`sVf{PXjsCZ?LEtZN23GR3W^RW)_Em0t)eOAGk>4uOy_ zXjg&txkV6)0BQrEPbWxwedf%WrBP8)>qR2NJk?o!P$^Y- z`l5nvJ4oxm=Lm!$6v*Xrq@|^8jERZa%P0@&*EOxKt_&g)WCFk@Gc)t6prD}HLXoHg zQeFE4g`ySYg=Ak$3@2|P%F!%qftiUh-8_-wM508b9*}LQNZ8rI76r0iR)1F3vCz=a z&pDyf?!KTi2_T_lMnGg|XKxufa%7C5Oz5p4hPa)a;>zX7&CNX%6cj}62x^#P6mo0R zZgiz#1Vj(O#QMsW3tx^NJ$jaj2_Z&3v>DKKeniKpf#*G3t4PdWzkdDrk?)hEI%6V|Dzsf(hbCVwXw8=HWYSVNqtFG0C$5UFfwX+he>w9T1+`x`Y?cmj8rPkO-@eUwrkfea*STb zoJ4mBo9-~c&ZTc`0I@mHXm$AT;TfT!p^I#7Z2Ad=LbADF;>y6LiGNv@G-jmftFEqo zk(rtK{k(bePBDg)HlfSAvF?nQy{7yxA`Qwt3lKlPq_h%P9DXK;bU6@GEEd!F2KvI|2 zs@+i`Jz$cI0P-P)&q@T;5?v~;2 z5<;B;VmC!b7z`s6(S{RXJirz}75g037f}7K4i6Q%ph#-FIvX>Dd7X3q3sC9D_LmU_ QVgLXD07*qoM6N<$f+(o1+W-In delta 2852 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 Sm_^|L0000mkJ literal 4569 zcmV;~5hm`5P)gh-ObE_muwxq>sEpX)ywtgCHKIATY}p&%F4bRV>R9rYpeWbT(xnE7}?(HDXFgNDdC^@gUdK& zk=MolYT3>rpR*$Ell2!`c zjrIZftl&PUxlH2EgV+3VfQy&FjhL&5*Zg&R8xrSx?WgB?YuLO-JDaP3jr*I~qiywy z`-52AwB_6L#X ztms{{yRkRfQLbsb#Ov%`)acN(OCewI3Ex__xed17hg#g4c1blx?sK}UQg%PM@N;5d zsg{y6(|`H1Xfbz@5x{1688tu7TGkzFEBhOPDdFK(H_NQIFf|(>)ltFd!WdnkrY&mp z0y@5yU2;u1_enx%+U9tyY-LNWrd4^Wi?x<^r`QbaLBngWL`HzX@G550 zrdyNjhPTknrrJn#jT0WD0Z)WJRi&3FKJ#Sa&|883%QxM-?S%4niK{~k81<(c11sLk|!_7%s zH>c$`*nP-wA8Dx-K(HE~JG_@Yxxa;J+2yr+*iVlh;2Eiw?e`D1vu6*qY1+XTe8RVu z?RV%L|Mk!wO}j^S)p4H%?G37StD0Rx{_Y00%3a+V^SyOkfV@ZuFlEc;vR9r-D>cYU&plUkXL|M%1AYBQ3DI;;hF%_X@m*cTQAMZ4+FO74@AQB{A*_HtoXT@}l=8awaa7{RHC>07s?E%G{iSeRbh z?h#NM)bP`z`zdp5lij!N*df;4+sgz&U_JEr?N9#1{+UG3^11oQUOvU4W%tD1Cie3; z4zcz0SIrK-PG0(mp9gTYr(4ngx;ieH{NLq{* z;Pd=vS6KZYPV?DLbo^)~2dTpiKVBOh?|v2XNA)li)4V6B6PA!iq#XV5eO{{vL%OmU z0z3ZE2kcEkZ`kK(g^#s)#&#Zn5zw!R93cW^4+g0D=ydf&j4o_ti<@2WbzC>{(QhCL z(=%Zb;Ax8U=sdec9pkk|cW)1Ko;gK{-575HsDZ!w@WOQ^Up)GGorc38cGxe<$8O!6 zmQ`=@;TG{FjWq(s0eBn5I~vVgoE}un8+#YuR$Asq?lobvVAO-`SBs3!&;QEKT>gZ0T)jG^Foo~J2YkV&mi-axlvC}-(J4S2 z;opuO)+FIV#}&4;wwisb>{XU+FJ~tyK7UaG@ZD^C1^brazu7Xkh5Od}&P)GufW=u# zMxOwfWJ3a^MZha>9OmQ)@!Y;v*4@+dg~s~NQ;q@hV~l>lw`P)d`4XF9rE?aEFe(JV zI>11}Ny%^CkO=VN>wCV?P!-?VdT3vWe4zBLV*?6XPqsC%n93bQXvydh0Mo+tXHO4^ zxQ{x0?CG{fmToCyYny7>*-tNh;Sh9=THLzkS~lBiV9)IKa^C~_p8MVZWAUb)Btjt< zVZ;l7?_KnLHelj>)M1|Q_%pk5b?Bod_&86o-#36xIEag%b+8JqlDy@B^*YS*1; zGYT`@5nPgt)S^6Ap@b160C4d9do0iE;wYdn_Tr(vY{MS!ja!t*Z7G=Vz-=j5Z⁣ zwiG+x#%j}{0gU~J8;<|!B1@-XaB@{KORFwrYg_8rOv({b0EO#DbeQRm;B6_9=mXGf z-x|VL{zd`)#@yN}HkCSJbjbNlE|zL3Wm9Q8HY`sV)}3%pgN>cL^67{Z;PPL(*wT8N zUjXU{@|*hvm}({wsAC=x0^ok0%UAz0;sogW{B!nDqk|JJ5x~4NfTDgP49^zeu`csl?5mY@JdQdISc zFs!E{^grmkLnUk9 zny~m)1vws@5BFI<-0Tuo2JWX(0v`W|t(wg;s--L47WTvTMz-8l#TL^=OJNRS2?_Qj z3AKT+gvbyBi#H*-tJ%tWD|>EV3wy|8qxfzS!5RW;Jpl5*zo&^UBU=fG#2}UvRyNkK zA06Dy9;K1ca@r2T>yThYgI!ont$(G{6q#2QT+00r_x0(b)gsE`lBB?2gr55gq^D3Fi&p%E(p9>U%bv zkg1Jco(RbyTX7FDHOnl7-O@ zI$AaIl?9NJKPm(WiBP`1-#CB1QzU>&hKm)fpa5DKE{2$X0hGz-0uZ?cyTk(YC!Y&| zL=1VrNERSA5NA2jq7FACfX4JfPyj5XXl1yv0>~s;eF7L2$>&oMqeTFT2m$y7FlkON z_yurD1yIOvA;5C6016pyxBznGUt0kJ&k5r#;&>Jow`r)sp9R~PmK~lz$3xH%LT*1U zJdOyABZ3!FvNoR*vN$5ykHS8f`jA4zV+|L}i1C4`B2c{R0;UdYxaU|H)2avz@ z=mEYc|2S<+(B2Tj+FkX+2D+yFI!k9lWMA61DJ{)e;lum$(;O87?vGJJe!KtK04+N_ zI*P~t@dUb>9Xh{dbyl{-ZQ(UMgz7$|QfL5XSPkskt^NgctYC#;4WcZB1@%@wy@2t3 z2z0DI7&%b$*Aw~abe?GxE`ez@+6hOh-6*8fHRV{1os$EL@}uUZeG4h1&Be`98q*7j z=3-v+lhIjfWVo12!<>%V^a6lTgW3+_#W6n|p*~==zOH7z$0{LSZk(Tpd7EaD04hnA zL;#fxS0aD{`5^&D`}>0Uq?byDD-l2=!wm_bLcUl4gc(% za1p|itVANvFF>hghAS07Im1;IK;|b*W)}VDyI;BIp2=K*yu2a)j?B|f<44NI$NbmJ z#dE0>jI$fMr&@>4kN8MLFb4&2O9fEKaQg%(QO$4_1rVQywG^CmBLh#}_7gKW3vd?| z2?1^&KWq8}8I^_S0|)MowU_pw$q@nl@Nkn$z>BQq_KA^9yaR`(R3u{{Ig;cwt z@AJ^{ODQCm^neroM9nKNUAXi9RCK`OsP_LuR0PUR(YZCCX5dNF6VzcoK&=b^r`W?ltt|*F zpkoae%ZT{C1h~EcFui~b7fF`vb<<~j_VquuUA$}QqIKYELPp#;{u?q8Dz}WAG-(3; zjrm$i%7UbyZMM(Y{>!uJ#vNB?R~B{6Htp=>e*<{fQQ5W7V(1coCWlOON!MzZxhum| ztZBQpGR z;~#ur^&PockKdV{Q6R>o`Pl{0x!DEbpZ7y9Y;*ZvE!*gU`V1W3znva{f=?WO5I&>B z&hw6}tjECtaghm5z|C#%M;Yf_*pI^};h}Vl=^r9EN=tVDj86D;C$jIJ?K7VP+00000NkvXXu0mjf D5i!M* diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png index 459ca609d3ae0d3943ab44cdc27feef9256dc6d7..b6443babab36bb91f8ba22ddd06cf7f8054944a8 100644 GIT binary patch literal 8864 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 8ca12fe024be86e868d14e91120a6902f8e88ac6..6d1406ca232c82abbc8de2403411afc0f1176258 100644 GIT binary patch literal 13829 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 qTl=eO8vg4`g2#;IoX1biJfW*#7`!No)B4 literal 6464 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 B0*L?s diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png index 8e19b410a1b15ff180f3dacac19395fe3046cdec..ce5877d581776171369ad7095e9e8a615104bf48 100644 GIT binary patch literal 14175 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

qyIjy?R{tSSPF$J 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%0DX9@bAl0 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 literal 9250 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 diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png index 4c19a13c239cb67b8a2134ddd5f325db1d2d5bee..f28f3d99ffc8c58694cc42154c35360f8e889523 100644 GIT binary patch literal 21404 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%0AeW=cSug97izF$RndCT~BF7TlAHR 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 BIP(Ai diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..ccf5b44 --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 8af41b1..6f7ba9a 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - EdenMobile + Eden diff --git a/android/settings.gradle b/android/settings.gradle index fc45f62..22b2ff4 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,5 +1,9 @@ rootProject.name = 'EdenMobile' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) + +include ':react-native-splash-screen' +project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android') + include ':app' includeBuild('../node_modules/react-native-gradle-plugin') diff --git a/package.json b/package.json index 2bc47f1..5d691a1 100644 --- a/package.json +++ b/package.json @@ -16,9 +16,9 @@ "@fortawesome/react-native-fontawesome": "^0.3.0", "@hookform/resolvers": "^2.9.10", "@react-native-async-storage/async-storage": "^1.17.11", + "@react-native-community/netinfo": "^9.3.7", "@react-navigation/bottom-tabs": "^6.5.3", "@react-navigation/drawer": "^6.5.7", - "@react-native-community/netinfo": "^9.3.7", "@react-navigation/material-top-tabs": "^6.5.2", "@react-navigation/native": "^6.1.2", "@react-navigation/native-stack": "^6.9.8", @@ -38,6 +38,7 @@ "react-native-linear-gradient": "^2.6.2", "react-native-safe-area-context": "3.3.2", "react-native-screens": "^3.19.0", + "react-native-splash-screen": "^3.3.0", "react-native-svg": "12.1.1", "react-native-svg-transformer": "^1.0.0", "react-native-vector-icons": "^9.2.0", diff --git a/src/assets/logo/EdenLogo.png b/src/assets/logo/EdenLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..532c777bf8f60f0dcc1c41c488542a03dd2ba983 GIT binary patch literal 44959 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

p^!N~&^?|U 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 literal 0 HcmV?d00001 diff --git a/yarn.lock b/yarn.lock index 385f599..886807d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7426,6 +7426,11 @@ react-native-size-matters@^0.4.0: resolved "https://registry.yarnpkg.com/react-native-size-matters/-/react-native-size-matters-0.4.0.tgz#01bfd0d59454318f4e0b13fe9c1eb0523d70f2e0" integrity sha512-8/C0htHrFWeUm9N8JegmadovUfgTWkGBkDPZ1N3YkXtDWb+98Ya2gThiKcu445r8c7YhcrBfnHz/mYsXIusaOQ== +react-native-splash-screen@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/react-native-splash-screen/-/react-native-splash-screen-3.3.0.tgz#3af71ed17afe50fee69590a45aec399d071ead02" + integrity sha512-rGjt6HkoSXxMqH4SQUJ1gnPQlPJV8+J47+4yhgTIan4bVvAwJhEeJH7wWt9hXSdH4+VfwTS0GTaflj1Tw83IhA== + react-native-svg-transformer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/react-native-svg-transformer/-/react-native-svg-transformer-1.0.0.tgz#7a707e5e95d20321b5f3dcfd0c3c8762ebd0221b" From d16004e6ec7f6c93054ab31be661ea105d52a7df Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Wed, 25 Jan 2023 07:19:29 -0400 Subject: [PATCH 053/109] Update --- android/app/build.gradle | 10 +++++++++- android/gradle.properties | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index 850eb8a..c4c487d 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -211,6 +211,14 @@ android { } } signingConfigs { + release { + if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) { + storeFile file(MYAPP_UPLOAD_STORE_FILE) + storePassword MYAPP_UPLOAD_STORE_PASSWORD + keyAlias MYAPP_UPLOAD_KEY_ALIAS + keyPassword MYAPP_UPLOAD_KEY_PASSWORD + } + } debug { storeFile file('debug.keystore') storePassword 'android' @@ -220,7 +228,7 @@ android { } buildTypes { debug { - signingConfig signingConfigs.debug + signingConfig signingConfigs.release } release { // Caution! In production, you need to generate your own keystore file. diff --git a/android/gradle.properties b/android/gradle.properties index fa4feae..ab41b52 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -38,3 +38,8 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 # to write custom TurboModules/Fabric components OR use libraries that # are providing them. newArchEnabled=false + +MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore +MYAPP_UPLOAD_KEY_ALIAS=my-key-alias +MYAPP_UPLOAD_STORE_PASSWORD=Tavo9712* +MYAPP_UPLOAD_KEY_PASSWORD=Tavo9712* \ No newline at end of file From 54c1df02dc0853b8b830d55f36c6a05fc0c94c76 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Thu, 26 Jan 2023 22:07:04 -0400 Subject: [PATCH 054/109] Update --- src/assets/images/goose.jpg | Bin 0 -> 32908 bytes src/components/Container.js | 15 +- src/components/LoginComponents/LoginForm.js | 12 +- .../ProfileComponents/ContactCard.js | 111 ++++++++ .../ProfileComponents/CreoleProfileCard.js | 246 ++++++++++++++++++ .../ProfileComponents/DetailedData.js | 46 ++++ .../ProfileComponents/DominoesProfileCard.js | 151 +++++++++++ .../ProfileComponents/NumberGameData.js | 33 +++ .../ProfileComponents/ProfileComponent.js | 173 ++++++++++++ .../ProfileComponents/ProgressBar.js | 60 +++++ src/context/AuthContext.js | 4 +- src/pages/Main/UserPage.js | 45 +++- src/services/jwt.js | 4 +- src/styled-components/colors.js | 1 + 14 files changed, 890 insertions(+), 11 deletions(-) create mode 100644 src/assets/images/goose.jpg create mode 100644 src/components/ProfileComponents/ContactCard.js create mode 100644 src/components/ProfileComponents/CreoleProfileCard.js create mode 100644 src/components/ProfileComponents/DetailedData.js create mode 100644 src/components/ProfileComponents/DominoesProfileCard.js create mode 100644 src/components/ProfileComponents/NumberGameData.js create mode 100644 src/components/ProfileComponents/ProfileComponent.js create mode 100644 src/components/ProfileComponents/ProgressBar.js diff --git a/src/assets/images/goose.jpg b/src/assets/images/goose.jpg new file mode 100644 index 0000000000000000000000000000000000000000..add3706984511b935b167bee36e96c4095feea20 GIT binary patch literal 32908 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 literal 0 HcmV?d00001 diff --git a/src/components/Container.js b/src/components/Container.js index 948a63c..ac65f86 100644 --- a/src/components/Container.js +++ b/src/components/Container.js @@ -6,11 +6,20 @@ import StatusBar from './StatusBar' import colors from '../styled-components/colors' -const Container = ({ statusBarStyle, statusBarColor, hiddenStatusBar, hiddenNavBar, children }) => { +const Container = ({ + statusBarStyle = 'default', + statusBarColor = colors.bgSecondary, + hiddenStatusBar = false, + hiddenNavBar = false, + backgroundTopColor = colors.white, + backgroundBottomColor = colors.gray1, + children +}) => { + return ( { if (token) { showSuccessToast('¡Bienvenido!') - setSession(response.id, token) + const data = { + name: 'Gustavo Rivero', + role: 'Director del Club', + description: '25 años' + } + setSession(response.id, token, data) dispatch({ type: 'LOGIN', payload: { user: { token: token, - id: response.id - } + id: response.id, + user: data + } } }) } diff --git a/src/components/ProfileComponents/ContactCard.js b/src/components/ProfileComponents/ContactCard.js new file mode 100644 index 0000000..01dddd3 --- /dev/null +++ b/src/components/ProfileComponents/ContactCard.js @@ -0,0 +1,111 @@ +import React, { useState } from 'react' +import { TouchableOpacity } from 'react-native' +import { Box, HStack, VStack, Text, Divider } from 'native-base' + +import Icon from 'react-native-vector-icons/Ionicons' + +import colors from '../../styled-components/colors' + +import { cutText } from '../../utilities/functions' + +const ContactCard = ({ }) => { + + const [email, setEmail] = useState('gustavoerivero.p63@gmail.com') + const [phones, setPhones] = useState(['+584149561231', '+584128501231']) + + return ( + + + + + Contacto + + + + + + + {cutText(email, 42)} + + + {phones?.map((item, key) => ( + + + + {cutText(item, 42)} + + + ))} + + + { + console.log('is Pressed') + }} + > + + + + + + + ) +} + +export default ContactCard \ No newline at end of file diff --git a/src/components/ProfileComponents/CreoleProfileCard.js b/src/components/ProfileComponents/CreoleProfileCard.js new file mode 100644 index 0000000..c863cf9 --- /dev/null +++ b/src/components/ProfileComponents/CreoleProfileCard.js @@ -0,0 +1,246 @@ +import React from 'react' +import { Box, Divider, HStack, Stack, Text, VStack } from 'native-base' + +import colors from '../../styled-components/colors' +import ProgressBar from './ProgressBar' +import DetailedData from './DetailedData' +import NumberGameData from './NumberGameData' + +const CreoleProfileCard = ({ + navigation, + gamesPlayed = 0, + gamesWon = 0, + tiedGames = 0, + gamesLost = 0, + arrimeBueno = 0, + arrimeMalo = 0, + bocheBueno = 0, + bocheMalo = 0, + marranaBuena = 0, + marranaMala = 0, + mingoFuera = 0 +}) => { + + const gameDetails = [ + { + id: 1, + title: 'Arrime bueno', + number: arrimeBueno, + }, + { + id: 2, + title: 'Arrime malo', + number: arrimeMalo, + }, + { + id: 3, + title: 'Boche bueno', + number: bocheBueno, + }, + { + id: 4, + title: 'Boche malo', + number: bocheMalo, + }, + { + id: 5, + title: 'Marrana buena', + number: marranaBuena, + }, + { + id: 6, + title: 'Marrana mala', + number: marranaMala, + }, + { + id: 7, + title: 'Mingo fuera', + number: mingoFuera, + }, + ] + + return ( + + + + Perfil de jugador + + + + + Bolas criollas + + + + + {gamesPlayed} + + + Juegos{`\n`}jugados + + + + + + + + + + + + + + Capitán de equipo + + + + + + + + + + + + + Estadísticas personales + + + } + > + {gameDetails.map((item, key) => ( + + + + ))} + + + + + + ) +} + +export default CreoleProfileCard \ No newline at end of file diff --git a/src/components/ProfileComponents/DetailedData.js b/src/components/ProfileComponents/DetailedData.js new file mode 100644 index 0000000..4ff48ca --- /dev/null +++ b/src/components/ProfileComponents/DetailedData.js @@ -0,0 +1,46 @@ +import React from 'react' +import { HStack, Stack, Text } from 'native-base' + +import { cutText } from '../../utilities/functions' +import colors from '../../styled-components/colors' + +const DetailedData = ({ title = '', data = '' }) => { + return ( + + + + {title} + + + + + {cutText(data, 5)} + + + + ) +} + +export default DetailedData \ No newline at end of file diff --git a/src/components/ProfileComponents/DominoesProfileCard.js b/src/components/ProfileComponents/DominoesProfileCard.js new file mode 100644 index 0000000..4489b38 --- /dev/null +++ b/src/components/ProfileComponents/DominoesProfileCard.js @@ -0,0 +1,151 @@ +import React from 'react' +import { Box, Divider, HStack, Stack, Text, VStack } from 'native-base' + +import colors from '../../styled-components/colors' +import ProgressBar from './ProgressBar' +import DetailedData from './DetailedData' +import NumberGameData from './NumberGameData' + +const DominoesProfileCard = ({ + navigation, + gamesPlayed = 0, + gamesWon = 0, + points = 0, + gamesLost = 0 +}) => { + + return ( + + + + Perfil de jugador + + + + + Dominó + + + + + {gamesPlayed} + + + Juegos{`\n`}jugados + + + + + + + + + + + + + + + + + + + + + + + ) +} + +export default DominoesProfileCard \ No newline at end of file diff --git a/src/components/ProfileComponents/NumberGameData.js b/src/components/ProfileComponents/NumberGameData.js new file mode 100644 index 0000000..ada3aad --- /dev/null +++ b/src/components/ProfileComponents/NumberGameData.js @@ -0,0 +1,33 @@ +import React from 'react' +import { VStack, Text } from 'native-base' + +import colors from '../../styled-components/colors' + +const NumberGameData = ({ title = '', number = 0 }) => { + return ( + + + {number} + + + {title} + + + ) +} + +export default NumberGameData \ No newline at end of file diff --git a/src/components/ProfileComponents/ProfileComponent.js b/src/components/ProfileComponents/ProfileComponent.js new file mode 100644 index 0000000..2244ec6 --- /dev/null +++ b/src/components/ProfileComponents/ProfileComponent.js @@ -0,0 +1,173 @@ +import React, { useEffect, useState } from 'react' +import { TouchableOpacity } from 'react-native' + +import AsyncStorage from '@react-native-async-storage/async-storage' + +import { Box, HStack, Image, Stack, Text, VStack } from 'native-base' + +import Icon from 'react-native-vector-icons/Ionicons' + +import colors from '../../styled-components/colors' +import useConnection from '../../hooks/useConnection' +import useAuthContext from '../../hooks/useAuthContext' +import useCustomToast from '../../hooks/useCustomToast' + +import { cutText } from '../../utilities/functions' + +import Goose from '../../assets/images/goose.jpg' + +const ProfileComponent = ({ navigation }) => { + + const { isConnected, recognizeConnection } = useConnection() + const { dispatch } = useAuthContext() + const { showSuccessToast } = useCustomToast() + + const [image, setImage] = useState(1) + + const [userData, setUserData] = useState(null) + + const getData = async () => { + setUserData(JSON.parse(await AsyncStorage.getItem('@user'))) + } + + useEffect(() => { + if (!userData) { + getData() + } + }, [userData]) + + return ( + + + + { + if (isConnected) { + console.log('User logout') + dispatch({ type: 'LOGOUT' }) + showSuccessToast('¡Esperamos verte proximamente por acá!') + } else { + recognizeConnection() + } + }} + > + + + + + { + console.log(userData) + }} + > + + + + + + + + + + {!image ? + + : + + } + + + + {cutText(userData?.name, 50)} + + + {userData?.role} + + + {cutText(userData?.description, 100)} + + + + + + + ) +} + +export default ProfileComponent \ No newline at end of file diff --git a/src/components/ProfileComponents/ProgressBar.js b/src/components/ProfileComponents/ProgressBar.js new file mode 100644 index 0000000..318e8ed --- /dev/null +++ b/src/components/ProfileComponents/ProgressBar.js @@ -0,0 +1,60 @@ +import React from 'react' +import { Box, VStack, Text, HStack } from 'native-base' + +import colors from '../../styled-components/colors' + +const ProgressBar = ({ text = 'Progress', progress = 0, total = 100 }) => { + + const state = progress / (total === 0 ? 1 : total) * 100 + + return ( + + + + {text} + + + {progress} + + + + + + + + ) +} + +export default ProgressBar \ No newline at end of file diff --git a/src/context/AuthContext.js b/src/context/AuthContext.js index 7a4e346..4c86f1a 100644 --- a/src/context/AuthContext.js +++ b/src/context/AuthContext.js @@ -54,6 +54,7 @@ export const AuthProvider = ({ children }) => { const initialize = async () => { try { const accessID = await AsyncStorage.getItem('@id') + const accessUser = await AsyncStorage.getItem('@user') const accessToken = await AsyncStorage.getItem('@token') if (!accessToken) { @@ -68,7 +69,7 @@ export const AuthProvider = ({ children }) => { return } - await setSession(accessID, accessToken) + await setSession(accessID, accessToken, accessUser) dispatch({ type: 'INITIALIZE', @@ -77,6 +78,7 @@ export const AuthProvider = ({ children }) => { user: { id: accessID, token: accessToken, + user: accessUser }, }, }) diff --git a/src/pages/Main/UserPage.js b/src/pages/Main/UserPage.js index f065c69..a8a7f8b 100644 --- a/src/pages/Main/UserPage.js +++ b/src/pages/Main/UserPage.js @@ -1,9 +1,16 @@ import React from 'react' -import { ScrollView } from 'native-base' +import { ScrollView, VStack } from 'native-base' + import Container from '../../components/Container' import useAuthContext from '../../hooks/useAuthContext' import LoginForm from '../../components/LoginComponents/LoginForm' +import ProfileComponent from '../../components/ProfileComponents/ProfileComponent' + +import colors from '../../styled-components/colors' +import CreoleProfileCard from '../../components/ProfileComponents/CreoleProfileCard' +import DominoesProfileCard from '../../components/ProfileComponents/DominoesProfileCard' +import ContactCard from '../../components/ProfileComponents/ContactCard' const UserPage = ({ navigation }) => { @@ -13,13 +20,45 @@ const UserPage = ({ navigation }) => { return ( - {!isAuthenticated && + {!isAuthenticated ? + : + + + + + + } diff --git a/src/services/jwt.js b/src/services/jwt.js index 730e17c..a9845f5 100644 --- a/src/services/jwt.js +++ b/src/services/jwt.js @@ -2,14 +2,16 @@ import AsyncStorage from '@react-native-async-storage/async-storage' import { http } from './http' -const setSession = async (id = '', token = '') => { +const setSession = async (id = '', token = '', user = null) => { if (token) { await AsyncStorage.setItem('@id', id) await AsyncStorage.setItem('@token', token) + await AsyncStorage.setItem('@user', JSON.stringify(user)) http.defaults.headers.common['Authorization'] = `Bearer ${token}` } else { await AsyncStorage.removeItem('@id') await AsyncStorage.removeItem('@token') + await AsyncStorage.removeItem('@user') delete http.defaults.headers.common['Authorization'] } } diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index 59055b6..eb08e12 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -9,6 +9,7 @@ const colors = { gray1: '#ecf0f3', gray2: '#d4d4d8', gray3: '#ECF0F3', + gray4: '#D9D9D9', error: { primary: '#d95f5f', secondary: '#f52556', From 4089e45744fe42476f464e1beba9756840dc4510 Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Sun, 29 Jan 2023 11:23:48 -0400 Subject: [PATCH 055/109] Update --- src/components/Modal.js | 45 +++++ .../ProfileComponents/ContactCard.js | 154 +++++++++++++++++- .../ProfileComponents/StyledField.js | 29 ++++ src/components/StyledSwitch.js | 70 ++++++++ src/components/styled-components/styles.js | 4 + src/pages/Main/UserPage.js | 1 + src/styled-components/colors.js | 3 +- 7 files changed, 299 insertions(+), 7 deletions(-) create mode 100644 src/components/Modal.js create mode 100644 src/components/ProfileComponents/StyledField.js create mode 100644 src/components/StyledSwitch.js diff --git a/src/components/Modal.js b/src/components/Modal.js new file mode 100644 index 0000000..20fd6e2 --- /dev/null +++ b/src/components/Modal.js @@ -0,0 +1,45 @@ +import React from 'react' +import { ImageBackground, useWindowDimensions } from 'react-native' + +import { Box, Modal } from 'native-base' + +import colors from '../styled-components/colors' +import styles from './styled-components/styles' + +const StyledModal = ({ children, modalStyle = {} }) => { + + const layout = useWindowDimensions() + + return ( + + + {children} + + + ) +} + +export default StyledModal \ No newline at end of file diff --git a/src/components/ProfileComponents/ContactCard.js b/src/components/ProfileComponents/ContactCard.js index 01dddd3..4b1179c 100644 --- a/src/components/ProfileComponents/ContactCard.js +++ b/src/components/ProfileComponents/ContactCard.js @@ -1,17 +1,35 @@ import React, { useState } from 'react' import { TouchableOpacity } from 'react-native' -import { Box, HStack, VStack, Text, Divider } from 'native-base' +import { Box, HStack, VStack, Text, Divider, Stack, Button, Checkbox } from 'native-base' import Icon from 'react-native-vector-icons/Ionicons' import colors from '../../styled-components/colors' import { cutText } from '../../utilities/functions' +import Modal from '../Modal' +import StyledField from './StyledField' +import StyledSwitch from '../StyledSwitch' const ContactCard = ({ }) => { const [email, setEmail] = useState('gustavoerivero.p63@gmail.com') - const [phones, setPhones] = useState(['+584149561231', '+584128501231']) + const [phones, setPhones] = useState('+584149561231') + const [activePhones, setActivePhones] = useState(true) + + const [editModal, setEditModal] = useState(false) + + const handleActivePhones = (key) => (value) => { + let aux = phones + + aux.forEach(item => { + if (item.id === key) { + aux[key].status = value + } + }) + + setPhones(aux) + } return ( { {cutText(email, 42)} - {phones?.map((item, key) => ( + {activePhones && @@ -77,15 +95,16 @@ const ContactCard = ({ }) => { fontSize='xs' color={colors.gray} > - {cutText(item, 42)} + {cutText(phones, 42)} - ))} + } { console.log('is Pressed') + setEditModal(true) }} > { + {editModal && + + + + Editar información de contacto + + + + + + + Correo + + + + setEmail(e)} + /> + + + {phones && + + + {phones && + + Teléfonos + + } + + + setPhones(text)} + /> + + + + + + } + + + + + + + + + + } ) } diff --git a/src/components/ProfileComponents/StyledField.js b/src/components/ProfileComponents/StyledField.js new file mode 100644 index 0000000..8aa2d41 --- /dev/null +++ b/src/components/ProfileComponents/StyledField.js @@ -0,0 +1,29 @@ +import React, { forwardRef } from 'react' +import { Input } from 'native-base' + +import colors from '../../styled-components/colors' + +const StyledField = ({ style = {}, ...props }, ref) => { + const inputStyle = { + ...style + } + return ( + + ) +} + +export default forwardRef(StyledField) \ No newline at end of file diff --git a/src/components/StyledSwitch.js b/src/components/StyledSwitch.js new file mode 100644 index 0000000..bdd2dd0 --- /dev/null +++ b/src/components/StyledSwitch.js @@ -0,0 +1,70 @@ +import React, { useRef } from 'react' +import { TouchableWithoutFeedback, Animated } from 'react-native' +import { Box } from 'native-base' + +import colors from '../styled-components/colors' + +const StyledSwitch = ({ value = false, setValue }) => { + + const animatedValue = useRef(new Animated.Value(value ? 1 : 0)).current + + const translateInterpolation = animatedValue.interpolate({ + inputRange: [0, 1], + outputRange: [0, 23] + }) + + const handlePress = () => { + setValue(!value) + Animated.timing(animatedValue, { + toValue: value ? 0 : 1, + duration: 250, + useNativeDriver: true + }).start() + } + + const animateTranslation = { + transform: [{ + translateX: translateInterpolation, + }] + } + + const styles = { + circle: { + width: 17, + height: 17, + borderRadius: 50, + backgroundColor: colors.white + } + } + + return ( + + + + + + + + ) +} + + + +export default StyledSwitch \ No newline at end of file diff --git a/src/components/styled-components/styles.js b/src/components/styled-components/styles.js index a9e784e..89d0a2f 100644 --- a/src/components/styled-components/styles.js +++ b/src/components/styled-components/styles.js @@ -18,6 +18,10 @@ const styles = StyleSheet.create({ textAlign: 'center', marginBottom: 8 }, + modalBackground: { + justifyContent: 'center', + alignItems: 'center' + } }) diff --git a/src/pages/Main/UserPage.js b/src/pages/Main/UserPage.js index a8a7f8b..e1aafd0 100644 --- a/src/pages/Main/UserPage.js +++ b/src/pages/Main/UserPage.js @@ -11,6 +11,7 @@ import colors from '../../styled-components/colors' import CreoleProfileCard from '../../components/ProfileComponents/CreoleProfileCard' import DominoesProfileCard from '../../components/ProfileComponents/DominoesProfileCard' import ContactCard from '../../components/ProfileComponents/ContactCard' +import Modal from '../../components/Modal' const UserPage = ({ navigation }) => { diff --git a/src/styled-components/colors.js b/src/styled-components/colors.js index eb08e12..c814ea9 100644 --- a/src/styled-components/colors.js +++ b/src/styled-components/colors.js @@ -7,7 +7,7 @@ const colors = { white: '#ffffff', gray: '#6B6D79', gray1: '#ecf0f3', - gray2: '#d4d4d8', + gray2: '#d4d4d4', gray3: '#ECF0F3', gray4: '#D9D9D9', error: { @@ -21,6 +21,7 @@ const colors = { borderColor: 'rgba(42,53,60, .25)', placeholder: 'rgba(42,53,60, .75)', text: '#2A353C', + bgSecondColor: 'rgba(217, 217, 217, .5)', }, text: { primary: '#1F202A', From f6c08f0d80fec80d4ce7f88ab7c2adb4beae266d Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Mon, 30 Jan 2023 13:48:02 -0400 Subject: [PATCH 056/109] Update profile components --- App.js | 2 + .../app/src/main/res/layout/launch_screen.xml | 1 + package.json | 3 + src/components/Modal.js | 6 +- .../ProfileComponents/ContactCard.js | 18 +- .../ProfileComponents/CreoleProfileCard.js | 6 - .../ProfileComponents/ProfileComponent.js | 278 +++++++++++++++++- src/context/AuthContext.js | 2 +- src/hooks/useConnection.js | 28 +- src/pages/Main/UserPage.js | 5 +- src/services/http.js | 11 +- src/utilities/RegEx/RegEx.js | 2 +- .../formValidations/loginValidation.js | 9 +- yarn.lock | 126 +++++++- 14 files changed, 446 insertions(+), 51 deletions(-) diff --git a/App.js b/App.js index 31f67f9..b88bd4c 100644 --- a/App.js +++ b/App.js @@ -6,6 +6,8 @@ import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context' import { AuthProvider } from './src/context/AuthContext' import StackNavigation from './src/navigation/StackNavigation' +import 'moment-es6' + const App = () => { useEffect(() => { diff --git a/android/app/src/main/res/layout/launch_screen.xml b/android/app/src/main/res/layout/launch_screen.xml index 2e734e6..2c9877a 100644 --- a/android/app/src/main/res/layout/launch_screen.xml +++ b/android/app/src/main/res/layout/launch_screen.xml @@ -2,6 +2,7 @@ diff --git a/package.json b/package.json index 2bddfcf..f74abe8 100644 --- a/package.json +++ b/package.json @@ -28,11 +28,14 @@ "formik": "^2.2.9", "jwt-decode": "^3.1.2", "mime": "^3.0.0", + "moment": "^2.29.4", + "moment-es6": "^1.0.0", "native-base": "^3.4.25", "react": "18.1.0", "react-dom": "^18.2.0", "react-hook-form": "^7.42.1", "react-native": "0.70.5", + "react-native-calendar-picker": "^7.1.3", "react-native-ionicons": "^4.6.5", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-linear-gradient": "^2.6.2", diff --git a/src/components/Modal.js b/src/components/Modal.js index 20fd6e2..84c5c8b 100644 --- a/src/components/Modal.js +++ b/src/components/Modal.js @@ -1,12 +1,12 @@ import React from 'react' import { ImageBackground, useWindowDimensions } from 'react-native' -import { Box, Modal } from 'native-base' +import { Box } from 'native-base' import colors from '../styled-components/colors' import styles from './styled-components/styles' -const StyledModal = ({ children, modalStyle = {} }) => { +const StyledModal = ({ children, top = 1, modalStyle = {} }) => { const layout = useWindowDimensions() @@ -14,7 +14,7 @@ const StyledModal = ({ children, modalStyle = {} }) => { { const [editModal, setEditModal] = useState(false) - const handleActivePhones = (key) => (value) => { - let aux = phones - - aux.forEach(item => { - if (item.id === key) { - aux[key].status = value - } - }) - - setPhones(aux) - } + const layout = useWindowDimensions() return ( { {editModal && - + - { + moment.locale('es') + + const initialDate = new Date(`${new Date().getFullYear() - 16}-${new Date().getDay() + 1}-${new Date().getMonth() + 1}`) + const endDate = new Date(`${new Date().getFullYear() - 99}-${new Date().getDay() + 1}-${new Date().getMonth() + 1}`) + const { isConnected, recognizeConnection } = useConnection() const { dispatch } = useAuthContext() const { showSuccessToast } = useCustomToast() @@ -26,6 +40,26 @@ const ProfileComponent = ({ navigation }) => { const [userData, setUserData] = useState(null) + const [edit, setEdit] = useState(false) + + const [names, setNames] = useState('Gustavo Emmanuel') + const [lastNames, setLastNames] = useState('Rivero Menduni') + const [birthday, setBirthday] = useState(initialDate) + + const [modalDateVisible, setModalDateVisible] = useState(false) + + const openModalDate = () => setModalDateVisible(true) + const closeModalDate = () => setModalDateVisible(false) + + const handleDateSelection = (data) => { + const date = new Date(data) + setBirthday(date) + console.log(date) + closeModalDate() + } + + const layout = useWindowDimensions() + const getData = async () => { setUserData(JSON.parse(await AsyncStorage.getItem('@user'))) } @@ -68,16 +102,24 @@ const ProfileComponent = ({ navigation }) => { justifyContent='center' alignItems='center' > - + {isConnected ? + : + + } { console.log(userData) + setEdit(!edit) }} > { + {edit && + + + + Editar perfil + + + + + + + Nombres + + + + + + + + + + Apellidos + + + + + + + + + + Fecha de nacimiento + + + + + + {formatDate(birthday.toISOString())} + + + + + + + + + + } + > + + Fecha de nacimiento + + + + + + + + + + + + + + + + + + } ) } diff --git a/src/context/AuthContext.js b/src/context/AuthContext.js index 4c86f1a..704b9fa 100644 --- a/src/context/AuthContext.js +++ b/src/context/AuthContext.js @@ -54,7 +54,7 @@ export const AuthProvider = ({ children }) => { const initialize = async () => { try { const accessID = await AsyncStorage.getItem('@id') - const accessUser = await AsyncStorage.getItem('@user') + const accessUser = JSON.parse(await AsyncStorage.getItem('@user')) const accessToken = await AsyncStorage.getItem('@token') if (!accessToken) { diff --git a/src/hooks/useConnection.js b/src/hooks/useConnection.js index e31e4dc..344c317 100644 --- a/src/hooks/useConnection.js +++ b/src/hooks/useConnection.js @@ -2,6 +2,8 @@ import { useState, useEffect } from 'react' import NetInfo from '@react-native-community/netinfo' +import { getConnection } from '../services/http' + const useConnection = () => { const [isConnected, setIsConnected] = useState(false) @@ -10,18 +12,30 @@ const useConnection = () => { NetInfo.fetch() .then(state => { - /* - console.group(`Connection Details: `) - console.log(`Connection type: ${state.type}`) - console.log(`Is connected? ${state.isConnected}`) - console.groupEnd() - */ if (state.isConnected) { - setIsConnected(true) + + getConnection() + .then(result => { + let { data } = result + + console.group(`Connection Details: `) + console.log(`Connection type: ${state.type}`) + console.log(`Is connected? ${data.conectado}`) + console.groupEnd() + + setIsConnected(data.conectado) + }) + .catch(error => { + console.log(error) + }) } else { + console.group(`Connection Details: `) + console.log(`Connection type: ${state.type}`) + console.log(`Is connected? ${state.isConnected}`) + console.groupEnd() setIsConnected(false) } diff --git a/src/pages/Main/UserPage.js b/src/pages/Main/UserPage.js index e1aafd0..df1c20d 100644 --- a/src/pages/Main/UserPage.js +++ b/src/pages/Main/UserPage.js @@ -38,10 +38,9 @@ const UserPage = ({ navigation }) => { > { + const { data, status } = await http.get('/', { + validateStatus: (status) => { + return status < 500 + } + }) + return { data, status } +} \ No newline at end of file diff --git a/src/utilities/RegEx/RegEx.js b/src/utilities/RegEx/RegEx.js index abc9acf..42f5ca5 100644 --- a/src/utilities/RegEx/RegEx.js +++ b/src/utilities/RegEx/RegEx.js @@ -2,7 +2,7 @@ const RegExp = { regEmail: /^(([^<>()\[\]\\.,;:\s@”]+(\.[^<>()\[\]\\.,;:\s@”]+)*)|(“.+”))@((\[[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}\.[0–9]{1,3}])|(([a-zA-Z\-0–9]+\.)+[a-zA-Z]{2,}))$/, regLetters: /^[A-ZÁÉÍÓÚÑ ]+$/i, regPhone: /^(?:(?:\(?(?:00|\+)([1-4]\d\d|[1-9]\d?)\)?)?[\-\.\ \\\/]?)?((?:\(?\d{1,}\)?[\-\.\ \\\/]?){0,})(?:[\-\.\ \\\/]?(?:#|ext\.?|extension|x)[\-\.\ \\\/]?(\d+))?$/i, - regPassword: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$/, + regPassword: /^[\w-\/]{8,15}$/i, } export default RegExp \ No newline at end of file diff --git a/src/utilities/formValidations/loginValidation.js b/src/utilities/formValidations/loginValidation.js index c4e2892..45e59fe 100644 --- a/src/utilities/formValidations/loginValidation.js +++ b/src/utilities/formValidations/loginValidation.js @@ -1,8 +1,13 @@ import { object, string } from 'yup' export const loginSchema = object({ - email: string().email().required(), - password: string().required().matches(/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,16}$/), + email: string() + .email('Debe ingresarse un correo electrónico.') + .required('El campo es requerido.'), + password: string() + .required('El campo es requerido.') + .min(8, 'La contraseña requiere mínimo 8 caracteres.') + .max(100, 'La contraseña requiere máximo 100 caracteres.'), }).required() export const loginDefaultValues = { diff --git a/yarn.lock b/yarn.lock index fb39a98..3e4f633 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3077,7 +3077,7 @@ array.prototype.flatmap@^1.3.0: es-abstract "^1.20.4" es-shim-unscopables "^1.0.0" -asap@~2.0.6: +asap@~2.0.3, asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== @@ -3705,6 +3705,11 @@ core-js-compat@^3.25.1: dependencies: browserslist "^4.21.4" +core-js@^1.0.0: + version "1.2.7" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" + integrity sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA== + core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -4069,6 +4074,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4548,6 +4560,19 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbjs@^0.8.9: + version "0.8.18" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.18.tgz#9835e0addb9aca2eff53295cd79ca1cfc7c9662a" + integrity sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA== + dependencies: + core-js "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.30" + file-entry-cache@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" @@ -5025,6 +5050,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + ieee754@^1.1.13: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" @@ -5337,7 +5369,7 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^1.1.0: +is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== @@ -5417,6 +5449,14 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA== + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" @@ -6124,7 +6164,7 @@ lodash.clonedeep@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== -lodash.debounce@^4.0.8: +lodash.debounce@4.0.8, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== @@ -6649,6 +6689,18 @@ mkdirp@^0.5.1: dependencies: minimist "^1.2.6" +moment-es6@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/moment-es6/-/moment-es6-1.0.0.tgz#552fcf405d62565b0a1fe84e6c1e697ac79332df" + integrity sha512-DeFuL4VMEGDSRyuhwPEFrIy0BxlRGk3yaEkJYnHKY50dLg+u5llQwK5Bjk/Rm5iSf8BuatnI0nODjHXhLzcKBw== + dependencies: + moment "*" + +moment@*, moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -6768,6 +6820,14 @@ node-dir@^0.1.17: dependencies: minimatch "^3.0.2" +node-fetch@^1.0.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + node-fetch@^2.2.0, node-fetch@^2.6.0: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -6775,6 +6835,11 @@ node-fetch@^2.2.0, node-fetch@^2.6.0: dependencies: whatwg-url "^5.0.0" +node-git-hooks@^1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/node-git-hooks/-/node-git-hooks-1.0.7.tgz#8a788baec6e0bdaaac7096a5599400fcabe769e7" + integrity sha512-IgIbLXsONu4sfHVaaTxQvVbNfo36ZxqCbzmataI/4hbwqmX2Eth4Vdxw9NvAAeroVuxzzmHqjVlV9TeHb3U2yw== + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -6867,7 +6932,7 @@ ob1@0.72.3: resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.72.3.tgz#fc1efcfe156f12ed23615f2465a796faad8b91e4" integrity sha512-OnVto25Sj7Ghp0vVm2THsngdze3tVq0LOg9LUHsAVXMecpqOP0Y8zaATW8M9gEgs2lNEAcCqV0P/hlmOPhVRvg== -object-assign@^4.1.1: +object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== @@ -7245,6 +7310,13 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + promise@^8.0.3: version "8.3.0" resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" @@ -7260,7 +7332,14 @@ prompts@^2.0.1, prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: +prop-types@15.5.8: + version "15.5.8" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.8.tgz#6b7b2e141083be38c8595aa51fc55775c7199394" + integrity sha512-QiDx7s0lWoAVxmEmOYnn3rIZGduup2PZgj3rta5O5y0NfPKu3ApWi+GdMfTto7PmO/5+p4yamSLMZkj0jaTL4A== + dependencies: + fbjs "^0.8.9" + +prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -7363,6 +7442,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-native-calendar-picker@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/react-native-calendar-picker/-/react-native-calendar-picker-7.1.3.tgz#95fa3ea23be06715e232878fcee05a4a00531fa4" + integrity sha512-hy+dIfkYCJFSZ4g//wZmba4VCgghmTzPDqWqDsr0OrTokeaoftuOsBCw7yTYy9CSY3VuLKiBhnuaf0nZP7znYA== + dependencies: + node-git-hooks "^1.0.1" + prop-types "^15.6.0" + recyclerlistview "^3.0.0" + react-native-codegen@^0.70.6: version "0.70.6" resolved "https://registry.yarnpkg.com/react-native-codegen/-/react-native-codegen-0.70.6.tgz#2ce17d1faad02ad4562345f8ee7cbe6397eda5cb" @@ -7591,6 +7679,15 @@ recast@^0.20.4: source-map "~0.6.1" tslib "^2.0.1" +recyclerlistview@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/recyclerlistview/-/recyclerlistview-3.0.5.tgz#50bf5bcaa401d56bb6bb264354083f4d424408eb" + integrity sha512-JVHz13u520faEsbVqFrJOMuJjc4mJlOXODe5QdqAJHdl5/IpyYeo83uiHrpzxyLb8QtJ0889JMlDik+Z1Ed0QQ== + dependencies: + lodash.debounce "4.0.8" + prop-types "15.5.8" + ts-object-utils "0.0.5" + regenerate-unicode-properties@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz#7c3192cab6dd24e21cb4461e5ddd7dd24fa8374c" @@ -7816,7 +7913,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -7923,6 +8020,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -8486,6 +8588,11 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== +ts-object-utils@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/ts-object-utils/-/ts-object-utils-0.0.5.tgz#95361cdecd7e52167cfc5e634c76345e90a26077" + integrity sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA== + tslib@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" @@ -8564,6 +8671,11 @@ typescript@^4.9.4: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78" integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg== +ua-parser-js@^0.7.30: + version "0.7.33" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.33.tgz#1d04acb4ccef9293df6f70f2c3d22f3030d8b532" + integrity sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw== + uglify-es@^3.1.9: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -8790,7 +8902,7 @@ whatwg-encoding@^1.0.5: dependencies: iconv-lite "0.4.24" -whatwg-fetch@^3.0.0: +whatwg-fetch@>=0.10.0, whatwg-fetch@^3.0.0: version "3.6.2" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== From ae7463c50060039565cb8fbee90686efb92b43fb Mon Sep 17 00:00:00 2001 From: Gustavo Rivero Date: Mon, 30 Jan 2023 16:12:22 -0400 Subject: [PATCH 057/109] Update --- src/components/ProfileComponents/ProfileComponent.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/components/ProfileComponents/ProfileComponent.js b/src/components/ProfileComponents/ProfileComponent.js index 61e9993..9687b93 100644 --- a/src/components/ProfileComponents/ProfileComponent.js +++ b/src/components/ProfileComponents/ProfileComponent.js @@ -55,7 +55,7 @@ const ProfileComponent = ({ navigation }) => { const date = new Date(data) setBirthday(date) console.log(date) - closeModalDate() + //closeModalDate() } const layout = useWindowDimensions() @@ -373,8 +373,7 @@ const ProfileComponent = ({ navigation }) => { maxDate={initialDate} initialDate={birthday} selectedDayColor={colors.navBar.activeColor} - todayBackgroundColor={colors.gray} - allowRangeSelection={true} + todayBackgroundColor={colors.gray2} /> Date: Mon, 30 Jan 2023 22:02:39 -0400 Subject: [PATCH 058/109] Update --- .../CommentComponents/CommentCard.js | 113 +++++ .../CommentComponents/StyledArea.js | 65 +++ .../CommentComponents/StyledField.js | 29 ++ src/components/LoginComponents/LoginForm.js | 2 +- src/components/Modal.js | 4 +- src/navigation/StackNavigation.js | 20 +- src/pages/Comments/CommentPage.js | 431 ++++++++++++++++++ src/pages/Events/EventPage.js | 5 +- 8 files changed, 661 insertions(+), 8 deletions(-) create mode 100644 src/components/CommentComponents/CommentCard.js create mode 100644 src/components/CommentComponents/StyledArea.js create mode 100644 src/components/CommentComponents/StyledField.js create mode 100644 src/pages/Comments/CommentPage.js diff --git a/src/components/CommentComponents/CommentCard.js b/src/components/CommentComponents/CommentCard.js new file mode 100644 index 0000000..d3f7a39 --- /dev/null +++ b/src/components/CommentComponents/CommentCard.js @@ -0,0 +1,113 @@ +import React from 'react' +import { TouchableOpacity } from 'react-native' +import { Box, VStack, Stack, HStack, Text } from 'native-base' + +import Icon from 'react-native-vector-icons/Ionicons' + +import colors from '../../styled-components/colors' +import useAuthContext from '../../hooks/useAuthContext' + +import { formatDate } from '../../utilities/functions' + +const CommentCard = ({ userID = null, name = '', years = 0, partner = false, date = new Date(), comment = '' }) => { + + const { + state: { user } + } = useAuthContext() + + return ( + + + + + + + {name} + + + + + {years} años {partner && '(Socio)'} + + + + + {userID == user?.id && + + + + + + + + + } + + {formatDate(date)} + + + + + + {comment} + + + + + ) +} + +export default CommentCard \ No newline at end of file diff --git a/src/components/CommentComponents/StyledArea.js b/src/components/CommentComponents/StyledArea.js new file mode 100644 index 0000000..c4720d3 --- /dev/null +++ b/src/components/CommentComponents/StyledArea.js @@ -0,0 +1,65 @@ +import React, { forwardRef, useState } from 'react' +import { Box, TextArea, HStack } from 'native-base' +import { useWindowDimensions } from 'react-native' + +import colors from '../../styled-components/colors' + +const StyledField = ({ style = {}, inputH = null, inputMD = null, textSize = null, inputW = null, borderColor = null, bgColor = null, m = null, py = null, px = null, p = 2, h = null, minH = null, maxH = null, w = null, ...props }, ref) => { + + const layout = useWindowDimensions() + + const [height, setHeight] = useState(7) + + const inputStyle = { + ...style + } + + return ( + + + +