Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

agregar metodo getUserInfo #5

Merged
merged 6 commits into from
Nov 3, 2023

Conversation

dam788
Copy link

@dam788 dam788 commented Oct 25, 2023

LINK DE TICKET:

https://janiscommerce.atlassian.net/browse/APPSRN-230

LINK DE SUBTAREA:

https://janiscommerce.atlassian.net/browse/APPSRN-234

DESCRIPCIÓN DEL REQUERIMIENTO:

Contexto

En muchos eventos necesitamos obtener info del usuario y hoy estamos todo usandolo por el pkg oauth. El problema de esto es que es un hook y en varias ocasiones necesitamos obtener la info fuera del contexto de react.

Necesidad

Dado que aun no tenemos en claro como vamos a encarar el uso de async storage, vamos a ir por el camino de tener un método que nos brinde la información del usuario sin depender si estamos en el contexto de la libreria o no.

"Se necesita tener un metodo por ejemplo getUserInfo que devuelva informacion de usuario para el uso de analyticis y crashlytics"

DESCRIPCIÓN DE LA SOLUCIÓN:

  • se creó una función de utilidad llamada getUserInfo (es una función asíncrona) que trae el token desde localStorage y desencripta la data del usuario (no trae ningún token) y lo devuelve en el siguiente formato:
{
  "appClientId": "6bc6b92e-6283-4ad0-939a-8f16072d2e7f",
  "aud": "6bc6b92e-6283-4ad0-939a-8f16072d2e7f",
  "createdAt": "2020-12-14T18:45:28.306Z",
  "email": "fernando.colom@janis.im",
  "exp": 1697285104,
  "family_name": "Colom",
  "given_name": "Fernando",
  "iat": 1697112304,
  "images": {
    "big": "https://www.gravatar.com/avatar/034caa1d46010b8624d1b8cffaee9a88?d=404&s=512",
    "original": "https://www.gravatar.com/avatar/034caa1d46010b8624d1b8cffaee9a88?d=404",
    "thumbnail": "https://www.gravatar.com/avatar/034caa1d46010b8624d1b8cffaee9a88?d=404&s=36",
    "url": "https://www.gravatar.com/avatar/034caa1d46010b8624d1b8cffaee9a88?d=404&s=36"
  },
  "isDev": true,
  "iss": "https://id.janisdev.in",
  "locale": "en-US",
  "mainColor": "#e70c6e",
  "name": "Fernando Colom",
  "profileName": "Admin",
  "refId": null,
  "secondaryColor": "#fbfaf8",
  "sub": "5fd7b2c8d71fb1e2743bb64e",
  "tcode": "fizzmodarg",
  "tcurrency": "ARS",
  "tcurrencyDisplay": "symbol",
  "tid": "631fab63f3f96415abfeabd8",
  "timage": "https://cdn.id.janisdev.in/client-images/631fab63f3f96415abfeabd8/b25d5d55-52a5-41f8-bf22-43fc0963c875.png",
  "tname": "Fizzmod",
  "updated_at": 1697053475
}

CÓMO SE PUEDE PROBAR?

  1. Entramos a la rama APPSRN-234-agregar-metodo-get-usernfo en @janis-commerce/oauth-native
  2. En consola tiramos yalc push && yalc publish
  3. En el repo de nuestra app tiramos yalc add @janiscommerce/oauth-native y npm i
  4. En la página home agregamos lo siguiente:
import {getUserInfo} from '@janiscommerce/oauth-native';
  
  ...
  
  const initUserInfo = async () => {
    const [userInfo, userInfoError] = await promiseWrapper(getUserInfo());

    if (userInfoError) {
      return console.log({userInfoError})
    }
    return console.log({userInfo})
  }

  useEffect(() => {
    initUserInfo();
  }, [])

SCREENSHOTS:

DATOS EXTRA A TENER EN CUENTA:

CHANGELOG:

El dev debera modificar el changelog ya con el pr.

Pasos para realizar por el dev encargado de ejecutar merge y push a master

Cambiar version en package.json

Guardar cambios

Ejecutar git tag -a v[version] -m "mensaje"

Ejecutar git push origin master --follow-tags

@github-actions
Copy link

github-actions bot commented Oct 26, 2023

Pull Request Test Coverage Report for Build 6737311536

  • 9 of 9 (100.0%) changed or added relevant lines in 1 file are covered.
  • No unchanged relevant lines lost coverage.
  • Overall coverage remained the same at 100.0%

Totals Coverage Status
Change from base Build 6188115153: 0.0%
Covered Lines: 141
Relevant Lines: 141

💛 - Coveralls

Copy link

@WilliamSaya-lvl30 WilliamSaya-lvl30 left a comment

Choose a reason for hiding this comment

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

En el requerimiento especifica que la funcion se pueda usar fuera del contexto de react, exportar desde el index esta función para poder usarla independientemente

Copy link
Contributor

@christian97dd christian97dd left a comment

Choose a reason for hiding this comment

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

dejé unos comentarios

*/
export const getUserInfo = async () => {
try {
const getStorageTokens = await AsyncStorage.getItem(keys.OAUTH_TOKENS_KEY);
Copy link
Contributor

Choose a reason for hiding this comment

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

fijate que para hacer esto, ya hay una funcion que se llama getTokensCache. Nos va a servír usar la función ya que si por x motivo el día de mañana tenemos que cambiar las keys que guardamos en async storage, solo cambiemos la función y sigue todo ok

Copy link
Author

Choose a reason for hiding this comment

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

corregido

const getStorageTokens = await AsyncStorage.getItem(keys.OAUTH_TOKENS_KEY);
const oauthTokens = parseJson(getStorageTokens) || {};

if (!Object.keys(oauthTokens).length) throw Error('cant get oauth tokens');
Copy link
Contributor

Choose a reason for hiding this comment

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

acá te faltó crear una nueva instancia de la clase error (osea throw new Error('...'))

Copy link
Author

Choose a reason for hiding this comment

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

corregido


const {idToken = ''} = oauthTokens;

if (!idToken) throw Error('cant get id token');
Copy link
Contributor

Choose a reason for hiding this comment

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

en este caso lo mismo que lo de arriba

Copy link
Author

Choose a reason for hiding this comment

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

corregido

@christian97dd christian97dd merged commit 0ddf17f into master Nov 3, 2023
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants