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
|
// Cleanup na desmontagem
|
||||||
return () => {
|
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 () => {
|
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();
|
||||||
|
|
||||||
setChannel(newChannel);
|
setTimeout(() => {
|
||||||
|
setChannel(newChannel);
|
||||||
|
}, 0);
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
if (newChannel) {
|
if (newChannel) {
|
||||||
|
|||||||
Reference in New Issue
Block a user