44using Flow . Launcher . ViewModel ;
55using Flow . Launcher . Core ;
66using System . Linq ;
7- using Flow . Launcher . Core . Plugin ;
87using System . Collections . Generic ;
98
109namespace Flow . Launcher
@@ -43,11 +42,14 @@ private void btnDone_OnClick(object sender, RoutedEventArgs _)
4342
4443 newActionKeywords = newActionKeywords . Count > 0 ? newActionKeywords : new ( ) { Query . GlobalPluginWildcardSign } ;
4544
46- if ( ! newActionKeywords . Except ( oldActionKeywords ) . Any ( PluginManager . ActionKeywordRegistered ) )
45+ var addedActionKeywords = newActionKeywords . Except ( oldActionKeywords ) . ToList ( ) ;
46+ var removedActionKeywords = oldActionKeywords . Except ( newActionKeywords ) . ToList ( ) ;
47+ if ( ! addedActionKeywords . Any ( App . API . ActionKeywordAssigned ) )
4748 {
4849 if ( oldActionKeywords . Count != newActionKeywords . Count )
4950 {
50- ReplaceActionKeyword ( plugin . Metadata . ID , oldActionKeywords , newActionKeywords ) ;
51+ ReplaceActionKeyword ( plugin . Metadata . ID , removedActionKeywords , addedActionKeywords ) ;
52+ return ;
5153 }
5254
5355 var sortedOldActionKeywords = oldActionKeywords . OrderBy ( s => s ) . ToList ( ) ;
@@ -61,7 +63,7 @@ private void btnDone_OnClick(object sender, RoutedEventArgs _)
6163 }
6264 else
6365 {
64- ReplaceActionKeyword ( plugin . Metadata . ID , oldActionKeywords , newActionKeywords ) ;
66+ ReplaceActionKeyword ( plugin . Metadata . ID , removedActionKeywords , addedActionKeywords ) ;
6567 }
6668 }
6769 else
@@ -71,21 +73,18 @@ private void btnDone_OnClick(object sender, RoutedEventArgs _)
7173 }
7274 }
7375
74- private void ReplaceActionKeyword ( string id , IReadOnlyList < string > oldActionKeywords , IReadOnlyList < string > newActionKeywords )
76+ private void ReplaceActionKeyword ( string id , IReadOnlyList < string > removedActionKeywords , IReadOnlyList < string > addedActionKeywords )
7577 {
76- // Because add & remove action keyword will change action keyword metadata,
77- // so we need to clone it to fix collection modified while iterating exception
78- var oldActionKeywordsClone = oldActionKeywords . ToList ( ) ;
79- foreach ( var actionKeyword in oldActionKeywordsClone )
78+ foreach ( var actionKeyword in removedActionKeywords )
8079 {
81- PluginManager . RemoveActionKeyword ( id , actionKeyword ) ;
80+ App . API . RemoveActionKeyword ( id , actionKeyword ) ;
8281 }
83- foreach ( var actionKeyword in newActionKeywords )
82+ foreach ( var actionKeyword in addedActionKeywords )
8483 {
85- PluginManager . AddActionKeyword ( id , actionKeyword ) ;
84+ App . API . AddActionKeyword ( id , actionKeyword ) ;
8685 }
8786
88- // Update action keywords text and close
87+ // Update action keywords text and close window
8988 pluginViewModel . OnActionKeywordsChanged ( ) ;
9089 Close ( ) ;
9190 }
0 commit comments