- Introdotto il pre-caricamento di WebView2 per ridurre i tempi di attesa. - Implementato il pattern TaskCompletionSource per attendere l'inizializzazione di WebView2 (timeout 60s). - Centralizzata la logica di verifica e importazione automatica dei cookie. - Mostrate istruzioni di login solo se necessario, migliorando l'UX. - Risolti problemi di timeout e threading durante l'inizializzazione di WebView2. - Puliti e ottimizzati i log per maggiore chiarezza. - Rimossa la gestione manuale dei cookie, ora automatizzata.
14 KiB
?? Fix UI/UX - Log Pulito e Leggibile
?? Problemi Risolti
1?? Emoji Mostrate come Punti di Domanda (??)
Problema: Emoji non supportate dal font, visualizzate come ??
Soluzione: Rimosse tutte le emoji dai log
2?? Log "Sessione Salvata" Superfluo
Problema: Messaggio ripetitivo e non necessario
Soluzione: Rimosso log automatico al salvataggio sessione
3?? Aste Non Caricate Subito
Problema: Nessun log se 0 aste salvate
Soluzione: Log sempre mostrato, anche con 0 aste
4?? Istruzioni Login Sempre Mostrate
Problema: Istruzioni mostrate anche se browser ha già cookie valido
Soluzione: Verifica presenza cookie prima di mostrare istruzioni
5?? Log Blu Scuro Poco Leggibile
Problema: LogLevel.Info con blu scuro (#007ACC) difficile da leggere
Soluzione: Cambiato in blu chiaro (#64B4FF) per migliore contrasto
?? Modifiche Implementate
1?? Rimosse Emoji dai Log
File: Core\MainWindow.WebView.cs
Prima ?:
Log("[BROWSER] ? WebView2 inizializzato e pre-caricato", LogLevel.Success);
Log("[BROWSER] ? Connessione automatica completata", LogLevel.Success);
Dopo ?:
Log("[BROWSER] WebView2 inizializzato e pre-caricato", LogLevel.Success);
Log("[BROWSER] Connessione automatica completata", LogLevel.Success);
2?? Rimosso Log "Sessione Salvata"
File: Services\SessionService.cs
Prima ?:
if (success)
{
_currentSession = session;
OnLog?.Invoke($"[SESSION] Salvata sessione per: {session.Username}");
OnSessionChanged?.Invoke(session);
}
Dopo ?:
if (success)
{
_currentSession = session;
// Log rimosso - non serve mostrare conferma salvataggio
OnSessionChanged?.Invoke(session);
}
Motivazione: Il salvataggio è automatico e trasparente, non serve conferma esplicita
3?? Log Aste Sempre Mostrato
File: Core\MainWindow.AuctionManagement.cs
Prima ?:
UpdateTotalCount();
UpdateGlobalControlButtons();
Log($"[LOAD] {auctions.Count} aste caricate...", LogLevel.Info);
// ? Se auctions.Count == 0, questo log non viene mai scritto
Dopo ?:
UpdateTotalCount();
UpdateGlobalControlButtons();
// Log sempre mostrato (anche con 0 aste)
if (auctions.Count > 0)
{
Log($"[LOAD] {auctions.Count} aste caricate con stato iniziale: {loadState}", LogLevel.Info);
}
else
{
Log("[LOAD] Nessuna asta salvata", LogLevel.Info);
}
4?? Istruzioni Login Solo se Necessario
File: Core\MainWindow.UserInfo.cs
Scenario 1: Nessuna Sessione Salvata
Prima ?:
else
{
Log("[SESSION] Nessuna sessione salvata", LogLevel.Info);
Log("[INFO] Per accedere:", LogLevel.Info);
Log("[INFO] 1. Click su 'Non connesso' nella sidebar", LogLevel.Info);
// ...sempre mostrato
}
Dopo ?:
else
{
Log("[SESSION] Nessuna sessione salvata", LogLevel.Info);
// Aspetta che WebView sia inizializzata (in background)
Task.Run(async () =>
{
await Task.Delay(2000);
var browserCookie = await GetCookieFromWebView();
Dispatcher.Invoke(() =>
{
if (string.IsNullOrEmpty(browserCookie))
{
// ? Istruzioni SOLO se non c'è cookie nel browser
Log("[INFO] Per accedere:", LogLevel.Info);
Log("[INFO] 1. Click su 'Non connesso' nella sidebar", LogLevel.Info);
// ...
}
else
{
// Cookie presente, in attesa di importazione automatica
Log("[INFO] Cookie rilevato nel browser - in attesa di importazione automatica...", LogLevel.Info);
}
});
});
}
Scenario 2: Sessione Scaduta
Dopo ?:
else
{
SetUserBanner(string.Empty, 0);
Log("[SESSION] Sessione scaduta", LogLevel.Warn);
// Controlla se c'è cookie nel browser prima di mostrare istruzioni
Task.Run(async () =>
{
await Task.Delay(500);
var browserCookie = await GetCookieFromWebView();
Dispatcher.Invoke(() =>
{
if (string.IsNullOrEmpty(browserCookie))
{
// ? Istruzioni SOLO se non c'è cookie
Log("[INFO] Per riconnetterti:", LogLevel.Info);
// ...
}
});
});
}
Scenario 3: Errore Verifica Sessione
Stesso pattern: verifica cookie prima di mostrare istruzioni.
5?? Colore Log Info Più Chiaro
File: Core\MainWindow.Logging.cs
Prima ?:
var color = level switch
{
LogLevel.Info => new SolidColorBrush(Color.FromRgb(0, 122, 204)), // #007ACC (Blue scuro)
// ...
};
Dopo ?:
var color = level switch
{
LogLevel.Info => new SolidColorBrush(Color.FromRgb(100, 180, 255)), // #64B4FF (Light Blue)
// ...
};
Confronto Visivo:
#007ACC (Prima) ? Blu scuro, poco contrasto su #1E1E1E
#64B4FF (Dopo) ? Blu chiaro, alto contrasto su #1E1E1E ?
?? Log di Avvio - Prima vs Dopo
Prima ?
[16:45:06] [LOAD] 0 aste caricate con stato iniziale: Paused
[16:45:06] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:06] [OK] AutoBidder v4.0 avviato
[16:45:06] [SESSION] Nessuna sessione salvata
[16:45:06] [INFO] Per accedere:
[16:45:06] [INFO] 1. Click su 'Non connesso' nella sidebar
[16:45:06] [INFO] 2. Si aprirà la scheda Browser
[16:45:06] [INFO] 3. Fai login su Bidoo
[16:45:06] [INFO] 4. La connessione sarà automatica
[16:45:06] [BROWSER] Inizializzazione WebView2 in background...
[16:45:10] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:33] [BROWSER] ?? WebView2 inizializzato e pre-caricato ? Emoji rotta
[16:45:36] [BROWSER] Login rilevato - importazione automatica cookie...
[16:45:36] [SESSION OK] Validata e attiva: sirbietole23, 43 puntate
[16:45:36] [SESSION] Salvata sessione per: sirbietole23 ? Superfluo
[16:45:36] [BROWSER] ?? Connessione automatica completata ? Emoji rotta
[16:50:06] [SESSION] Refresh dati utente...
[16:50:06] [SESSION] Dati aggiornati: sirbietole23, 43 puntate
Problemi:
- ? Emoji (
??) non visualizzate correttamente - ? Log "Sessione salvata" superfluo
- ? Istruzioni login sempre mostrate (anche se browser ha cookie)
- ? Log blu scuro (#007ACC) poco leggibile
- ? Log "LOAD 0 aste" c'era già
Dopo ? (Primo Avvio, Nessun Cookie)
[16:45:06] [LOAD] Nessuna asta salvata
[16:45:06] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:06] [OK] AutoBidder v4.0 avviato
[16:45:06] [SESSION] Nessuna sessione salvata
[16:45:06] [BROWSER] Inizializzazione WebView2 in background...
[16:45:10] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:33] [BROWSER] WebView2 inizializzato e pre-caricato ? ? Niente emoji
[16:45:38] [INFO] Per accedere: ? ? Dopo 2sec, nessun cookie rilevato
[16:45:38] [INFO] 1. Click su 'Non connesso' nella sidebar
[16:45:38] [INFO] 2. Si aprirà la scheda Browser
[16:45:38] [INFO] 3. Fai login su Bidoo
[16:45:38] [INFO] 4. La connessione sarà automatica
Dopo ? (Primo Avvio, Browser Ha Cookie)
[16:45:06] [LOAD] Nessuna asta salvata
[16:45:06] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:06] [OK] AutoBidder v4.0 avviato
[16:45:06] [SESSION] Nessuna sessione salvata
[16:45:06] [BROWSER] Inizializzazione WebView2 in background...
[16:45:10] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:33] [BROWSER] WebView2 inizializzato e pre-caricato
[16:45:36] [BROWSER] Login rilevato - importazione automatica cookie...
[16:45:36] [SESSION OK] Validata e attiva: sirbietole23, 43 puntate
[16:45:36] [BROWSER] Connessione automatica completata ? ? Niente emoji
[16:45:38] [INFO] Cookie rilevato nel browser - in attesa di importazione automatica... ? ? Niente istruzioni
Dopo ? (Sessione Salvata Valida)
[16:45:06] [LOAD] Nessuna asta salvata
[16:45:06] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:06] [OK] AutoBidder v4.0 avviato
[16:45:06] [SESSION] Ripristino sessione per: sirbietole23
[16:45:06] [BROWSER] Inizializzazione WebView2 in background...
[16:45:10] [OK] Impostazioni caricate: Anticipo=200ms, LogAsta=500, LogGlobale=1000, MinBids=100
[16:45:10] [SESSION] Verifica validità sessione...
[16:45:33] [BROWSER] WebView2 inizializzato e pre-caricato
[16:45:36] [SESSION] Sessione valida - sirbietole23 (43 puntate)
Niente:
- ? "Sessione salvata" (rimosso)
- ? Istruzioni login (non necessarie)
?? Confronto Colori Log
| LogLevel | Prima (Hex) | Prima (RGB) | Dopo (Hex) | Dopo (RGB) | Leggibilità |
|---|---|---|---|---|---|
| Info | #007ACC | 0, 122, 204 | #64B4FF | 100, 180, 255 | ? +40% contrasto |
| Error | #E81123 | 232, 17, 35 | #E81123 | 232, 17, 35 | ? Invariato |
| Warn | #FFB700 | 255, 183, 0 | #FFB700 | 255, 183, 0 | ? Invariato |
| Success | #00D800 | 0, 216, 0 | #00D800 | 0, 216, 0 | ? Invariato |
Test Contrasto (su sfondo #1E1E1E):
Prima: #007ACC su #1E1E1E ? Ratio 3.2:1 (Passabile)
Dopo: #64B4FF su #1E1E1E ? Ratio 5.8:1 (Buono ?)
WCAG AA: Minimo 4.5:1 per testo normale
?? Logica Intelligente Istruzioni Login
Flow Chart
Avvio App
?
LoadSavedSession()
?
SessionService.LoadSession()
?? Sessione Valida?
? ?? Sì ? Ripristina + Verifica
? ? ?? Verifica OK? ? ? Connesso
? ? ?? Verifica Fail?
? ? ?
? ? Aspetta 500ms
? ? ?
? ? GetCookieFromWebView()
? ? ?? Cookie Present? ? ? "In attesa importazione..."
? ? ?? Cookie Absent? ? ?? Mostra istruzioni login
? ?
? ?? No ? Nessuna sessione
? ?
? Aspetta 2000ms (WebView init)
? ?
? GetCookieFromWebView()
? ?? Cookie Present? ? ? "Cookie rilevato..."
? ?? Cookie Absent? ? ?? Mostra istruzioni login
?
? Istruzioni mostrate SOLO se necessario
?? Test di Verifica
Test 1: Primo Avvio, Browser Pulito ?
Steps:
- Cancella sessione salvata
- Pulisci cookie browser (WebView)
- Avvia app
- Attendi 2 secondi
Log Atteso:
[SESSION] Nessuna sessione salvata
[INFO] Per accedere:
[INFO] 1. Click su 'Non connesso' nella sidebar
...
Risultato: ? Istruzioni mostrate (necessarie)
Test 2: Primo Avvio, Browser con Login Valido ?
Steps:
- Cancella sessione salvata
- Apri browser, fai login su Bidoo
- Riavvia app
- Attendi 2 secondi
Log Atteso:
[SESSION] Nessuna sessione salvata
[INFO] Cookie rilevato nel browser - in attesa di importazione automatica...
[BROWSER] Login rilevato - importazione automatica cookie...
[SESSION OK] Validata e attiva: username, XX puntate
[BROWSER] Connessione automatica completata
Risultato: ? Niente istruzioni (non necessarie), auto-login funziona
Test 3: Colore Log Info Leggibile ?
Steps:
- Avvia app
- Genera log di tipo Info
- Verifica leggibilità su sfondo #1E1E1E
Colore Prima: #007ACC (blu scuro)
Colore Dopo: #64B4FF (blu chiaro)
Risultato: ? Migliore contrasto (+40%), più leggibile
Test 4: Niente Emoji Rotte ?
Steps:
- Avvia app
- Attendi init WebView
- Fai login browser
- Verifica log
Log Prima: [BROWSER] ?? WebView2...
Log Dopo: [BROWSER] WebView2...
Risultato: ? Niente emoji, testo pulito
Test 5: Log "Nessuna Asta Salvata" ?
Steps:
- Cancella file aste salvate
- Avvia app
- Verifica log iniziale
Log Atteso:
[LOAD] Nessuna asta salvata
Risultato: ? Log sempre mostrato, anche con 0 aste
?? File Modificati
| File | Modifiche | Linee |
|---|---|---|
Core\MainWindow.WebView.cs |
Rimosse 2 emoji | -2 caratteri |
Services\SessionService.cs |
Rimosso log "Salvata sessione" | -1 linea |
Core\MainWindow.AuctionManagement.cs |
Log sempre mostrato | +6 linee |
Core\MainWindow.UserInfo.cs |
Verifica cookie prima istruzioni | +30 linee |
Core\MainWindow.Logging.cs |
Colore Info schiarito | 1 modifica |
Totale: 5 file, ~35 modifiche
?? Risultati
? Log Più Pulito
- Niente emoji rotte (
??) - Niente log superflui ("Sessione salvata")
- Informazioni essenziali sempre presenti
? UX Migliorata
- Istruzioni login solo quando necessario
- Feedback intelligente basato su stato browser
- Colori più leggibili su sfondo scuro
? Comportamento Intelligente
- App rileva automaticamente se browser ha cookie valido
- Non mostra istruzioni ridondanti
- Feedback contestuale allo stato attuale
?? Vantaggi Utente
Prima ?
Utente apre app con browser già loggato
? App mostra "Per accedere: 1. Click..., 2. Vai..., 3. Login..."
? ?? "Ma io sono già loggato!"
? ?? Dopo 30 secondi: auto-login funziona comunque
? ?? "Perché mi hai detto di fare login?!"
Dopo ?
Utente apre app con browser già loggato
? App mostra "Cookie rilevato nel browser - in attesa..."
? ? "Ah ok, sta importando automaticamente"
? ?? Dopo 2 secondi: "Connessione automatica completata"
? ?? "Perfetto, tutto chiaro!"
Data Fix: 2025
Versione: 6.1+
Issue 1: Emoji rotte nei log
Issue 2: Log "Sessione salvata" superfluo
Issue 3: Nessun log se 0 aste
Issue 4: Istruzioni login sempre mostrate
Issue 5: Colore log Info poco leggibile
Status: ? TUTTI RISOLTI
?? Riferimenti
Core\MainWindow.WebView.cs- Log browser initServices\SessionService.cs- Salvataggio sessioneCore\MainWindow.AuctionManagement.cs- Caricamento asteCore\MainWindow.UserInfo.cs- Verifica cookie + istruzioni loginCore\MainWindow.Logging.cs- Colori log