Skip to content

Commit dc17812

Browse files
committed
InsertIdentifierView improvement
1 parent 6b4ec12 commit dc17812

3 files changed

Lines changed: 21 additions & 25 deletions

File tree

GUI/WPF/ViewModels/InsertIdentifierViewModel.cs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,23 @@
44

55
namespace Upsilon.Apps.Passkey.GUI.WPF.ViewModels
66
{
7-
internal class InsertIdentifierViewModel : INotifyPropertyChanged
7+
internal class InsertIdentifierViewModel(IEnumerable<string> identifiers, string identifier) : INotifyPropertyChanged
88
{
9-
private readonly string[] _identifiers;
9+
private readonly string[] _identifiers = [.. identifiers];
1010

11-
public ObservableCollection<string> Identifiers;
11+
public ObservableCollection<string> Identifiers = [.. identifiers.Where(x => x.StartsWith(identifier.Trim(), StringComparison.CurrentCultureIgnoreCase)),
12+
.. identifiers.Where(x => x.Contains(identifier.Trim(), StringComparison.CurrentCultureIgnoreCase)
13+
&& !x.StartsWith(identifier.Trim(), StringComparison.CurrentCultureIgnoreCase))];
1214

1315
public string Identifier
1416
{
15-
get;
17+
get => field.Trim();
1618
set
1719
{
18-
_ = PropertyHelper.SetProperty(ref field, value, this, PropertyChanged);
20+
PropertyHelper.SetProperty(ref field, value.Trim(), this, PropertyChanged);
1921
_refreshFilter();
2022
}
21-
} = string.Empty;
23+
} = identifier;
2224

2325
public event PropertyChangedEventHandler? PropertyChanged;
2426

@@ -27,24 +29,17 @@ protected virtual void OnPropertyChanged(string propertyName)
2729
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
2830
}
2931

30-
public InsertIdentifierViewModel(IEnumerable<string> identifiers)
31-
{
32-
_identifiers = [.. identifiers.OrderBy(x => x).Distinct()];
33-
Identifiers = [.. _identifiers];
34-
}
35-
3632
private void _refreshFilter()
3733
{
3834
Identifiers.Clear();
3935

40-
string identifier = Identifier.ToLower().Trim();
41-
string[] identifiers = [.. _identifiers.Where(x => x.StartsWith(identifier, StringComparison.CurrentCultureIgnoreCase)),
42-
.. _identifiers.Where(x => x.Contains(identifier, StringComparison.CurrentCultureIgnoreCase)
43-
&& !x.StartsWith(identifier, StringComparison.CurrentCultureIgnoreCase))];
36+
string[] identifiers = [.. _identifiers.Where(x => x.StartsWith(Identifier, StringComparison.CurrentCultureIgnoreCase)),
37+
.. _identifiers.Where(x => x.Contains(Identifier, StringComparison.CurrentCultureIgnoreCase)
38+
&& !x.StartsWith(Identifier, StringComparison.CurrentCultureIgnoreCase))];
4439

45-
foreach (string id in identifiers)
40+
foreach (string identifier in identifiers)
4641
{
47-
Identifiers.Add(id);
42+
Identifiers.Add(identifier);
4843
}
4944
}
5045
}

GUI/WPF/Views/Controls/AccountView.xaml.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ private void _identifier_TextBox_KeyUp(object sender, KeyEventArgs e)
267267
if (e.Key is Key.Enter
268268
or Key.Insert)
269269
{
270-
string? identifier = InsertIdentifierView.InsertIdentifierDialog(_viewModel?.IdentifierAutoCompleteList ?? []);
270+
string? identifier = InsertIdentifierView.InsertIdentifierDialog(_viewModel?.IdentifierAutoCompleteList ?? [], identifier_TB.Text);
271271

272272
if (string.IsNullOrEmpty(identifier)) return;
273273

GUI/WPF/Views/InsertIdentifierView.xaml.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,25 @@ public partial class InsertIdentifierView : Window
1313
private readonly InsertIdentifierViewModel _viewModel;
1414
private string? _selectedIdentifier;
1515

16-
private InsertIdentifierView(IEnumerable<string> identifiers)
16+
private InsertIdentifierView(IEnumerable<string> identifiers, string identifier)
1717
{
1818
InitializeComponent();
1919

20-
DataContext = _viewModel = new(identifiers);
20+
DataContext = _viewModel = new(identifiers, identifier);
2121
_identifiers_LB.ItemsSource = _viewModel.Identifiers;
22-
_ = _identifier_TB.Focus();
22+
_identifier_TB.SelectAll();
23+
_identifier_TB.Focus();
2324

2425
Loaded += (s, e) => this.PostLoadSetup();
2526
}
2627

27-
internal static string? InsertIdentifierDialog(IEnumerable<string> identifiers)
28+
internal static string? InsertIdentifierDialog(IEnumerable<string> identifiers, string identifier)
2829
{
29-
InsertIdentifierView insertIdentifierView = new(identifiers);
30+
InsertIdentifierView insertIdentifierView = new(identifiers, identifier);
3031

3132
_ = insertIdentifierView.ShowDialog();
3233

33-
return insertIdentifierView._selectedIdentifier;
34+
return insertIdentifierView._selectedIdentifier?.Trim();
3435
}
3536

3637
private void _identifier_TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e)

0 commit comments

Comments
 (0)