@@ -54,50 +54,53 @@ private void AppViewModel_PropertyChanged(object sender, PropertyChangedEventArg
5454
5555 private void SetFilter ( )
5656 {
57- CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . Filter = ( item ) =>
57+ Dispatcher . Invoke ( ( ) =>
5858 {
59- var filter = txtFilter . Text . Trim ( ) ;
60- var matchItem = item as Models . ManagedCertificate ;
61-
62- return filter == "" || filter . Split ( ';' ) . Where ( f => f . Trim ( ) != "" ) . Any ( f =>
63-
64- // match on a specific status filter
65- ( f == "[Status=Error]" && matchItem . Health == Models . ManagedCertificateHealth . Error ) ||
66- ( f == "[Status=OK]" && matchItem . Health == Models . ManagedCertificateHealth . OK ) ||
67- ( f == "[Status=Warning]" && matchItem . Health == Models . ManagedCertificateHealth . Warning ) ||
68- ( f == "[Status=AwaitingUser]" && matchItem . Health == Models . ManagedCertificateHealth . AwaitingUser ) ||
69- ( f == "[Status=InvalidConfig]" && matchItem . DomainOptions ? . Count ( d => d . IsPrimaryDomain ) > 1 ) ||
70- ( f == "[Status=NoCertificate]" && matchItem . CertificatePath == null ) ||
71- // match on selected or primary domain options with domain containing keyword
72- ( matchItem . DomainOptions ? . Any ( d => ( d . IsSelected || d . IsPrimaryDomain ) && d . Domain . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ) ?? false ) ||
73- // match on requestconfig primary or san containing keyword
74- ( matchItem . RequestConfig . SubjectAlternativeNames ? . Any ( d => d . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ) ?? false ) ||
75- ( matchItem . RequestConfig . PrimaryDomain ? . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ?? false ) ||
76- // match on comments containing keyword
77- ( matchItem . Comments ?? "" ) . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ||
78- // match on name containing keyword
79- matchItem . Name . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ||
80- // match on ID
81- matchItem . Id == f
82- ) ;
83- } ;
84-
85- //sort by name ascending
86- CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Clear ( ) ;
87-
88- if ( _sortOrder == "NameAsc" )
89- {
90- CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Add (
91- new System . ComponentModel . SortDescription ( "Name" , System . ComponentModel . ListSortDirection . Ascending )
92- ) ;
93- }
59+ CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . Filter = ( item ) =>
60+ {
61+ var filter = txtFilter . Text . Trim ( ) ;
62+ var matchItem = item as Models . ManagedCertificate ;
63+
64+ return filter == "" || filter . Split ( ';' ) . Where ( f => f . Trim ( ) != "" ) . Any ( f =>
65+
66+ // match on a specific status filter
67+ ( f == "[Status=Error]" && matchItem . Health == Models . ManagedCertificateHealth . Error ) ||
68+ ( f == "[Status=OK]" && matchItem . Health == Models . ManagedCertificateHealth . OK ) ||
69+ ( f == "[Status=Warning]" && matchItem . Health == Models . ManagedCertificateHealth . Warning ) ||
70+ ( f == "[Status=AwaitingUser]" && matchItem . Health == Models . ManagedCertificateHealth . AwaitingUser ) ||
71+ ( f == "[Status=InvalidConfig]" && matchItem . DomainOptions ? . Count ( d => d . IsPrimaryDomain ) > 1 ) ||
72+ ( f == "[Status=NoCertificate]" && matchItem . CertificatePath == null ) ||
73+ // match on selected or primary domain options with domain containing keyword
74+ ( matchItem . DomainOptions ? . Any ( d => ( d . IsSelected || d . IsPrimaryDomain ) && d . Domain . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ) ?? false ) ||
75+ // match on requestconfig primary or san containing keyword
76+ ( matchItem . RequestConfig . SubjectAlternativeNames ? . Any ( d => d . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ) ?? false ) ||
77+ ( matchItem . RequestConfig . PrimaryDomain ? . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ?? false ) ||
78+ // match on comments containing keyword
79+ ( matchItem . Comments ?? "" ) . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ||
80+ // match on name containing keyword
81+ matchItem . Name . Contains ( f , StringComparison . InvariantCultureIgnoreCase ) ||
82+ // match on ID
83+ matchItem . Id == f
84+ ) ;
85+ } ;
86+
87+ //sort by name ascending
88+ CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Clear ( ) ;
89+
90+ if ( _sortOrder == "NameAsc" )
91+ {
92+ CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Add (
93+ new System . ComponentModel . SortDescription ( "Name" , System . ComponentModel . ListSortDirection . Ascending )
94+ ) ;
95+ }
9496
95- if ( _sortOrder == "ExpiryDateAsc" )
96- {
97- CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Add (
98- new System . ComponentModel . SortDescription ( "DateExpiry" , System . ComponentModel . ListSortDirection . Ascending )
99- ) ;
100- }
97+ if ( _sortOrder == "ExpiryDateAsc" )
98+ {
99+ CollectionViewSource . GetDefaultView ( _appViewModel . ManagedCertificates ) . SortDescriptions . Add (
100+ new System . ComponentModel . SortDescription ( "DateExpiry" , System . ComponentModel . ListSortDirection . Ascending )
101+ ) ;
102+ }
103+ } ) ;
101104 }
102105
103106 private async void ListViewItem_InteractionEvent ( object sender , InputEventArgs e )
0 commit comments