Просмотр исходного кода

fix: replace remaining .filter() calls with for loops in RSS Reader

QuickJS doesn't reliably support Array.prototype.filter(). Replace all
remaining .filter() calls in filterByKeyword() and filterByDate() with
manual for loops for full QuickJS compatibility.
fszontagh 8 месяцев назад
Родитель
Сommit
7d4e75c99b
1 измененных файлов с 17 добавлено и 7 удалено
  1. 17 7
      nodes/rss/rss-reader.js

+ 17 - 7
nodes/rss/rss-reader.js

@@ -2,7 +2,7 @@
  * @node rss-reader
  * @node rss-reader
  * @name RSS Reader
  * @name RSS Reader
  * @category data
  * @category data
- * @version 1.1.5
+ * @version 1.1.6
  * @description Read and parse RSS/Atom feeds with optional filtering by keyword, date, or count. Supports stateful new item detection.
  * @description Read and parse RSS/Atom feeds with optional filtering by keyword, date, or count. Supports stateful new item detection.
  * @icon rss
  * @icon rss
  */
  */
@@ -506,11 +506,16 @@ function filterByKeyword(items, keyword) {
     if (!keyword) return items;
     if (!keyword) return items;
 
 
     var lowerKeyword = keyword.toLowerCase();
     var lowerKeyword = keyword.toLowerCase();
-    return items.filter(function(item) {
+    var result = [];
+    for (var i = 0; i < items.length; i++) {
+        var item = items[i];
         var title = (item.title || '').toLowerCase();
         var title = (item.title || '').toLowerCase();
         var description = (item.description || '').toLowerCase();
         var description = (item.description || '').toLowerCase();
-        return title.indexOf(lowerKeyword) !== -1 || description.indexOf(lowerKeyword) !== -1;
-    });
+        if (title.indexOf(lowerKeyword) !== -1 || description.indexOf(lowerKeyword) !== -1) {
+            result.push(item);
+        }
+    }
+    return result;
 }
 }
 
 
 /**
 /**
@@ -525,10 +530,15 @@ function filterByDate(items, newerThanStr) {
         return items;
         return items;
     }
     }
 
 
-    return items.filter(function(item) {
+    var result = [];
+    for (var i = 0; i < items.length; i++) {
+        var item = items[i];
         var itemDate = parseDate(item.pubDate);
         var itemDate = parseDate(item.pubDate);
-        return itemDate > threshold;
-    });
+        if (itemDate > threshold) {
+            result.push(item);
+        }
+    }
+    return result;
 }
 }
 
 
 /**
 /**