Aggiornamento alla versione 4.0.0
* Aggiunto `BooleanToOpacityConverter` per gestire opacità dinamica. * Introdotto nuovo sistema di timing con `BidBeforeDeadlineMs`. * Aggiunta opzione `CheckAuctionOpenBeforeBid` per maggiore sicurezza. * Implementato polling adattivo (10ms-1000ms) e cooldown di 800ms. * Migliorata gestione pulsanti globali con supporto `AUTO-START`/`AUTO-STOP`. * Fix per il tasto `Canc` e focus automatico sul `DataGrid`. * Fix per avvio singola asta senza necessità di "Avvia Tutti". * Aggiornati formati CSV/JSON/XML con nuovi campi. * Migliorata gestione cookie con endpoint unico `buy_bids.php`. * Miglioramenti UI/UX: tooltip, formattazione prezzi, feedback visivo. * Aggiornata documentazione e changelog per la versione 4.0.0.
This commit is contained in:
@@ -10,44 +10,42 @@ namespace AutoBidder
|
||||
/// </summary>
|
||||
public partial class MainWindow
|
||||
{
|
||||
private void SaveCookieButton_Click(object sender, RoutedEventArgs e)
|
||||
private async void SaveCookieButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var cookie = SettingsCookieTextBox.Text?.Trim();
|
||||
if (string.IsNullOrEmpty(cookie))
|
||||
{
|
||||
MessageBox.Show(this, "Inserisci un cookie valido", "Errore", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
// Silenzioso - nessun MessageBox
|
||||
return;
|
||||
}
|
||||
|
||||
_auctionMonitor.InitializeSessionWithCookie(cookie, string.Empty);
|
||||
var success = _auctionMonitor.UpdateUserInfoAsync().GetAwaiter().GetResult();
|
||||
var success = await _auctionMonitor.UpdateUserInfoAsync();
|
||||
var session = _auctionMonitor.GetSession();
|
||||
|
||||
if (success && session != null)
|
||||
{
|
||||
Services.SessionManager.SaveSession(session);
|
||||
SetUserBanner(session.Username ?? string.Empty, session.RemainingBids);
|
||||
UsernameText.Text = session.Username ?? string.Empty;
|
||||
StartButton.IsEnabled = true;
|
||||
Log($"[OK] Sessione salvata per: {session.Username}");
|
||||
MessageBox.Show(this, $"Cookie valido!\nUtente: {session.Username}\nPuntate disponibili: {session.RemainingBids}", "Sessione Salvata", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
// Rimosso MessageBox - verrà mostrato dal chiamante
|
||||
}
|
||||
else
|
||||
{
|
||||
Log($"[WARN] Cookie non valido o scaduto", LogLevel.Warn);
|
||||
MessageBox.Show(this, "Cookie non valido o scaduto.\nVerifica che il cookie sia corretto.", "Errore Cookie", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
// Rimosso MessageBox - verrà mostrato dal chiamante se necessario
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log($"[ERRORE] Salvataggio cookie: {ex.Message}", LogLevel.Error);
|
||||
MessageBox.Show(this, "Errore durante salvataggio cookie: " + ex.Message, "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void ImportCookieFromBrowserButton_Click(object sender, RoutedEventArgs e)
|
||||
private async void ImportCookieFromBrowserButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -57,14 +55,14 @@ namespace AutoBidder
|
||||
return;
|
||||
}
|
||||
|
||||
var cookies = EmbeddedWebView.CoreWebView2.CookieManager.GetCookiesAsync("https://it.bidoo.com").GetAwaiter().GetResult();
|
||||
var cookies = await EmbeddedWebView.CoreWebView2.CookieManager.GetCookiesAsync("https://it.bidoo.com");
|
||||
var stattrb = cookies.FirstOrDefault(c => c.Name == "__stattrb");
|
||||
|
||||
if (stattrb != null)
|
||||
{
|
||||
SettingsCookieTextBox.Text = stattrb.Value;
|
||||
Log("[OK] Cookie importato dal browser");
|
||||
MessageBox.Show(this, "Cookie importato con successo!\nClicca 'Salva Cookie' per confermare.", "Importa Cookie", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
MessageBox.Show(this, "Cookie importato con successo!\nClicca 'Salva' per confermare.", "Importa Cookie", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -110,27 +108,118 @@ namespace AutoBidder
|
||||
|
||||
SettingsManager.Save(s);
|
||||
ExportPreferences.SaveLastExportExtension(s.LastExportExt);
|
||||
MessageBox.Show(this, "Impostazioni salvate.", "Salva", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
Log("[OK] Impostazioni export salvate", LogLevel.Success);
|
||||
// Rimosso MessageBox - verrà mostrato dal chiamante
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(this, "Errore salvataggio impostazioni: " + ex.Message, "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
Log($"[ERRORE] Salvataggio impostazioni export: {ex.Message}", LogLevel.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelSettingsButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
LoadExportSettings();
|
||||
try
|
||||
{
|
||||
// Ricarica impostazioni export
|
||||
LoadExportSettings();
|
||||
|
||||
// Ricarica cookie salvato
|
||||
var session = Services.SessionManager.LoadSession();
|
||||
if (session != null && !string.IsNullOrEmpty(session.CookieString))
|
||||
{
|
||||
SettingsCookieTextBox.Text = session.CookieString;
|
||||
}
|
||||
else
|
||||
{
|
||||
SettingsCookieTextBox.Text = string.Empty;
|
||||
}
|
||||
|
||||
Log("[INFO] Impostazioni ripristinate", LogLevel.Info);
|
||||
MessageBox.Show(this, "Impostazioni ripristinate alle ultime salvate.", "Annulla", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log($"[ERRORE] Ripristino impostazioni: {ex.Message}", LogLevel.Error);
|
||||
MessageBox.Show(this, "Errore durante ripristino: " + ex.Message, "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveDefaultsButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MessageBox.Show(this, "Funzionalità non ancora implementata", "Info", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
try
|
||||
{
|
||||
// Salva impostazioni predefinite aste
|
||||
if (int.TryParse(DefaultBidBeforeDeadlineMs.Text, out var bidMs) && bidMs >= 0 && bidMs <= 5000)
|
||||
{
|
||||
var settings = Utilities.SettingsManager.Load() ?? new Utilities.AppSettings();
|
||||
settings.DefaultBidBeforeDeadlineMs = bidMs;
|
||||
settings.DefaultCheckAuctionOpenBeforeBid = DefaultCheckAuctionOpen.IsChecked ?? false;
|
||||
|
||||
if (double.TryParse(DefaultMinPrice.Text.Replace(',', '.'), System.Globalization.NumberStyles.Any,
|
||||
System.Globalization.CultureInfo.InvariantCulture, out var minPrice))
|
||||
{
|
||||
settings.DefaultMinPrice = minPrice;
|
||||
}
|
||||
|
||||
if (double.TryParse(DefaultMaxPrice.Text.Replace(',', '.'), System.Globalization.NumberStyles.Any,
|
||||
System.Globalization.CultureInfo.InvariantCulture, out var maxPrice))
|
||||
{
|
||||
settings.DefaultMaxPrice = maxPrice;
|
||||
}
|
||||
|
||||
if (int.TryParse(DefaultMaxClicks.Text, out var maxClicks))
|
||||
{
|
||||
settings.DefaultMaxClicks = maxClicks;
|
||||
}
|
||||
|
||||
Utilities.SettingsManager.Save(settings);
|
||||
Log("[OK] Impostazioni predefinite aste salvate", LogLevel.Success);
|
||||
// Rimosso MessageBox - verrà mostrato dal chiamante
|
||||
}
|
||||
else
|
||||
{
|
||||
Log("[WARN] Valore anticipo puntata non valido", LogLevel.Warn);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log($"[ERRORE] Salvataggio defaults: {ex.Message}", LogLevel.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private void CancelDefaultsButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
MessageBox.Show(this, "Funzionalità non ancora implementata", "Info", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
try
|
||||
{
|
||||
// Ricarica defaults salvati
|
||||
var settings = Utilities.SettingsManager.Load();
|
||||
if (settings != null)
|
||||
{
|
||||
DefaultBidBeforeDeadlineMs.Text = settings.DefaultBidBeforeDeadlineMs.ToString();
|
||||
DefaultCheckAuctionOpen.IsChecked = settings.DefaultCheckAuctionOpenBeforeBid;
|
||||
DefaultMinPrice.Text = settings.DefaultMinPrice.ToString("F2");
|
||||
DefaultMaxPrice.Text = settings.DefaultMaxPrice.ToString("F2");
|
||||
DefaultMaxClicks.Text = settings.DefaultMaxClicks.ToString();
|
||||
}
|
||||
else
|
||||
{
|
||||
// Valori di default se non ci sono impostazioni salvate
|
||||
DefaultBidBeforeDeadlineMs.Text = "200";
|
||||
DefaultCheckAuctionOpen.IsChecked = false;
|
||||
DefaultMinPrice.Text = "0";
|
||||
DefaultMaxPrice.Text = "0";
|
||||
DefaultMaxClicks.Text = "0";
|
||||
}
|
||||
|
||||
Log("[INFO] Impostazioni predefinite ripristinate", LogLevel.Info);
|
||||
MessageBox.Show(this, "Impostazioni predefinite ripristinate.", "Annulla", MessageBoxButton.OK, MessageBoxImage.Information);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log($"[ERRORE] Ripristino defaults: {ex.Message}", LogLevel.Error);
|
||||
MessageBox.Show(this, "Errore durante ripristino: " + ex.Message, "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user