Corrigir sincronizacao automatica do RustDesk com o backend

- Corrigir indentacao do useEffect que dispara ensureRustdesk
- Adicionar logs detalhados em handleRustdeskProvision e ensureRustdesk
- Logs ajudam a diagnosticar falhas na sincronizacao do acesso remoto

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
rever-tecnologia 2025-12-05 14:42:49 -03:00
parent 01a16b7e5e
commit 736282a805

View file

@ -831,40 +831,63 @@ const resolvedAppUrl = useMemo(() => {
const handleRustdeskProvision = useCallback( const handleRustdeskProvision = useCallback(
async (payload: RustdeskProvisioningResult) => { async (payload: RustdeskProvisioningResult) => {
if (!store) return logDesktop("rustdesk:provision:start", { id: payload.id, hasStore: !!store })
if (!store) {
logDesktop("rustdesk:provision:skip:no-store")
return
}
const normalized: RustdeskInfo = { const normalized: RustdeskInfo = {
...payload, ...payload,
installedVersion: payload.installedVersion ?? null, installedVersion: payload.installedVersion ?? null,
lastSyncedAt: rustdeskInfoRef.current?.lastSyncedAt ?? null, lastSyncedAt: rustdeskInfoRef.current?.lastSyncedAt ?? null,
lastError: null, lastError: null,
} }
try {
await writeRustdeskInfo(store, normalized) await writeRustdeskInfo(store, normalized)
logDesktop("rustdesk:provision:saved", { id: normalized.id })
} catch (error) {
logDesktop("rustdesk:provision:save-error", { error: String(error) })
throw error
}
setRustdeskInfo(normalized) setRustdeskInfo(normalized)
try {
await syncRemoteAccessNow(normalized) await syncRemoteAccessNow(normalized)
logDesktop("rustdesk:provision:synced", { id: normalized.id })
} catch (error) {
logDesktop("rustdesk:provision:sync-error", { error: String(error) })
}
}, },
[store, syncRemoteAccessNow] [store, syncRemoteAccessNow]
) )
const ensureRustdesk = useCallback(async () => { const ensureRustdesk = useCallback(async () => {
if (!store) return null logDesktop("rustdesk:ensure:start", { hasStore: !!store, machineId: config?.machineId ?? null })
if (!store) {
logDesktop("rustdesk:ensure:skip:no-store")
return null
}
if (!config?.machineId) { if (!config?.machineId) {
logDesktop("rustdesk:skip:no-machine-id") logDesktop("rustdesk:skip:no-machine-id")
return null return null
} }
setIsRustdeskProvisioning(true) setIsRustdeskProvisioning(true)
try { try {
logDesktop("rustdesk:ensure:invoking", { machineId: config.machineId })
const payload = await invoke<RustdeskProvisioningResult>("ensure_rustdesk_and_emit", { const payload = await invoke<RustdeskProvisioningResult>("ensure_rustdesk_and_emit", {
configString: RUSTDESK_CONFIG_STRING || null, configString: RUSTDESK_CONFIG_STRING || null,
password: RUSTDESK_DEFAULT_PASSWORD || null, password: RUSTDESK_DEFAULT_PASSWORD || null,
machineId: config.machineId, machineId: config.machineId,
}) })
logDesktop("rustdesk:ensure:invoked", { id: payload.id, version: payload.installedVersion })
await handleRustdeskProvision(payload) await handleRustdeskProvision(payload)
logDesktop("rustdesk:ensure:complete", { id: payload.id })
return payload return payload
} catch (error) { } catch (error) {
const message = error instanceof Error ? error.message : String(error) const message = error instanceof Error ? error.message : String(error)
if (message.toLowerCase().includes("apenas no windows")) { if (message.toLowerCase().includes("apenas no windows")) {
console.info("Provisionamento do RustDesk ignorado (plataforma não suportada)") console.info("Provisionamento do RustDesk ignorado (plataforma não suportada)")
} else { } else {
logDesktop("rustdesk:ensure:error", { error: message })
console.error("Falha ao provisionar RustDesk", error) console.error("Falha ao provisionar RustDesk", error)
} }
return null return null
@ -916,7 +939,7 @@ const resolvedAppUrl = useMemo(() => {
syncRemoteAccessNow(rustdeskInfo) syncRemoteAccessNow(rustdeskInfo)
} }
} }
}, [store, config?.machineId, rustdeskInfo, ensureRustdesk, syncRemoteAccessNow, isRustdeskProvisioning]) }, [store, config?.machineId, rustdeskInfo, ensureRustdesk, syncRemoteAccessNow, isRustdeskProvisioning])
async function register() { async function register() {
if (!profile) return if (!profile) return