valeu migo <3 se não me engano, o processo de sync deles funciona apenas quando a conexão é retomada dentro do aplicativo ativo. mas também tem a opção de sincronização manual, então provavelmente é possível implementar de forma personalizada a sincronização em background usando um expo-background-task da vida!
Tentei capturar no front-end qualquer erro de uma solicitação que é executada na sincronização de engenharia/estado, mas parece que, da forma como está implementado, esse erro não aparece na exibição.
Você pode confirmar que nenhum desses erros está ocorrendo? Porque estou um pouco confuso.
Entendi!! Dei uma testada aqui forçando o erro da requisição e realmente não apareceu na exibição!! Provavelmente porque no meu exemplo, tô usando o retry de forma infinita sem um try catch. ou seja, vai ficar sempre tentando novamente e não dispara o erro.
Adicione um try catch por volta da chamada a API ( e precisa dar um throw no erro quando a resposta não estiver OK e no catch também) e remova o retry infinito, deixa em um valor menor tipo tentar umas 3 vezes! Acho que assim dá bom
const getPosts = async () => {
try {
const response = await fetch(${API_URL}/psosts); //Url errada pra forçar erro
if(!response.ok) {
throw new Error(Error fetching posts: ${response.statusText}); // Isso vai ir lá pro error que está sendo renderizado no front
}
const data = await response.json();
return data.data;
} catch (error) {
console.error('Error fetching posts:', error);
throw error; //Precisamos lançar o erro pra propagar
}
};
valeu! dá pra criar uma store/estado usando observable só pra essa parte de autenticação,e após o login você vai popular a store de autenticação com as informações do usuário, como o token do login. ae depois você pode puxar esse token em várias telas pra fazer chamadas autenticadas a api, por exemplo, e quando o usuário for deslogar remove as infos
Baixei o seu codigo e nao deu muito certo nao XD, ele nao guarda nem no app nem na api (sim usei ngrok, e mesmo usando postman like a api recebia normalmente as requisicoes), é justamente este erro que estou recebendo. Nem sei por onde comecar a debugar porque nao apresenta nenhum error ou warning no terminal.
hmmm não faço ideia do que possa ser iahsush, precisaria ver algum print ou video reproduzindo o erro! o repositorio é publico, se quiser você pode abrir uma issue com mais detalhes lá pelo github e ae consigo entender melhor :)
Você teria um exemplo? Meus testes são assombrosos, ao tentar popular a store simplesmente nenhum console.log depois eh exibido no terminal, e sequer recebi mensagem de erro.
Bom demais, o processo de sincronização ocorre também quando o App está aberto em background?
valeu migo <3 se não me engano, o processo de sync deles funciona apenas quando a conexão é retomada dentro do aplicativo ativo. mas também tem a opção de sincronização manual, então provavelmente é possível implementar de forma personalizada a sincronização em background usando um expo-background-task da vida!
Uh nice, vou da uma testadaa
Arrasou! Bem interessante esse Legend State
Olá, seu projeto está ótimo. Consegui testá-lo em um POC interno.
A única coisa que não consegui fazer foi capturar os erros de chamada no front end.
Você poderia me ajudar com isso?
Atenciosamente e muito obrigado. Bom trabalho 😁
oiee, que bom que deu certo!! posso ajudar sim, como você tem tentado capturar os erros?
Olá, muito obrigado por sua resposta.
Tentei capturar no front-end qualquer erro de uma solicitação que é executada na sincronização de engenharia/estado, mas parece que, da forma como está implementado, esse erro não aparece na exibição.
Você pode confirmar que nenhum desses erros está ocorrendo? Porque estou um pouco confuso.
Saudações e obrigado ✌️
Entendi!! Dei uma testada aqui forçando o erro da requisição e realmente não apareceu na exibição!! Provavelmente porque no meu exemplo, tô usando o retry de forma infinita sem um try catch. ou seja, vai ficar sempre tentando novamente e não dispara o erro.
Adicione um try catch por volta da chamada a API ( e precisa dar um throw no erro quando a resposta não estiver OK e no catch também) e remova o retry infinito, deixa em um valor menor tipo tentar umas 3 vezes! Acho que assim dá bom
export const postStore$ = observable(syncedCrud({
...resto
retry: {
times: 1
},
syncMode: 'auto',
fieldUpdatedAt: 'updatedAt',
fieldCreatedAt: 'createdAt',
}));
const getPosts = async () => {
try {
const response = await fetch(
${API_URL}/psosts); //Url errada pra forçar erroif(!response.ok) {
throw new Error(
Error fetching posts: ${response.statusText}); // Isso vai ir lá pro error que está sendo renderizado no front}
const data = await response.json();
return data.data;
} catch (error) {
console.error('Error fetching posts:', error);
throw error; //Precisamos lançar o erro pra propagar
}
};
Muito bem, isso é ótimo! Muito obrigado por sua atenção, você foi de grande ajuda.
Boa sorte em seus próximos projetos 😁✌️
Muito interessante, estou batendo cabeça com ele já algum tempo, como você faria pra usar ele armazenando token do login?
valeu! dá pra criar uma store/estado usando observable só pra essa parte de autenticação,e após o login você vai popular a store de autenticação com as informações do usuário, como o token do login. ae depois você pode puxar esse token em várias telas pra fazer chamadas autenticadas a api, por exemplo, e quando o usuário for deslogar remove as infos
Baixei o seu codigo e nao deu muito certo nao XD, ele nao guarda nem no app nem na api (sim usei ngrok, e mesmo usando postman like a api recebia normalmente as requisicoes), é justamente este erro que estou recebendo. Nem sei por onde comecar a debugar porque nao apresenta nenhum error ou warning no terminal.
hmmm não faço ideia do que possa ser iahsush, precisaria ver algum print ou video reproduzindo o erro! o repositorio é publico, se quiser você pode abrir uma issue com mais detalhes lá pelo github e ae consigo entender melhor :)
Você teria um exemplo? Meus testes são assombrosos, ao tentar popular a store simplesmente nenhum console.log depois eh exibido no terminal, e sequer recebi mensagem de erro.
pior que publico num tenho nenhum exemplo, mas se tu tiver algum repo com suas tentativas pode mandar que dou uma olhadinha