@@ -249,7 +249,7 @@ private bool PuTTY_Connected_CanExecute(object view)
249249
250250 return false ;
251251 }
252-
252+
253253 public ICommand PuTTY_ReconnectCommand => new RelayCommand ( PuTTY_ReconnectAction ) ;
254254
255255 private void PuTTY_ReconnectAction ( object view )
@@ -376,16 +376,7 @@ private async Task Connect(string host = null)
376376 await _dialogCoordinator . HideMetroDialogAsync ( this , customDialog ) ;
377377 ConfigurationManager . Current . FixAirspace = false ;
378378
379- // Add host to history
380- AddHostToHistory ( instance . Host ) ;
381- AddSerialLineToHistory ( instance . SerialLine ) ;
382- AddPortToHistory ( instance . Port . ToString ( ) ) ;
383- AddBaudToHistory ( instance . Baud . ToString ( ) ) ;
384- AddUsernameToHistory ( instance . Username ) ;
385- AddPrivateKeyToHistory ( instance . PrivateKeyFile ) ;
386- AddProfileToHistory ( instance . Profile ) ;
387-
388- // Create Profile info
379+ // Create profile info
389380 var info = new PuTTYSessionInfo
390381 {
391382 HostOrSerialLine = instance . ConnectionMode == ConnectionMode . Serial ? instance . SerialLine : instance . Host ,
@@ -401,6 +392,17 @@ private async Task Connect(string host = null)
401392 AdditionalCommandLine = instance . AdditionalCommandLine
402393 } ;
403394
395+ // Add to history
396+ // Note: The history can only be updated after the values have been read.
397+ // Otherwise, in some cases, incorrect values are taken over.
398+ AddHostToHistory ( instance . Host ) ;
399+ AddSerialLineToHistory ( instance . SerialLine ) ;
400+ AddPortToHistory ( instance . Port ) ;
401+ AddBaudToHistory ( instance . Baud ) ;
402+ AddUsernameToHistory ( instance . Username ) ;
403+ AddPrivateKeyToHistory ( instance . PrivateKeyFile ) ;
404+ AddProfileToHistory ( instance . Profile ) ;
405+
404406 Connect ( info ) ;
405407 } , async instance =>
406408 {
@@ -454,86 +456,58 @@ public void AddTab(string host)
454456 // Modify history list
455457 private static void AddHostToHistory ( string host )
456458 {
457- // Create the new list
458- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_HostHistory . ToList ( ) , host , SettingsManager . Current . General_HistoryListEntries ) ;
459+ if ( string . IsNullOrEmpty ( host ) )
460+ return ;
459461
460- // Clear the old items
461- SettingsManager . Current . PuTTY_HostHistory . Clear ( ) ;
462-
463- // Fill with the new items
464- list . ForEach ( x => SettingsManager . Current . PuTTY_HostHistory . Add ( x ) ) ;
462+ SettingsManager . Current . PuTTY_HostHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_HostHistory . ToList ( ) , host , SettingsManager . Current . General_HistoryListEntries ) ) ;
465463 }
466464
467465 private static void AddSerialLineToHistory ( string serialLine )
468466 {
469- // Create the new list
470- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_SerialLineHistory . ToList ( ) , serialLine , SettingsManager . Current . General_HistoryListEntries ) ;
471-
472- // Clear the old items
473- SettingsManager . Current . PuTTY_SerialLineHistory . Clear ( ) ;
467+ if ( string . IsNullOrEmpty ( serialLine ) )
468+ return ;
474469
475- // Fill with the new items
476- list . ForEach ( x => SettingsManager . Current . PuTTY_SerialLineHistory . Add ( x ) ) ;
470+ SettingsManager . Current . PuTTY_SerialLineHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_SerialLineHistory . ToList ( ) , serialLine , SettingsManager . Current . General_HistoryListEntries ) ) ;
477471 }
478472
479- private static void AddPortToHistory ( string port )
473+ private static void AddPortToHistory ( int port )
480474 {
481- // Create the new list
482- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_PortHistory . ToList ( ) , port , SettingsManager . Current . General_HistoryListEntries ) ;
475+ if ( port == 0 )
476+ return ;
483477
484- // Clear the old items
485- SettingsManager . Current . PuTTY_PortHistory . Clear ( ) ;
486-
487- // Fill with the new items
488- list . ForEach ( x => SettingsManager . Current . PuTTY_PortHistory . Add ( x ) ) ;
478+ SettingsManager . Current . PuTTY_PortHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_PortHistory . ToList ( ) , port . ToString ( ) , SettingsManager . Current . General_HistoryListEntries ) ) ;
489479 }
490480
491- private static void AddBaudToHistory ( string baud )
481+ private static void AddBaudToHistory ( int baud )
492482 {
493- // Create the new list
494- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_BaudHistory . ToList ( ) , baud , SettingsManager . Current . General_HistoryListEntries ) ;
495-
496- // Clear the old items
497- SettingsManager . Current . PuTTY_BaudHistory . Clear ( ) ;
483+ if ( baud == 0 )
484+ return ;
498485
499- // Fill with the new items
500- list . ForEach ( x => SettingsManager . Current . PuTTY_BaudHistory . Add ( x ) ) ;
486+ SettingsManager . Current . PuTTY_BaudHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_BaudHistory . ToList ( ) , baud . ToString ( ) , SettingsManager . Current . General_HistoryListEntries ) ) ;
501487 }
502488
503489 private static void AddUsernameToHistory ( string username )
504490 {
505- // Create the new list
506- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_UsernameHistory . ToList ( ) , username , SettingsManager . Current . General_HistoryListEntries ) ;
507-
508- // Clear the old items
509- SettingsManager . Current . PuTTY_UsernameHistory . Clear ( ) ;
491+ if ( string . IsNullOrEmpty ( username ) )
492+ return ;
510493
511- // Fill with the new items
512- list . ForEach ( x => SettingsManager . Current . PuTTY_UsernameHistory . Add ( x ) ) ;
494+ SettingsManager . Current . PuTTY_UsernameHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_UsernameHistory . ToList ( ) , username , SettingsManager . Current . General_HistoryListEntries ) ) ;
513495 }
514496
515- private static void AddPrivateKeyToHistory ( string host )
497+ private static void AddPrivateKeyToHistory ( string privateKey )
516498 {
517- // Create the new list
518- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_PrivateKeyFileHistory . ToList ( ) , host , SettingsManager . Current . General_HistoryListEntries ) ;
499+ if ( string . IsNullOrEmpty ( privateKey ) )
500+ return ;
519501
520- // Clear the old items
521- SettingsManager . Current . PuTTY_PrivateKeyFileHistory . Clear ( ) ;
522-
523- // Fill with the new items
524- list . ForEach ( x => SettingsManager . Current . PuTTY_PrivateKeyFileHistory . Add ( x ) ) ;
502+ SettingsManager . Current . PuTTY_PrivateKeyFileHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_PrivateKeyFileHistory . ToList ( ) , privateKey , SettingsManager . Current . General_HistoryListEntries ) ) ;
525503 }
526504
527- private static void AddProfileToHistory ( string host )
505+ private static void AddProfileToHistory ( string profile )
528506 {
529- // Create the new list
530- var list = ListHelper . Modify ( SettingsManager . Current . PuTTY_ProfileHistory . ToList ( ) , host , SettingsManager . Current . General_HistoryListEntries ) ;
531-
532- // Clear the old items
533- SettingsManager . Current . PuTTY_ProfileHistory . Clear ( ) ;
507+ if ( string . IsNullOrEmpty ( profile ) )
508+ return ;
534509
535- // Fill with the new items
536- list . ForEach ( x => SettingsManager . Current . PuTTY_ProfileHistory . Add ( x ) ) ;
510+ SettingsManager . Current . PuTTY_ProfileHistory = new ObservableCollection < string > ( ListHelper . Modify ( SettingsManager . Current . PuTTY_ProfileHistory . ToList ( ) , profile , SettingsManager . Current . General_HistoryListEntries ) ) ;
537511 }
538512
539513 private void StartDelayedSearch ( )
0 commit comments