1 00:00:02,120 --> 00:00:07,130 Vamos começar gerenciando o estado de carregamento aqui na tela de autenticação, porque obviamente quero dar 2 00:00:07,130 --> 00:00:10,570 ao usuário algum feedback enquanto aguardamos uma resposta no momento. 3 00:00:10,670 --> 00:00:17,060 Para isso, podemos importar o indicador de atividade que você já conhece e gerenciar o 4 00:00:17,810 --> 00:00:26,990 estado de carregamento aqui, adicionando outro estado aqui, isLoading e defina isLoading, que inicializamos como false, porque inicialmente não estamos carregando e 5 00:00:26,990 --> 00:00:36,470 agora aqui quando estamos nessa autenticação manipulador, posso adicionar assíncrono aqui, porque é claro que a inscrição aqui retorna uma promessa, a mesma 6 00:00:37,370 --> 00:00:39,860 para o login, portanto, essas 7 00:00:39,920 --> 00:00:46,040 funções do criador de ações retornam promessas. Assim, podemos aguardar o resultado do 8 00:00:46,070 --> 00:00:52,820 despacho, que finalmente usa essas promessas que recebemos e basicamente inicia todo esse processo. Antes de esperarmos 9 00:00:52,820 --> 00:00:56,890 isso, posso definir isLoading como true, portanto, quando iniciamos todo 10 00:00:56,900 --> 00:01:02,720 esse processo, antes de enviarmos uma solicitação e depois defina isLoading como false assim que 11 00:01:02,840 --> 00:01:06,480 concluirmos essa solicitação, independentemente de sua falha ou não. 12 00:01:07,720 --> 00:01:10,320 E agora o isLoading pode ser usado para exibir 13 00:01:10,330 --> 00:01:15,760 um controle giratório de carregamento. Depende de você exibi-lo, por exemplo, você pode dizer que deseja substituir esse botão 14 00:01:15,760 --> 00:01:17,890 de inscrição pelo girador de carregamento. 15 00:01:17,890 --> 00:01:21,420 Então, aqui podemos dizer se isLoading é verdadeiro, quero mostrar 16 00:01:21,490 --> 00:01:25,010 o indicador de atividade assim, caso contrário mostrarei o botão, 17 00:01:25,090 --> 00:01:27,520 então essa é a sintaxe que 18 00:01:27,520 --> 00:01:29,590 poderíamos usar, defina o tamanho 19 00:01:29,590 --> 00:01:38,510 aqui como small e a cor em Colors. primário, digamos. Agora, se tentarmos e voltarmos, aqui 20 00:01:38,510 --> 00:01:47,660 no iOS, se eu tentar fazer login, na verdade vejo o botão giratório de carregamento e volto, então isso 21 00:01:47,900 --> 00:01:54,800 funciona, agora para o tratamento de erros. 22 00:01:54,800 --> 00:01:54,800 Para o tratamento de erros, você também aprende como isso funciona. 23 00:01:54,830 --> 00:01:58,900 É claro que você também pode gerenciar seu 24 00:01:58,940 --> 00:02:05,180 estado de erro aqui. Você também pode usar o redutor de uso para 25 00:02:05,180 --> 00:02:06,250 mesclar 26 00:02:06,470 --> 00:02:11,540 o estado de carregamento e de erro em um objeto. 27 00:02:11,570 --> 00:02:22,010 atribuir um valor para que isso seja indefinido inicialmente e, em seguida, aqui, podemos agrupar try catch em torno deste despacho aqui, 28 00:02:22,010 --> 00:02:27,140 onde obtemos um erro em potencial e definimos nosso erro para 29 00:02:27,140 --> 00:02:34,640 esta mensagem de erro que estamos recebendo de volta e antes de enviar a solicitação, Também 30 00:02:34,640 --> 00:02:41,420 quero definir meu erro novamente como nulo. Portanto, agora estamos armazenando um erro em potencial aqui no erro definido 31 00:02:41,610 --> 00:02:45,620 e só quero lançar um alerta, mostrar um alerta ao usuário se recebermos um erro. 32 00:02:45,630 --> 00:02:52,110 Portanto, para isso, é necessário certificar-se de importar o alerta do React Native e também 33 00:02:52,110 --> 00:02:58,860 usar o efeito do react porque o efeito do uso nos permite reagir a alterações no estado 34 00:02:58,860 --> 00:03:09,340 de erro e mostrar o alerta de erro, se houver um erro. Então, talvez aqui depois de configurar o redutor, possamos adicionar o efeito use e 35 00:03:09,340 --> 00:03:14,620 minha dependência aqui seja a variável ou a constante do estado de erro e, se 36 00:03:14,620 --> 00:03:23,190 houver um erro, se for verdadeiro, quero mostrar um alerta com o alerta API onde digo que ocorreu um erro e minha mensagem é 37 00:03:23,910 --> 00:03:29,580 o erro que deve ser uma string e adicionarei um botão onde tenho um texto de 38 00:03:29,940 --> 00:03:34,840 OK e, é claro, você pode adicionar mais botões para fazer coisas diferentes. 39 00:03:34,930 --> 00:03:41,950 Agora podemos simular isso no criador da ação, indo para lá e para fazer login, digamos que removemos o D aqui, 40 00:03:42,370 --> 00:03:49,350 para que este seja um URL incorreto no final. Se agora tentarmos fazer login aqui, 41 00:03:52,500 --> 00:03:54,790 recebo este erro. 42 00:03:54,810 --> 00:03:55,340 Agora 43 00:03:55,350 --> 00:04:01,920 isso é bom, mas também existem outros tipos de erros que eu quero resolver, por exemplo, e se eu 44 00:04:01,920 --> 00:04:08,930 fizer login com um endereço de email que não existe? É claro que também quero mostrar um erro ao 45 00:04:08,930 --> 00:04:15,670 usuário, mas apenas mostro que algo deu errado, que não é exatamente o erro que gostaria de mostrar. 46 00:04:15,700 --> 00:04:21,850 Agora estou mostrando esse erro, porque no criador da ação aqui, se a resposta não estiver boa, lancei algo 47 00:04:21,850 --> 00:04:22,690 deu errado. 48 00:04:22,690 --> 00:04:27,910 Agora, o problema é quando enviamos um email incorreto ou uma senha incorreta, também como 49 00:04:27,910 --> 00:04:35,410 forma de inscrição, se enviarmos algo que não seja um email ou uma senha muito curta, se isso acontecer, receba de volta 50 00:04:35,410 --> 00:04:42,890 uma resposta com um código de status de 400 alguma coisa e obtemos alguns detalhes do erro como parte da resposta 51 00:04:42,890 --> 00:04:43,750 e agora, 52 00:04:43,760 --> 00:04:46,490 com o tratamento de erros, não os vemos, 53 00:04:46,740 --> 00:04:50,590 por isso precisamos mudar isso. Em vez de lançar imediatamente um 54 00:04:50,600 --> 00:04:53,730 erro aqui, se a resposta não estiver correta, ainda quero investigar. 55 00:04:53,870 --> 00:04:57,980 Portanto, terei meus dados de resposta 56 00:04:57,980 --> 00:05:06,230 de erro que recebo aguardando resposta JSON aqui. Portanto, faço o mesmo que no caso de sucesso, mas o extraio para um campo 57 00:05:06,250 --> 00:05:09,550 diferente e agora aqui quero console registrar os dados da resposta 58 00:05:09,580 --> 00:05:12,710 a erros, para ter uma ideia de como isso é. 59 00:05:12,720 --> 00:05:20,680 Então agora vamos tentar digitar um endereço de e-mail que não existe novamente e agora temos nosso erro estranho que você acabou de ver, mas agora temos essa saída interessante 60 00:05:20,680 --> 00:05:25,600 aqui e você vê que esse é o objeto de erro que o Firebase retornou para mim e, é 61 00:05:25,600 --> 00:05:26,870 claro, isso depende da 62 00:05:26,920 --> 00:05:30,130 API com a qual você está falando, que tipo de erro você 63 00:05:30,130 --> 00:05:35,560 está recebendo, quando está recebendo e quais detalhes ele inclui. Isso, como você vê, é um objeto 64 00:05:35,560 --> 00:05:43,060 que possui uma chave de erro, que é outro objeto que possui um código de erro, alguns detalhes sobre os erros 65 00:05:43,060 --> 00:05:48,490 e, em seguida, esta mensagem que é, por exemplo, e-mail não encontrada e é essa 66 00:05:48,490 --> 00:05:53,060 a parte que me interessa. A propósito, nos documentos oficiais, você encontrará mais identificadores de erros 67 00:05:53,080 --> 00:05:55,860 em potencial que poderia estar obtendo. Então, no 68 00:05:55,890 --> 00:06:04,800 final, é isso que quero verificar agora. Quero obter meu ID de erro, digamos, a partir dos dados da resposta ao 69 00:06:04,800 --> 00:06:11,160 erro, acessando o campo de erro, que é esse campo que me dá acesso a esse objeto que, em seguida, possui 70 00:06:11,160 --> 00:06:12,580 esse campo de mensagem. 71 00:06:12,720 --> 00:06:19,470 Portanto, aqui, acesso a mensagem para receber essa mensagem e agora podemos verificar isso, podemos verificar se o 72 00:06:20,040 --> 00:06:27,260 ID do erro é igual ao e-mail não encontrado. Se for esse o caso, desejo definir minha própria 73 00:06:27,270 --> 00:06:33,090 mensagem personalizada. Por isso, adicionarei uma mensagem variável, que é algo que deu errado por padrão, 74 00:06:33,300 --> 00:06:38,580 mas aqui, se sabemos que o problema é que não encontramos um e-mail endereço, 75 00:06:38,610 --> 00:06:44,550 poderíamos dizer que este e-mail não foi encontrado e adicionarei mais se o check-in for um segundo. 76 00:06:44,550 --> 00:06:49,650 Portanto, isso é algo que eu quero verificar aqui e, no final, tenho uma mensagem que agora desejo lançar, 77 00:06:49,650 --> 00:06:50,100 então 78 00:06:50,130 --> 00:06:55,860 agora lançarei um novo erro com minha própria mensagem personalizada. Portanto, outra verificação que 79 00:06:55,860 --> 00:07:03,890 eu quero adicionar com uma declaração else / if aqui é se o ID 80 00:07:03,890 --> 00:07:15,050 do erro é para entrar com uma senha inválida, digamos. Para que eu possa verificar isso e definir a mensagem igual a essa senha não é válida e 81 00:07:15,050 --> 00:07:16,480 agora vamos tentar novamente. 82 00:07:16,580 --> 00:07:23,240 Vamos voltar e digitar um endereço de e-mail que não existe, login rápido e obtemos esse endereço de e-mail que 83 00:07:23,250 --> 00:07:26,210 não foi encontrado ou que não foi encontrado. 84 00:07:26,430 --> 00:07:35,030 Agora, vamos tentar um endereço de e-mail válido, mas na verdade uma senha inválida, como essa, e obtemos essa senha 85 00:07:35,030 --> 00:07:36,550 não é válida; 86 00:07:36,590 --> 00:07:39,370 agora, fornecemos um feedback melhor ao usuário. 87 00:07:39,410 --> 00:07:46,880 Agora vamos implementar o mesmo para a inscrição, por isso vou copiar isso e ir para o meu caso de inscrição aqui 88 00:07:46,880 --> 00:07:49,310 e ali, tenho apenas códigos de erro 89 00:07:49,310 --> 00:07:52,130 diferentes, existem códigos como o e-mail, se esse 90 00:07:52,130 --> 00:07:54,270 endereço de e-mail já existir. 91 00:07:54,560 --> 00:08:02,370 Por isso, extraio meu ID de erro da mesma maneira, mas verifiquei se existe um email e, se esse for o erro, 92 00:08:03,300 --> 00:08:04,740 digo que já existe. 93 00:08:08,000 --> 00:08:09,710 Agora, essa é realmente a 94 00:08:09,710 --> 00:08:15,830 única coisa que quero verificar aqui. Também existem outros erros que você pode obter e, por exemplo, pode simplesmente desativar sua 95 00:08:15,830 --> 00:08:20,860 validação aqui e ver qual erro está recebendo se estiver enviando um e-mail inválido. endereço de e-mail 96 00:08:20,870 --> 00:08:22,950 registrando esse ID de erro e, em 97 00:08:22,960 --> 00:08:28,850 seguida, você também pode verificar isso. Aqui, implementarei esta mensagem e, portanto, agora, se eu tentar me inscrever aqui com 98 00:08:28,850 --> 00:08:37,070 um endereço de e-mail que eu já usei, assim, recebo esse e-mail já existe. Por outro lado, se eu usar um endereço de 99 00:08:37,100 --> 00:08:44,250 e-mail válido, é claro, isso só ocorre no Firebase; então, se você for autenticar e 100 00:08:44,250 --> 00:08:47,530 atualizar isso, verá o segundo usuário. 101 00:08:47,580 --> 00:08:52,040 É assim que você pode adicionar um controle giratório de carregamento e tratamento de erros com autenticação. 102 00:08:52,080 --> 00:08:57,420 Tudo bem, mas agora seria bom também deixar a tela e ir para o nosso aplicativo e começar a 103 00:08:57,420 --> 00:08:59,670 trabalhar com o token que estamos recebendo.