Comencemos por administrar el estado de carga aquí en la pantalla de autenticación porque obviamente quiero
darle al usuario algunos comentarios cuando estamos esperando una respuesta.
Para esto, podemos importar el indicador de actividad que ya conoce y administrar el estado
de carga aquí agregando otro estado aquí, isLoading y set isLoading, que inicializamos en falso porque inicialmente no estamos cargando y ahora
aquí cuando estamos en esta autenticación controlador, puedo agregar asíncrono aquí porque, por supuesto, registrarse aquí devuelve una promesa, lo mismo para el
inicio de sesión, por lo
que estas acciones funciones del creador devuelven promesas. Por lo tanto, podemos esperar el resultado del
envío que finalmente utiliza estas promesas que obtenemos y básicamente inicia todo este proceso y antes de esperar esto, puedo
establecer isLoading en verdadero, por lo que cuando comenzamos todo este proceso,
antes de enviar una solicitud y, a partir de entonces, se establece Cargar en falso una vez que
hayamos terminado con esta solicitud, sin importar si falló o no.
Y ahora isLoading se puede usar para mostrar una
rueda giratoria de carga, depende de usted dónde lo muestre, por ejemplo, podría decir que desea reemplazar este botón de
registro con la rueda giratoria de carga.
Entonces, aquí podríamos decir si isLoading es verdadero, quiero mostrar
el indicador de actividad así, de lo contrario mostraré el
botón, así que esta es la sintaxis
que podríamos usar, establezca el
tamaño aquí en pequeño y el color en Colores. primaria digamos. Ahora, si lo intentamos y volvemos,
aquí en iOS si intento iniciar sesión, de hecho, veo el control de carga y luego estoy de regreso, así que
eso
funciona, ahora para el manejo de errores. Para el manejo de errores, también aprende cómo funciona.
Por supuesto, también puede administrar su estado de error
aquí, nuevamente podría usar el reductor de uso para combinar el estado de carga
y error
en un objeto, pero lo haré así, error y establecer error con
la ayuda del estado de uso que inicialmente no No asigne un valor para que esto sea indefinido inicialmente y luego aquí, podemos ajustar el
problema de este envío aquí donde obtenemos un error potencial y establecemos
nuestro error en este mensaje de error que estamos volviendo y antes de enviar la solicitud, También quiero
volver a establecer mi error en nulo. Así que ahora estamos almacenando un error potencial aquí en el error
establecido y solo quiero lanzar una alerta, mostrarle una alerta al usuario si recibimos un error.
Entonces, para esto, debe asegurarse de importar la alerta de React Native y también usar
el efecto de reaccionar porque usar efecto nos permite reaccionar a los cambios en el estado
de error y mostrar la alerta de error si tenemos un error. Entonces, tal vez aquí después de configurar el reductor, podemos agregar un efecto de uso
y mi dependencia aquí es la variable de estado de error o constante y si
tenemos un error, entonces si esto es verdadero, entonces quiero mostrar una alerta con la alerta API donde digo que ocurrió un error y mi
mensaje es el error que debería ser una cadena y agregaré un botón donde tengo un texto
de OK y, por supuesto, podría agregar más botones donde haga cosas diferentes.
Ahora podemos simular esto en el creador de la acción yendo allí y para iniciar sesión, digamos que eliminamos esa D
aquí, de modo que al final sea una URL incorrecta. Si ahora intentamos iniciar sesión aquí, me
sale este error.
Ahora
eso es bueno, pero también hay otro tipo de errores que quiero manejar, por ejemplo, ¿qué sucede si inicio
sesión con una dirección de correo electrónico que no existe? Por supuesto, también quiero mostrar un error al usuario
y lo hago, pero solo muestro que algo salió mal, que no es exactamente el error que me gustaría mostrar.
Ahora estoy mostrando este error porque en el creador de la acción aquí, si la respuesta no está bien, arrojo algo que
salió mal.
Ahora el problema es cuando enviamos un correo electrónico incorrecto o una contraseña incorrecta, también por el
camino para registrarse si enviamos algo que no es un correo electrónico o una contraseña que es demasiado corta, si eso sucede, entonces lo
haremos recibimos una respuesta con un código de estado de 400 algo y obtenemos algunos detalles de error como parte de la respuesta y
en este
momento con nuestro manejo de errores, no los vemos,
por lo que debemos cambiar esto. En lugar de arrojar inmediatamente un
error aquí si la respuesta no está bien, todavía quiero investigarlo.
Entonces tendré mis datos de respuesta de
error que obtengo esperando la respuesta JSON aquí. Así que hago lo mismo que en el caso de éxito, pero lo extraigo en un campo
diferente y ahora aquí quiero consolar el registro de los datos de respuesta
de error para que tengamos una idea de cómo se ve esto.
Así que ahora intentemos ingresar una dirección de correo electrónico que no existe nuevamente y ahora tenemos nuestro extraño error que acabas de ver, pero ahora tenemos esta salida
interesante aquí y ves que este es el objeto de error que Firebase me devolvió y, por supuesto,
depende de la API
con la que está hablando, qué tipo de error está recibiendo
y cuándo lo está obteniendo y qué detalles incluye. Esto, como puede ver, es un objeto
que tiene una clave de error que es otro objeto que tiene un código de error, algunos detalles sobre los errores
y luego este mensaje que es, por ejemplo, correo electrónico no encontrado y esa es
la parte que me interesa. Por cierto, en los documentos oficiales, encontrará más identificadores de
error potenciales que podría estar obteniendo. Entonces, al
final, eso es lo que quiero verificar ahora. Quiero obtener mi ID de error, digamos de los datos de respuesta de error
accediendo al campo de error allí, que es este campo que me da acceso a este objeto que luego tiene
este campo de mensaje.
Por lo tanto, aquí, luego accedo al mensaje para obtener este mensaje y ahora podemos verificar esto, podemos verificar si la
identificación del error es igual al correo electrónico no encontrado. Si ese es el caso, quiero configurar mi propio mensaje
personalizado, así que aquí agregaré un mensaje variable que es algo que salió mal de manera predeterminada, pero
luego, si sabemos que el problema es que no encontramos un correo electrónico dirección, podríamos
decir que no se pudo encontrar este correo electrónico y agregaré más si los cheques en un segundo.
Esto es algo que quiero verificar aquí y al final, por lo tanto, tengo un mensaje que ahora quiero lanzar,
así
que ahora arrojaré un nuevo error con mi propio mensaje personalizado. Entonces, otra comprobación que
quiero agregar con una declaración else / if aquí es si la identificación del error
es para iniciar sesión en una contraseña no válida, digamos. Entonces puedo verificar eso y configurar el mensaje igual a esta contraseña no es válida y ahora vamos
a intentarlo de nuevo.
Regresemos e ingresemos una dirección de correo electrónico que no existe, inicio de sesión rápido y obtenemos que esta dirección de correo electrónico no se
pudo encontrar o este correo electrónico no se pudo encontrar.
Ahora intentemos una dirección de correo electrónico válida, pero en realidad una contraseña que no es válida, como esta, y obtenemos que esta contraseña no
es válida, así que
ahora le damos al usuario una mejor respuesta.
Ahora implementemos lo mismo para registrarme, así que copiaré eso e iré a mi caso de registro aquí y allá. Solo tengo
diferentes códigos de error, allí tengo códigos
como el correo electrónico existe, si esa dirección
de correo electrónico ya existe.
Entonces extraigo mi ID de error de la misma manera, pero luego verifico si existe un correo electrónico y si este es el error, digo que este
correo electrónico ya existe.
Ahora bien, esto es lo
único que quiero comprobar aquí, también hay otros errores que podría obtener y, por ejemplo, simplemente puede desactivar su validación aquí
y ver qué error obtiene si envía un correo electrónico no válido. ingrese la dirección de correo
registrando ese ID de error y luego
puede verificarlo también, aquí solo implementaré este mensaje y, por lo tanto, ahora si intento registrarme aquí con una dirección de
correo electrónico que ya utilicé, de esta manera, obtengo Este correo electrónico ya existe. Por otro lado, si uso una dirección de correo
electrónico válida, por supuesto, esto solo pasa por Firebase y, de hecho, si va a la autenticación
y actualiza esto, verá ese segundo usuario.
Así es como puede agregar una flecha de carga y manejo de errores con autenticación.
Eso está bien, pero ahora finalmente sería bueno dejar también esa pantalla e ir a nuestra aplicación y luego comenzar
a trabajar con ese token que estamos obteniendo.