Aggiornamento alla versione 3.0.0
- Rimosse funzionalità legacy legate a WebView2. - Introdotto uno stile globale per i pulsanti. - Semplificata l'interfaccia con gestione tramite griglia unica. - Aggiunti comandi per avviare, mettere in pausa e fermare aste. - Introdotta gestione manuale dei cookie tramite dialog. - Aggiunti dialog per configurare sessione e aggiungere aste. - Migliorata la persistenza con salvataggio sicuro (DPAPI). - Rifattorizzate statistiche per utilizzare `BidHistory` e `BidderStats`. - Ottimizzato il polling per ridurre il carico di sistema. - Aggiornata esportazione CSV con dati più dettagliati. - Introdotti nuovi modelli dati per utente e banner aste. - Rimossi file di test manuale e codice obsoleto. - Aggiornata documentazione per riflettere le modifiche. - Aggiunta nuova icona dell'applicazione. - Migliorata la sicurezza eliminando il salvataggio in chiaro dei cookie.
This commit is contained in:
28
Mimante/Dialogs/AddAuctionSimpleDialog.xaml
Normal file
28
Mimante/Dialogs/AddAuctionSimpleDialog.xaml
Normal file
@@ -0,0 +1,28 @@
|
||||
<Window x:Class="AutoBidder.Dialogs.AddAuctionSimpleDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Aggiungi Asta" Height="220" Width="600"
|
||||
Background="#0a0a0a" Foreground="#FFFFFF"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="pack://application:,,,/Icon/favicon.ico"
|
||||
ResizeMode="NoResize">
|
||||
<Border Background="#1a1a1a" CornerRadius="8" Padding="16" Margin="8">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="Inserire URL dell'asta" Foreground="#CCCCCC" FontSize="14" Margin="0,0,0,10" />
|
||||
<TextBox x:Name="AuctionUrlBox" Grid.Row="1" MinWidth="320" Margin="0,0,0,8"
|
||||
Background="#181818" Foreground="#00CCFF" BorderBrush="#444" BorderThickness="1"
|
||||
Padding="8" FontSize="13" ToolTip="Inserisci l'URL completo dell'asta" />
|
||||
<StackPanel Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,8,0,0">
|
||||
<Button x:Name="OkButton" Content="OK" Width="110" Margin="6" Padding="10,8"
|
||||
Style="{StaticResource SmallButtonStyle}" Background="#00CC66" Foreground="White" Click="OkButton_Click" />
|
||||
<Button x:Name="CancelButton" Content="Annulla" Width="110" Margin="6" Padding="10,8"
|
||||
Style="{StaticResource SmallButtonStyle}" Background="#666" Foreground="White" Click="CancelButton_Click" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
33
Mimante/Dialogs/AddAuctionSimpleDialog.xaml.cs
Normal file
33
Mimante/Dialogs/AddAuctionSimpleDialog.xaml.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace AutoBidder.Dialogs
|
||||
{
|
||||
public partial class AddAuctionSimpleDialog : Window
|
||||
{
|
||||
public string AuctionId { get; private set; } = string.Empty;
|
||||
|
||||
public AddAuctionSimpleDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void OkButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var text = AuctionUrlBox.Text?.Trim() ?? string.Empty;
|
||||
if (string.IsNullOrWhiteSpace(text) || !text.StartsWith("http"))
|
||||
{
|
||||
MessageBox.Show("Inserisci un URL valido dell'asta.", "Errore", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
AuctionId = text;
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
DialogResult = false;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
41
Mimante/Dialogs/SessionDialog.xaml
Normal file
41
Mimante/Dialogs/SessionDialog.xaml
Normal file
@@ -0,0 +1,41 @@
|
||||
<Window x:Class="AutoBidder.Dialogs.SessionDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
Title="Configura Sessione" Height="440" Width="700"
|
||||
Background="#0a0a0a" Foreground="#FFFFFF"
|
||||
WindowStartupLocation="CenterOwner"
|
||||
Icon="pack://application:,,,/Icon/favicon.ico"
|
||||
ResizeMode="NoResize">
|
||||
<Border Background="#1a1a1a" CornerRadius="8" Padding="16" Margin="8">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="Inserisci Cookie di sessione" FontSize="16" FontWeight="SemiBold" Foreground="#00CC66" Margin="0,0,0,12" />
|
||||
<TextBlock Grid.Row="1" Text="Cookie di sessione (copia dal menu delle Impostazioni/Applicazioni di Chrome)" Foreground="#CCCCCC" FontSize="13" />
|
||||
<TextBlock Grid.Row="2" Foreground="#888" FontSize="12" TextWrapping="Wrap" Margin="0,4,0,10">
|
||||
<Run Text="Come trovare i cookie di sessione in Chrome:" />
|
||||
<LineBreak/>
|
||||
<Run Text="1. Apri Chrome e premi F12 (Windows) o Cmd+Option+I (Mac) per aprire gli Strumenti per sviluppatori." />
|
||||
<LineBreak/>
|
||||
<Run Text="2. Vai alla scheda 'Application'." />
|
||||
<LineBreak/>
|
||||
<Run Text="3. Nel pannello a sinistra, espandi 'Storage' e seleziona 'Cookies'." />
|
||||
<LineBreak/>
|
||||
<Run Text="4. Scegli il sito desiderato e copia il valore del cookie di sessione." />
|
||||
</TextBlock>
|
||||
<TextBox x:Name="CookieBox" Grid.Row="3" MinWidth="320" MinHeight="120" MaxHeight="220" VerticalScrollBarVisibility="Auto"
|
||||
Background="#181818" Foreground="#00CCFF" BorderBrush="#444" BorderThickness="1" Padding="8" FontSize="14" AcceptsReturn="True" TextWrapping="Wrap" />
|
||||
<StackPanel Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,12,0,0">
|
||||
<Button x:Name="OkButton" Content="OK" Width="110" Margin="6" Padding="10,8"
|
||||
Style="{StaticResource SmallButtonStyle}" Background="#00CC66" Foreground="White" Click="OkButton_Click" />
|
||||
<Button x:Name="CancelButton" Content="Annulla" Width="110" Margin="6" Padding="10,8"
|
||||
Style="{StaticResource SmallButtonStyle}" Background="#666" Foreground="White" Click="CancelButton_Click" />
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
||||
33
Mimante/Dialogs/SessionDialog.xaml.cs
Normal file
33
Mimante/Dialogs/SessionDialog.xaml.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Windows;
|
||||
|
||||
namespace AutoBidder.Dialogs
|
||||
{
|
||||
public partial class SessionDialog : Window
|
||||
{
|
||||
public string AuthToken { get; private set; } = string.Empty;
|
||||
|
||||
public SessionDialog(string existingToken = "", string existingUsername = "")
|
||||
{
|
||||
InitializeComponent();
|
||||
CookieBox.Text = existingToken ?? string.Empty;
|
||||
}
|
||||
|
||||
private void OkButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
AuthToken = CookieBox.Text?.Trim() ?? string.Empty;
|
||||
if (string.IsNullOrEmpty(AuthToken))
|
||||
{
|
||||
MessageBox.Show("Cookie obbligatorio", "Errore", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void CancelButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
DialogResult = false;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,247 +0,0 @@
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace AutoBidder
|
||||
{
|
||||
/// <summary>
|
||||
/// Dialog per inizializzare sessione Bidoo
|
||||
/// Richiede: Auth Token + Username
|
||||
/// </summary>
|
||||
public class SessionDialog : Window
|
||||
{
|
||||
private readonly TextBox _tokenTextBox;
|
||||
private readonly TextBox _usernameTextBox;
|
||||
|
||||
public string AuthToken => _tokenTextBox.Text.Trim();
|
||||
public string Username => _usernameTextBox.Text.Trim();
|
||||
|
||||
public SessionDialog(string existingToken = "", string existingUsername = "")
|
||||
{
|
||||
Title = "Configura Sessione Bidoo";
|
||||
Width = 680;
|
||||
Height = 420;
|
||||
WindowStartupLocation = WindowStartupLocation.CenterOwner;
|
||||
ResizeMode = ResizeMode.NoResize;
|
||||
Background = System.Windows.Media.Brushes.Black;
|
||||
Foreground = System.Windows.Media.Brushes.White;
|
||||
|
||||
var grid = new Grid { Margin = new Thickness(20) };
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(10) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(140) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(15) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(10) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(40) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(20) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
|
||||
|
||||
var label1 = new TextBlock
|
||||
{
|
||||
Text = "Cookie __stattrb (F12 > Application > Cookies > __stattrb):",
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = System.Windows.Media.Brushes.White,
|
||||
TextWrapping = TextWrapping.Wrap
|
||||
};
|
||||
Grid.SetRow(label1, 0);
|
||||
|
||||
_tokenTextBox = new TextBox
|
||||
{
|
||||
Text = existingToken,
|
||||
Padding = new Thickness(10),
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
AcceptsReturn = false,
|
||||
VerticalScrollBarVisibility = ScrollBarVisibility.Auto,
|
||||
VerticalContentAlignment = VerticalAlignment.Top,
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(15, 15, 15)),
|
||||
Foreground = System.Windows.Media.Brushes.LightGray,
|
||||
FontFamily = new System.Windows.Media.FontFamily("Consolas"),
|
||||
FontSize = 11,
|
||||
ToolTip = "Esempio: eyJVU0VSSUQiOiI2NzA3NjY0Ii..."
|
||||
};
|
||||
Grid.SetRow(_tokenTextBox, 2);
|
||||
|
||||
var label2 = new TextBlock
|
||||
{
|
||||
Text = "Username Bidoo:",
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = System.Windows.Media.Brushes.White
|
||||
};
|
||||
Grid.SetRow(label2, 4);
|
||||
|
||||
_usernameTextBox = new TextBox
|
||||
{
|
||||
Text = existingUsername,
|
||||
Padding = new Thickness(10),
|
||||
FontSize = 14,
|
||||
VerticalContentAlignment = VerticalAlignment.Center,
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(15, 15, 15)),
|
||||
Foreground = System.Windows.Media.Brushes.LightGray
|
||||
};
|
||||
Grid.SetRow(_usernameTextBox, 6);
|
||||
|
||||
var buttonPanel = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
HorizontalAlignment = HorizontalAlignment.Right
|
||||
};
|
||||
Grid.SetRow(buttonPanel, 8);
|
||||
|
||||
var okButton = new Button
|
||||
{
|
||||
Content = "Conferma",
|
||||
Width = 120,
|
||||
Height = 40,
|
||||
Margin = new Thickness(0, 0, 10, 0),
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 204, 102)),
|
||||
Foreground = System.Windows.Media.Brushes.White,
|
||||
FontWeight = FontWeights.Bold,
|
||||
FontSize = 14
|
||||
};
|
||||
var cancelButton = new Button
|
||||
{
|
||||
Content = "Annulla",
|
||||
Width = 120,
|
||||
Height = 40,
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(204, 0, 0)),
|
||||
Foreground = System.Windows.Media.Brushes.White,
|
||||
FontWeight = FontWeights.Bold,
|
||||
FontSize = 14
|
||||
};
|
||||
|
||||
okButton.Click += (s, e) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(AuthToken) || string.IsNullOrWhiteSpace(Username))
|
||||
{
|
||||
MessageBox.Show("Inserisci Token e Username!", "Errore", MessageBoxButton.OK, MessageBoxImage.Warning);
|
||||
return;
|
||||
}
|
||||
DialogResult = true;
|
||||
Close();
|
||||
};
|
||||
cancelButton.Click += (s, e) => { DialogResult = false; Close(); };
|
||||
|
||||
buttonPanel.Children.Add(okButton);
|
||||
buttonPanel.Children.Add(cancelButton);
|
||||
|
||||
grid.Children.Add(label1);
|
||||
grid.Children.Add(_tokenTextBox);
|
||||
grid.Children.Add(label2);
|
||||
grid.Children.Add(_usernameTextBox);
|
||||
grid.Children.Add(buttonPanel);
|
||||
|
||||
Content = grid;
|
||||
|
||||
Loaded += (s, e) => _tokenTextBox.Focus();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Dialog semplificato per aggiungere asta (ID o URL completo)
|
||||
/// </summary>
|
||||
public class AddAuctionSimpleDialog : Window
|
||||
{
|
||||
private readonly TextBox _auctionIdTextBox;
|
||||
public string AuctionId => _auctionIdTextBox.Text.Trim();
|
||||
|
||||
public AddAuctionSimpleDialog()
|
||||
{
|
||||
Title = "Aggiungi Asta";
|
||||
Width = 680;
|
||||
Height = 280;
|
||||
WindowStartupLocation = WindowStartupLocation.CenterOwner;
|
||||
ResizeMode = ResizeMode.NoResize;
|
||||
Background = System.Windows.Media.Brushes.Black;
|
||||
Foreground = System.Windows.Media.Brushes.White;
|
||||
|
||||
var grid = new Grid { Margin = new Thickness(20) };
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(10) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(50) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(10) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(20) });
|
||||
grid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(50) });
|
||||
|
||||
var label = new TextBlock
|
||||
{
|
||||
Text = "URL Asta o ID:",
|
||||
FontWeight = FontWeights.SemiBold,
|
||||
Foreground = System.Windows.Media.Brushes.White
|
||||
};
|
||||
Grid.SetRow(label, 0);
|
||||
|
||||
_auctionIdTextBox = new TextBox
|
||||
{
|
||||
Text = "",
|
||||
Padding = new Thickness(10),
|
||||
FontSize = 13,
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(15, 15, 15)),
|
||||
Foreground = System.Windows.Media.Brushes.LightGray,
|
||||
VerticalContentAlignment = VerticalAlignment.Center
|
||||
};
|
||||
Grid.SetRow(_auctionIdTextBox, 2);
|
||||
|
||||
var hintLabel = new TextBlock
|
||||
{
|
||||
Text = "Esempio: https://it.bidoo.com/auction.php?a=Galaxy_S25_Ultra_256GB_81204324\nOppure: 81204324",
|
||||
FontSize = 11,
|
||||
Foreground = System.Windows.Media.Brushes.Gray,
|
||||
TextWrapping = TextWrapping.Wrap
|
||||
};
|
||||
Grid.SetRow(hintLabel, 4);
|
||||
|
||||
var buttonPanel = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
HorizontalAlignment = HorizontalAlignment.Right
|
||||
};
|
||||
Grid.SetRow(buttonPanel, 6);
|
||||
|
||||
var okButton = new Button
|
||||
{
|
||||
Content = "Aggiungi",
|
||||
Width = 120,
|
||||
Height = 40,
|
||||
Margin = new Thickness(0, 0, 10, 0),
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(0, 204, 102)),
|
||||
Foreground = System.Windows.Media.Brushes.White,
|
||||
FontWeight = FontWeights.Bold,
|
||||
FontSize = 14
|
||||
};
|
||||
var cancelButton = new Button
|
||||
{
|
||||
Content = "Annulla",
|
||||
Width = 120,
|
||||
Height = 40,
|
||||
Background = new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromRgb(204, 0, 0)),
|
||||
Foreground = System.Windows.Media.Brushes.White,
|
||||
FontWeight = FontWeights.Bold,
|
||||
FontSize = 14
|
||||
};
|
||||
|
||||
okButton.Click += (s, e) => { DialogResult = true; Close(); };
|
||||
cancelButton.Click += (s, e) => { DialogResult = false; Close(); };
|
||||
_auctionIdTextBox.KeyDown += (s, e) =>
|
||||
{
|
||||
if (e.Key == System.Windows.Input.Key.Enter)
|
||||
{
|
||||
DialogResult = true;
|
||||
Close();
|
||||
}
|
||||
};
|
||||
|
||||
buttonPanel.Children.Add(okButton);
|
||||
buttonPanel.Children.Add(cancelButton);
|
||||
|
||||
grid.Children.Add(label);
|
||||
grid.Children.Add(_auctionIdTextBox);
|
||||
grid.Children.Add(hintLabel);
|
||||
grid.Children.Add(buttonPanel);
|
||||
|
||||
Content = grid;
|
||||
|
||||
Loaded += (s, e) => _auctionIdTextBox.Focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user