stop sending matched content twice for the tooltip, use smaller objects containing only regular expression and rule type

This commit is contained in:
Andrew Dolgov 2025-03-30 20:21:06 +03:00
parent 10c488e1d0
commit b4962b670d
No known key found for this signature in database
GPG Key ID: 1A56B4FA25D4AF2A
2 changed files with 9 additions and 3 deletions

View File

@ -171,6 +171,7 @@ class Pref_Filters extends Handler_Protected {
$content_preview = "";
$matches = [];
$rules = [];
$entry_title = $entry["title"];
@ -184,6 +185,11 @@ class Pref_Filters extends Handler_Protected {
$matches[] = $rule_regexp_match;
$rules[] = [
'reg_exp' => $rule['reg_exp'],
'type' => $rule['type']
];
if (in_array($rule['type'], ['content', 'both'])) {
// also stripping [\r\n\t] to match what's done for content in RSSUtils#get_article_filters()
$entry_content_text = strip_tags(preg_replace("/[\r\n\t]/", "", $entry["content"]));
@ -232,7 +238,7 @@ class Pref_Filters extends Handler_Protected {
'feed_title' => $entry['feed_title'],
'date' => mb_substr($entry['date_entered'], 0, 16),
'content_preview' => $content_preview,
'matched_rules' => $matched_rules, // TODO shorten object passed to frontend
'rules' => $rules
];
}
}

View File

@ -20,7 +20,7 @@ const Filters = {
PARAM_ACTIONS: [4, 6, 7, 9, 10],
filter_info: {},
formatMatchedRules: function(rules) {
return rules.map((r) => r.regexp_matches[0] + ' - ' + r.reg_exp + ' (' + r.type + ')').join('\n');
return rules.map((r) => r.reg_exp + ' (' + r.type + ')').join('\n');
},
test: function() {
const test_dialog = new fox.SingleUseDialog({
@ -46,7 +46,7 @@ const Filters = {
.replace("%f", test_dialog.results)
.replace("%d", offset);
results_list.innerHTML += result.items.reduce((current, item) => current + `<li title="${App.escapeHtml(dialog.formatMatchedRules(item.matched_rules))}"><span class='title'>${item.title}</span>
results_list.innerHTML += result.items.reduce((current, item) => current + `<li title="${App.escapeHtml(dialog.formatMatchedRules(item.rules))}"><span class='title'>${item.title}</span>
&mdash; <span class='feed'>${item.feed_title}</span>, <span class='date'>${item.date}</span>
<div class='preview text-muted'>${item.content_preview}</div></li>`, '');