fix(desktop): evita sobreposicao entre janelas de chat e hub

- Fecha janelas individuais de chat ao abrir o Hub (2+ sessoes)
- Fecha o Hub ao voltar para apenas 1 sessao
- Evita problemas de clique causados por sobreposicao de janelas

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
esdrasrenan 2025-12-16 00:21:43 -03:00
parent 2ba5f71580
commit 0cdbc082ab

View file

@ -1004,6 +1004,14 @@ async fn process_chat_update(
// SIMPLIFICADO: Removido inner_size() que bloqueava a UI thread // SIMPLIFICADO: Removido inner_size() que bloqueava a UI thread
if current_sessions.len() > 1 { if current_sessions.len() > 1 {
// Multiplas sessoes - usar hub window // Multiplas sessoes - usar hub window
// Primeiro, fechar todas as janelas individuais de chat para evitar sobreposicao
for session in &current_sessions {
let label = format!("chat-{}", session.ticket_id);
if let Some(window) = app.get_webview_window(&label) {
let _ = window.close();
}
}
if app.get_webview_window(HUB_WINDOW_LABEL).is_none() { if app.get_webview_window(HUB_WINDOW_LABEL).is_none() {
// Hub nao existe - criar minimizado // Hub nao existe - criar minimizado
let _ = open_hub_window(app); let _ = open_hub_window(app);
@ -1017,6 +1025,11 @@ async fn process_chat_update(
} }
} else { } else {
// Uma sessao - abrir janela individual // Uma sessao - abrir janela individual
// Fechar o Hub se estiver aberto (nao precisa mais quando ha apenas 1 chat)
if let Some(hub) = app.get_webview_window(HUB_WINDOW_LABEL) {
let _ = hub.close();
}
// Fallback: se nao conseguimos detectar delta, pega a sessao com mais unread e mais recente. // Fallback: se nao conseguimos detectar delta, pega a sessao com mais unread e mais recente.
let session_to_show = if best_delta > 0 { let session_to_show = if best_delta > 0 {
best_session best_session