fix: prever 401 Unauthorized do Supabase no cache offline verificando a sessao
This commit is contained in:
@@ -48,7 +48,7 @@ export const useOffline = () => {
|
|||||||
setIsSyncing(true);
|
setIsSyncing(true);
|
||||||
try {
|
try {
|
||||||
const operations = await OfflineManager.getPendingOperations();
|
const operations = await OfflineManager.getPendingOperations();
|
||||||
|
|
||||||
for (const operation of operations) {
|
for (const operation of operations) {
|
||||||
try {
|
try {
|
||||||
await processPendingOperation(operation);
|
await processPendingOperation(operation);
|
||||||
@@ -61,13 +61,13 @@ export const useOffline = () => {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Recarregar operações pendentes
|
// Recarregar operações pendentes
|
||||||
await loadPendingOperations();
|
await loadPendingOperations();
|
||||||
|
|
||||||
// Invalidar queries para atualizar dados
|
// Invalidar queries para atualizar dados
|
||||||
invalidateQueries.all();
|
invalidateQueries.all();
|
||||||
|
|
||||||
console.log('Sincronização concluída');
|
console.log('Sincronização concluída');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error syncing pending operations:', error);
|
console.error('Error syncing pending operations:', error);
|
||||||
@@ -121,12 +121,16 @@ export const useOffline = () => {
|
|||||||
if (!isOnline) return;
|
if (!isOnline) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// Prevenir 401 chamando o cache apenas se o usuário estiver logado
|
||||||
|
const { data: { session } } = await supabase.auth.getSession();
|
||||||
|
if (!session) return;
|
||||||
|
|
||||||
// Cache usuários
|
// Cache usuários
|
||||||
const { data: usuarios } = await supabase
|
const { data: usuarios } = await supabase
|
||||||
.from('usuarios')
|
.from('usuarios')
|
||||||
.select('*')
|
.select('*')
|
||||||
.eq('ativo', true);
|
.eq('ativo', true);
|
||||||
|
|
||||||
if (usuarios) {
|
if (usuarios) {
|
||||||
await OfflineManager.cacheData('usuarios', usuarios);
|
await OfflineManager.cacheData('usuarios', usuarios);
|
||||||
}
|
}
|
||||||
@@ -135,7 +139,7 @@ export const useOffline = () => {
|
|||||||
const { data: obras } = await supabase
|
const { data: obras } = await supabase
|
||||||
.from('obras')
|
.from('obras')
|
||||||
.select('*');
|
.select('*');
|
||||||
|
|
||||||
if (obras) {
|
if (obras) {
|
||||||
await OfflineManager.cacheData('obras', obras);
|
await OfflineManager.cacheData('obras', obras);
|
||||||
}
|
}
|
||||||
@@ -143,19 +147,19 @@ export const useOffline = () => {
|
|||||||
// Cache RDOs (últimos 30 dias)
|
// Cache RDOs (últimos 30 dias)
|
||||||
const thirtyDaysAgo = new Date();
|
const thirtyDaysAgo = new Date();
|
||||||
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
||||||
|
|
||||||
const { data: rdos } = await supabase
|
const { data: rdos } = await supabase
|
||||||
.from('rdos')
|
.from('rdos')
|
||||||
.select('*')
|
.select('*')
|
||||||
.gte('created_at', thirtyDaysAgo.toISOString());
|
.gte('created_at', thirtyDaysAgo.toISOString());
|
||||||
|
|
||||||
if (rdos) {
|
if (rdos) {
|
||||||
await OfflineManager.cacheData('rdos', rdos);
|
await OfflineManager.cacheData('rdos', rdos);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Salvar timestamp da última sincronização
|
// Salvar timestamp da última sincronização
|
||||||
await OfflineManager.setConfig('lastFullSync', Date.now());
|
await OfflineManager.setConfig('lastFullSync', Date.now());
|
||||||
|
|
||||||
console.log('Dados cacheados para uso offline');
|
console.log('Dados cacheados para uso offline');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error caching data for offline:', error);
|
console.error('Error caching data for offline:', error);
|
||||||
@@ -460,10 +464,10 @@ export const useOfflineStats = () => {
|
|||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
loadStats();
|
loadStats();
|
||||||
|
|
||||||
// Atualizar estatísticas a cada 30 segundos
|
// Atualizar estatísticas a cada 30 segundos
|
||||||
const interval = setInterval(loadStats, 30000);
|
const interval = setInterval(loadStats, 30000);
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
return () => clearInterval(interval);
|
||||||
}, [loadStats]);
|
}, [loadStats]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user