fix: resolve cascading renders in hooks and remove any types
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user