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();
setChannel(newChannel);
// Deferir o setChannel para evitar o erro de renderização em cascata síncrona
setTimeout(() => {
setChannel(newChannel);
}, 0);
// Cleanup na desmontagem
return () => {
@@ -81,9 +84,12 @@ export const useObrasRealtimeSync = () => {
}
}
)
.subscribe();
newChannel.subscribe();
setChannel(newChannel);
// Deferir o setChannel para evitar o erro de renderização em cascata síncrona
setTimeout(() => {
setChannel(newChannel);
}, 0);
return () => {
if (newChannel) {
@@ -118,24 +124,24 @@ export const useRdosRealtimeSync = (obraId?: string) => {
invalidateQueries.rdos();
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
if ('id' in newRdo) {
queryClient.invalidateQueries({
queryKey: queryKeys.rdos.detail(newRdo.id)
queryKey: queryKeys.rdos.detail(newRdo.id as string)
});
}
// Invalidar RDOs da obra
if ('obra_id' in newRdo) {
invalidateQueries.rdosByObra(newRdo.obra_id);
invalidateQueries.rdosByObra(newRdo.obra_id as string);
}
// Invalidar RDOs do usuário
if ('usuario_id' in newRdo) {
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();
setChannel(newChannel);
setTimeout(() => {
setChannel(newChannel);
}, 0);
return () => {
if (newChannel) {