Refactoring gestione sessione e persistenza impostazioni

Introdotto `SessionService` per centralizzare la gestione della
sessione utente, migliorando la separazione delle responsabilità
e la testabilità. Risolto il problema del caricamento del cookie
di autenticazione all'avvio e garantita la persistenza delle
checkbox di esportazione (`IncludeMetadata`, `RemoveAfterExport`,
`OverwriteExisting`).

Ottimizzata la gestione della barra degli indirizzi del browser
con aggiornamenti locali immediati. Applicato il pattern "Load ?
Modify ? Save" per il salvataggio delle impostazioni, migliorando
la simmetria e la leggibilità del codice. Logging centralizzato
e semplificato per eventi rilevanti.

Aggiornata la documentazione per riflettere i cambiamenti e
verificati i test per garantire il corretto funzionamento.
This commit is contained in:
2025-11-24 12:00:13 +01:00
parent ee67bedc31
commit 62d5cebf9c
22 changed files with 5244 additions and 299 deletions
+81 -2
View File
@@ -104,7 +104,7 @@
Style="{StaticResource FieldLabel}"/>
<TextBox x:Name="SettingsCookieTextBox"
Height="150"
Height="300"
TextWrapping="Wrap"
AcceptsReturn="True"
VerticalScrollBarVisibility="Auto"
@@ -254,7 +254,86 @@
</StackPanel>
</Border>
<!-- SEZIONE 4: Limiti Log -->
<!-- SEZIONE 4: Stato Iniziale Aste -->
<Border Background="#252526"
BorderBrush="#3E3E42"
BorderThickness="1"
CornerRadius="4"
Padding="20"
Margin="0,0,0,20">
<StackPanel>
<TextBlock Text="Stato Iniziale Aste"
Style="{StaticResource SectionHeader}"/>
<TextBlock Text="Configura come devono comportarsi le aste quando vengono caricate o aggiunte."
Foreground="#999999"
FontSize="12"
TextWrapping="Wrap"
Margin="0,0,0,20"/>
<!-- Stato all'apertura applicazione -->
<TextBlock Text="Stato aste al caricamento dell'applicazione"
Style="{StaticResource FieldLabel}"/>
<StackPanel Orientation="Horizontal" Margin="0,0,0,20">
<RadioButton x:Name="LoadAuctionsStopped"
Content="Fermate"
GroupName="LoadState"
IsChecked="True"
ToolTip="Le aste salvate verranno caricate in stato fermo"/>
<RadioButton x:Name="LoadAuctionsPaused"
Content="In Pausa"
GroupName="LoadState"
ToolTip="Le aste salvate verranno caricate in pausa (pronte ad essere avviate)"/>
<RadioButton x:Name="LoadAuctionsActive"
Content="Attive"
GroupName="LoadState"
ToolTip="Le aste salvate verranno avviate automaticamente all'apertura"/>
</StackPanel>
<!-- Stato nuove aste -->
<TextBlock Text="Stato iniziale di una nuova asta aggiunta"
Style="{StaticResource FieldLabel}"/>
<StackPanel Orientation="Horizontal" Margin="0,0,0,0">
<RadioButton x:Name="NewAuctionStopped"
Content="Fermata"
GroupName="NewAuctionState"
IsChecked="True"
ToolTip="Le nuove aste verranno aggiunte in stato fermo"/>
<RadioButton x:Name="NewAuctionPaused"
Content="In Pausa"
GroupName="NewAuctionState"
ToolTip="Le nuove aste verranno aggiunte in pausa"/>
<RadioButton x:Name="NewAuctionActive"
Content="Attiva"
GroupName="NewAuctionState"
ToolTip="Le nuove aste verranno avviate automaticamente"/>
</StackPanel>
<!-- Info Box -->
<Border Style="{StaticResource InfoBox}" Margin="0,15,0,0">
<StackPanel>
<TextBlock Text="Informazioni"
FontWeight="Bold"
Foreground="#007ACC"
Margin="0,0,0,10"/>
<TextBlock TextWrapping="Wrap"
Foreground="#CCCCCC"
FontSize="12"
LineHeight="18">
• <Bold>Fermata:</Bold> L'asta non viene monitorata fino all'avvio manuale.<LineBreak/>
• <Bold>In Pausa:</Bold> L'asta è pronta ma non punta automaticamente (utile per preparare le aste).<LineBreak/>
• <Bold>Attiva:</Bold> L'asta viene monitorata e punta automaticamente quando necessario.<LineBreak/>
<LineBreak/>
<Bold>Consiglio:</Bold> Usa "Fermata" per caricare le aste senza avviarle, poi avvia manualmente quelle desiderate.
</TextBlock>
</StackPanel>
</Border>
</StackPanel>
</Border>
<!-- SEZIONE 5: Limiti Log -->
<Border Background="#252526"
BorderBrush="#3E3E42"
BorderThickness="1"