22
33#include " app.h"
44#include " icon.h"
5+ #include " logging.h"
56#include " matcher.h"
67#include " queryengine.h"
78#include " standarditem.h"
@@ -29,20 +30,20 @@ void TriggersQueryHandler::setFuzzyMatching(bool fuzzy) { fuzzy_ = fuzzy; }
2930
3031bool TriggersQueryHandler::supportsFuzzyMatching () const { return true ; }
3132
32- shared_ptr<Item> TriggersQueryHandler::makeItem (const QString &trigger, Extension *handler ) const
33+ shared_ptr<Item> TriggersQueryHandler::makeItem (const TriggerHandler &h ) const
3334{
3435 return StandardItem::make (
35- handler-> id () ,
36- QString (trigger).replace (" " , " •" ),
37- QString (" %1 · %2" ).arg (handler-> name (), handler-> description () ),
36+ h. id ,
37+ QString (h. trigger ).replace (" " , " •" ),
38+ QString (" %1 · %2" ).arg (h. name , h. description ),
3839 []{ return Icon::grapheme (u" 🚀" _s); },
3940 {{
4041 " set" ,
4142 tr (" Set input text" ),
42- [trigger ]{ App::instance ().show (trigger); },
43+ [& ]{ App::instance ().show (h. trigger ); },
4344 false
4445 }},
45- trigger
46+ h. trigger
4647 );
4748}
4849
@@ -51,18 +52,26 @@ vector<RankItem> TriggersQueryHandler::rankItems(QueryContext &ctx)
5152 Matcher matcher (ctx, {.fuzzy = fuzzy_});
5253 vector<RankItem> r;
5354
54- for (shared_lock l (handler_triggers_mutex_ );
55- const auto &[t, h] : handler_triggers_ )
55+ for (shared_lock l (trigger_handlers_mutex_ );
56+ const auto &h : trigger_handlers_ )
5657 if (!ctx.isValid ())
5758 break ;
58- else if (const auto m = matcher.match (t , h-> name () , h-> id () ); m)
59- r.emplace_back (makeItem (t, h), m);
59+ else if (const auto m = matcher.match (h. trigger , h. name , h. id ); m)
60+ r.emplace_back (makeItem (h), m);
6061
6162 return r;
6263}
6364
6465void TriggersQueryHandler::updateTriggers ()
6566{
66- lock_guard lock (handler_triggers_mutex_);
67- handler_triggers_ = query_engine_.activeTriggerHandlers ();
67+ try {
68+ vector<TriggerHandler> trigger_handlers;
69+ for (const auto &[t, h] : query_engine_.activeTriggerHandlers ())
70+ trigger_handlers.emplace_back (h->id (), h->name (), h->description (), t);
71+ lock_guard lock (trigger_handlers_mutex_);
72+ trigger_handlers_ = ::move (trigger_handlers);
73+ }
74+ catch (...) {
75+ WARN << u" QueryHandler threw exception while updating TriggersQueryHandler." _s;
76+ }
6877}
0 commit comments