fix: resolve cascading renders in hooks and remove any types

This commit is contained in:
Marcos
2026-03-23 07:48:14 -03:00
parent 0ad29893d0
commit 45c0de3605

View File

@@ -34,9 +34,12 @@ export const useUsersRealtime = () => {
} }
} }
) )
.subscribe(); newChannel.subscribe();
// Deferir o setChannel para evitar o erro de renderização em cascata síncrona
setTimeout(() => {
setChannel(newChannel); setChannel(newChannel);
}, 0);
// Cleanup na desmontagem // Cleanup na desmontagem
return () => { return () => {
@@ -81,9 +84,12 @@ export const useObrasRealtimeSync = () => {
} }
} }
) )
.subscribe(); newChannel.subscribe();
// Deferir o setChannel para evitar o erro de renderização em cascata síncrona
setTimeout(() => {
setChannel(newChannel); setChannel(newChannel);
}, 0);
return () => { return () => {
if (newChannel) { if (newChannel) {
@@ -118,24 +124,24 @@ export const useRdosRealtimeSync = (obraId?: string) => {
invalidateQueries.rdos(); invalidateQueries.rdos();
if (payload.new && typeof payload.new === 'object') { if (payload.new && typeof payload.new === 'object') {
const newRdo = payload.new as any; const newRdo = payload.new as Record<string, unknown>;
// Invalidar RDO específico // Invalidar RDO específico
if ('id' in newRdo) { if ('id' in newRdo) {
queryClient.invalidateQueries({ queryClient.invalidateQueries({
queryKey: queryKeys.rdos.detail(newRdo.id) queryKey: queryKeys.rdos.detail(newRdo.id as string)
}); });
} }
// Invalidar RDOs da obra // Invalidar RDOs da obra
if ('obra_id' in newRdo) { if ('obra_id' in newRdo) {
invalidateQueries.rdosByObra(newRdo.obra_id); invalidateQueries.rdosByObra(newRdo.obra_id as string);
} }
// Invalidar RDOs do usuário // Invalidar RDOs do usuário
if ('usuario_id' in newRdo) { if ('usuario_id' in newRdo) {
queryClient.invalidateQueries({ queryClient.invalidateQueries({
queryKey: queryKeys.rdos.byUser(newRdo.usuario_id) queryKey: queryKeys.rdos.byUser(newRdo.usuario_id as string)
}); });
} }
} }
@@ -143,7 +149,9 @@ export const useRdosRealtimeSync = (obraId?: string) => {
) )
.subscribe(); .subscribe();
setTimeout(() => {
setChannel(newChannel); setChannel(newChannel);
}, 0);
return () => { return () => {
if (newChannel) { if (newChannel) {