1 00:00:02,120 --> 00:00:07,130 Cominciamo con la gestione dello stato di caricamento qui nella schermata di autenticazione perché ovviamente voglio 2 00:00:07,130 --> 00:00:10,570 dare un feedback all'utente quando stiamo attualmente aspettando una risposta. 3 00:00:10,670 --> 00:00:17,060 Per questo, possiamo importare l'indicatore di attività che già conosci e gestire qui lo 4 00:00:17,810 --> 00:00:26,990 stato di caricamento aggiungendo qui un altro stato, isLoading e impostando isLoading che inizializziamo su false perché inizialmente non stiamo caricando 5 00:00:26,990 --> 00:00:36,470 e ora qui quando siamo in questa autenticazione gestore, posso aggiungere asincrono qui perché ovviamente iscriversi qui restituisce una promessa, lo stesso 6 00:00:37,370 --> 00:00:39,860 per il login, quindi queste 7 00:00:39,920 --> 00:00:46,040 funzioni del creatore di azioni restituiscono promesse. Quindi possiamo aspettare il risultato dell'invio che 8 00:00:46,070 --> 00:00:52,820 alla fine usa queste promesse che otteniamo e fondamentalmente dà il via a questo intero processo e prima 9 00:00:52,820 --> 00:00:56,890 di aspettare questo, posso impostare isLoading su true, quindi quando iniziamo 10 00:00:56,900 --> 00:01:02,720 l'intero processo, prima di inviare una richiesta e successivamente impostare isLoading su false una volta terminata 11 00:01:02,840 --> 00:01:06,480 questa richiesta, indipendentemente dal fatto che abbia fallito o meno. 12 00:01:07,720 --> 00:01:10,320 E ora isLoading può essere utilizzato per visualizzare uno 13 00:01:10,330 --> 00:01:15,760 spinner di caricamento, dipende da te dove lo visualizzi, ad esempio potresti dire che vuoi sostituire questo pulsante di 14 00:01:15,760 --> 00:01:17,890 iscrizione con lo spinner di caricamento. 15 00:01:17,890 --> 00:01:21,420 Quindi qui potremmo dire se isLoading è vero, voglio mostrare 16 00:01:21,490 --> 00:01:25,010 l'indicatore di attività in questo modo, altrimenti mostrerò il pulsante, 17 00:01:25,090 --> 00:01:27,520 quindi questa è la sintassi che 18 00:01:27,520 --> 00:01:29,590 potremmo usare, impostare qui le 19 00:01:29,590 --> 00:01:38,510 dimensioni su small e il colore su Colors. primario diciamo. Ora se ci proviamo e torniamo 20 00:01:38,510 --> 00:01:47,660 indietro, qui su iOS se provo ad accedere, in effetti vedo lo spinner di caricamento e poi sono tornato, quindi 21 00:01:47,900 --> 00:01:54,800 funziona, ora per la gestione degli errori. 22 00:01:54,800 --> 00:01:54,800 Per la gestione degli errori, impari anche come funziona. 23 00:01:54,830 --> 00:01:58,900 Ovviamente puoi anche gestire il tuo stato di errore 24 00:01:58,940 --> 00:02:05,180 qui, puoi utilizzare nuovamente il riduttore per unire il caricamento e lo stato di 25 00:02:05,180 --> 00:02:06,250 errore in 26 00:02:06,470 --> 00:02:11,540 un oggetto, ma lo farò in questo modo, errore e impostazione dell'errore 27 00:02:11,570 --> 00:02:22,010 con l'aiuto dello stato d'uso che inizialmente non assegnare un valore in modo che inizialmente non sia definito e quindi qui, possiamo concludere provare 28 00:02:22,010 --> 00:02:27,140 a aggirare questo dispacciamento qui dove otteniamo un potenziale errore e impostiamo 29 00:02:27,140 --> 00:02:34,640 il nostro errore su questo messaggio di errore che stiamo tornando e prima di inviare la richiesta, Voglio 30 00:02:34,640 --> 00:02:41,420 anche riportare il mio errore su null. Quindi ora stiamo memorizzando un potenziale errore qui nell'errore impostato 31 00:02:41,610 --> 00:02:45,620 e voglio solo lanciare un avviso, mostrare un avviso all'utente se otteniamo un errore. 32 00:02:45,630 --> 00:02:52,110 Pertanto, per questo è necessario assicurarsi di importare l'avviso da React Native e anche di 33 00:02:52,110 --> 00:02:58,860 usare effect from reply perché use effect ci consente di reagire ai cambiamenti nello stato di 34 00:02:58,860 --> 00:03:09,340 errore e di mostrare l'avviso di errore se si verifica un errore. Quindi forse qui dopo aver impostato il riduttore, possiamo aggiungere l'effetto use e la mia 35 00:03:09,340 --> 00:03:14,620 dipendenza qui è la variabile o la costante dello stato di errore e se abbiamo un 36 00:03:14,620 --> 00:03:23,190 errore, quindi se questo è vero, allora voglio mostrare un avviso con l'avviso API in cui dico che si è verificato un errore e il mio 37 00:03:23,910 --> 00:03:29,580 messaggio è l'errore che dovrebbe essere una stringa e aggiungerò un pulsante in cui ho un testo 38 00:03:29,940 --> 00:03:34,840 di OK e ovviamente potresti aggiungere più pulsanti in cui fai cose diverse. 39 00:03:34,930 --> 00:03:41,950 Ora possiamo simularlo nel creatore dell'azione andando lì e per il login, supponiamo di rimuovere quella D qui, in 40 00:03:42,370 --> 00:03:49,350 modo che alla fine questo sia un URL errato. Se ora proviamo ad accedere qui, 41 00:03:52,500 --> 00:03:54,790 visualizzo questo errore. 42 00:03:54,810 --> 00:03:55,340 Ora 43 00:03:55,350 --> 00:04:01,920 va bene, ma ci sono anche altri tipi di errori che voglio gestire, ad esempio se 44 00:04:01,920 --> 00:04:08,930 accedo con un indirizzo e-mail che non esiste? Ovviamente voglio mostrare anche un errore all'utente e 45 00:04:08,930 --> 00:04:15,670 lo faccio, ma mostro solo qualcosa che è andato storto, che non è esattamente l'errore che vorrei mostrare. 46 00:04:15,700 --> 00:04:21,850 Ora sto mostrando questo errore perché nel creatore dell'azione qui, se la risposta non è OK, lancio qualcosa è 47 00:04:21,850 --> 00:04:22,690 andato storto. 48 00:04:22,690 --> 00:04:27,910 Ora il problema è quando inviamo un'e-mail errata o una password errata, anche per la 49 00:04:27,910 --> 00:04:35,410 registrazione se inviamo qualcosa che non è un'e-mail o una password che è troppo breve, se ciò accade, allora lo faremo ottenere 50 00:04:35,410 --> 00:04:42,890 una risposta con un codice di stato di 400 qualcosa e otteniamo alcuni dettagli di errore come parte della risposta e 51 00:04:42,890 --> 00:04:43,750 in questo 52 00:04:43,760 --> 00:04:46,490 momento con la nostra gestione degli errori, non 53 00:04:46,740 --> 00:04:50,590 li vediamo, quindi dobbiamo cambiarlo. Invece di lanciare immediatamente un errore 54 00:04:50,600 --> 00:04:53,730 qui se la risposta non va bene, voglio ancora esaminarlo. 55 00:04:53,870 --> 00:04:57,980 Quindi avrò i miei dati di risposta 56 00:04:57,980 --> 00:05:06,230 all'errore che ottengo aspettando la risposta JSON qui. Quindi faccio lo stesso come nel caso del successo, ma lo estraggo in un 57 00:05:06,250 --> 00:05:09,550 campo diverso e ora qui voglio consolare i dati di risposta 58 00:05:09,580 --> 00:05:12,710 dell'errore in modo da avere un'idea di come appare. 59 00:05:12,720 --> 00:05:20,680 Quindi ora proviamo a inserire un indirizzo e-mail che non esiste più e ora otteniamo il nostro strano errore che hai appena visto ma ora abbiamo questo 60 00:05:20,680 --> 00:05:25,600 output interessante qui e vedi che questo è l'oggetto di errore che Firebase mi ha restituito e, 61 00:05:25,600 --> 00:05:26,870 naturalmente, dipende dall'API 62 00:05:26,920 --> 00:05:30,130 con cui stai parlando, dal tipo di errore che stai riscontrando, 63 00:05:30,130 --> 00:05:35,560 da quando lo ricevi e dai dettagli che include. Questo come vedi è un oggetto che 64 00:05:35,560 --> 00:05:43,060 ha una chiave di errore che è ancora un altro oggetto che ha un codice di errore, alcuni dettagli sugli 65 00:05:43,060 --> 00:05:48,490 errori e quindi questo messaggio che è ad esempio l'email non trovata ed è 66 00:05:48,490 --> 00:05:53,060 la parte che mi interessa. A proposito, nei documenti ufficiali troverai più potenziali identificatori 67 00:05:53,080 --> 00:05:55,860 di errori che potresti ottenere. Quindi alla 68 00:05:55,890 --> 00:06:04,800 fine, è quello che voglio controllare ora. Voglio ottenere il mio ID errore, diciamo dai dati di risposta dell'errore accedendo 69 00:06:04,800 --> 00:06:11,160 al campo di errore lì che è questo campo che mi dà accesso a questo oggetto che quindi ha 70 00:06:11,160 --> 00:06:12,580 questo campo di messaggio. 71 00:06:12,720 --> 00:06:19,470 Quindi quindi qui, accedo quindi al messaggio per ottenere questo messaggio e ora possiamo verificarlo, possiamo verificare 72 00:06:20,040 --> 00:06:27,260 se l'ID errore è uguale all'email non trovata. In tal caso, voglio impostare il mio messaggio personalizzato, quindi 73 00:06:27,270 --> 00:06:33,090 qui aggiungerò un messaggio variabile che è solo qualcosa che è andato storto per impostazione predefinita, ma 74 00:06:33,300 --> 00:06:38,580 qui se sappiamo che il problema è che non abbiamo trovato un'e-mail indirizzo, potremmo dire 75 00:06:38,610 --> 00:06:44,550 che questa e-mail non è stata trovata e ne aggiungerò altre in caso di controlli in un secondo. 76 00:06:44,550 --> 00:06:49,650 Quindi questo è qualcosa che voglio controllare qui e alla fine, quindi, ho un messaggio che ora voglio lanciare, 77 00:06:49,650 --> 00:06:50,100 quindi 78 00:06:50,130 --> 00:06:55,860 ora lancerò un nuovo errore con il mio messaggio personalizzato. Quindi un altro controllo 79 00:06:55,860 --> 00:07:03,890 che voglio aggiungere con un'istruzione else / if qui è se l'ID errore 80 00:07:03,890 --> 00:07:15,050 è per l'accesso con password non valida, diciamo. Quindi posso verificarlo e impostare il messaggio uguale a questa password non è valido e ora 81 00:07:15,050 --> 00:07:16,480 proviamo un altro tentativo. 82 00:07:16,580 --> 00:07:23,240 Torniamo indietro e immettiamo un indirizzo e-mail che non esiste, non è possibile trovare questo indirizzo e-mail o 83 00:07:23,250 --> 00:07:26,210 non è possibile trovare questo indirizzo e-mail. 84 00:07:26,430 --> 00:07:35,030 Ora proviamo un indirizzo e-mail valido ma in realtà una password non valida, in questo modo e otteniamo che questa password 85 00:07:35,030 --> 00:07:36,550 non sia valida, 86 00:07:36,590 --> 00:07:39,370 quindi ora forniamo all'utente un feedback migliore. 87 00:07:39,410 --> 00:07:46,880 Ora implementiamo lo stesso per la registrazione, quindi lo copierò e andrò al mio caso di registrazione qui e 88 00:07:46,880 --> 00:07:49,310 là ho solo diversi codici di 89 00:07:49,310 --> 00:07:52,130 errore, lì ho codici come l'e-mail esiste, 90 00:07:52,130 --> 00:07:54,270 se l'indirizzo e-mail esiste già. 91 00:07:54,560 --> 00:08:02,370 Quindi estraggo il mio ID errore allo stesso modo, ma poi controllo la presenza di email e se questo è l'errore, dico che 92 00:08:03,300 --> 00:08:04,740 questa email esiste già. 93 00:08:08,000 --> 00:08:09,710 Ora questa è in 94 00:08:09,710 --> 00:08:15,830 realtà l'unica cosa che voglio controllare qui, ci sono anche altri errori che potresti ottenere e puoi ad esempio semplicemente disattivare 95 00:08:15,830 --> 00:08:20,860 la convalida qui e vedere quale errore stai ricevendo se stai inviando un e- non valido 96 00:08:20,870 --> 00:08:22,950 indirizzo di posta elettronica registrando quell'ID errore 97 00:08:22,960 --> 00:08:28,850 e quindi puoi verificarlo anche qui, qui implementerò solo questo messaggio e quindi ora se provo a registrarmi qui con 98 00:08:28,850 --> 00:08:37,070 un indirizzo e-mail che ho già usato, come questo, ottengo questa e-mail esiste già. D'altra parte, se uso un indirizzo e-mail valido, 99 00:08:37,100 --> 00:08:44,250 ovviamente, questo passa attraverso e su Firebase, quindi, se vai all'autenticazione e aggiorni 100 00:08:44,250 --> 00:08:47,530 questo, vedrai quel secondo utente. 101 00:08:47,580 --> 00:08:52,040 Quindi è così che puoi aggiungere un filatore di caricamento e la gestione degli errori con l'autenticazione. 102 00:08:52,080 --> 00:08:57,420 Va tutto bene, ma ora sarebbe finalmente bello lasciare anche quella schermata e andare sulla nostra app e quindi iniziare 103 00:08:57,420 --> 00:08:59,670 a lavorare con quel token che stiamo ottenendo.