diff --git a/README.md b/README.md index a9294c7..3630b32 100644 --- a/README.md +++ b/README.md @@ -99,3 +99,9 @@ There are some FreshRSS extensions out there, developed by community members: ### By [@rudism](https://code.sitosis.com/rudism) * [Kagi Summarizer](https://code.sitosis.com/rudism/freshrss-kagi-summarizer): Adds a "Summarize" button to the top of all entries that will fetch the summary of the entry using the [Kagi Universal Summarizer](https://kagi.com/summarizer/index.html). + + +### By [@shinemoon](https://github.com/shinemoon] + +* [Colorful List](https://github.com/shinemoon/FreshRSS-Dev/tree/master/extensions/xExtension-ColorfulList): Generate light different background color for article list rows (relying on the feed name) + diff --git a/extensions.json b/extensions.json index 4196668..5b614e8 100644 --- a/extensions.json +++ b/extensions.json @@ -60,7 +60,7 @@ "name": "Colorful List", "author": "Claud Xiao", "description": "Colorful Entry Title based on RSS source", - "version": 0.1, + "version": 0.2, "entrypoint": "ColorfulList", "type": "user", "url": "https://github.com/FreshRSS/Extensions", diff --git a/xExtension-ColorfulList/metadata.json b/xExtension-ColorfulList/metadata.json index 3b19bce..945d2f5 100644 --- a/xExtension-ColorfulList/metadata.json +++ b/xExtension-ColorfulList/metadata.json @@ -2,7 +2,7 @@ "name": "Colorful List", "author": "Claud Xiao", "description": "Colorful Entry Title based on RSS source", - "version": "0.2", + "version": 0.3, "entrypoint": "ColorfulList", "type": "user" } diff --git a/xExtension-ColorfulList/static/script.js b/xExtension-ColorfulList/static/script.js index 79a43f0..efa343d 100644 --- a/xExtension-ColorfulList/static/script.js +++ b/xExtension-ColorfulList/static/script.js @@ -1,22 +1,29 @@ +'use strict'; + document.addEventListener('DOMContentLoaded', function () { - function monitorEntry(monitorCallback) { - const targetNode = document.getElementById('stream'); - const config = { attributes: false, childList: true, subtree: false }; - const callback = function (mutationsList, observer) { - for (const mutation of mutationsList) { - if (mutation.type === 'childList') { - monitorCallback(mutationsList); - } - } - }; - const observer = new MutationObserver(callback); - observer.observe(targetNode, config); - // observer.disconnect(); - } + // Initial Colorize for situation where 'no new item changes triggered later' (https://github.com/FreshRSS/Extensions/issues/183) + colorize(); + + // Insert entry monitor monitorEntry(colorize); }); -function colorize(entries) { +function monitorEntry(monitorCallback) { + const targetNode = document.getElementById('stream'); + const config = { attributes: false, childList: true, subtree: false }; + const callback = function (mutationsList, observer) { + for (const mutation of mutationsList) { + if (mutation.type === 'childList') { + monitorCallback(mutationsList); + } + } + }; + const observer = new MutationObserver(callback); + observer.observe(targetNode, config); + // observer.disconnect(); +} + +function colorize() { const entry = document.querySelectorAll('.flux_header'); entry.forEach((e, i) => { const cl = stringToColour(e.querySelector('.website').textContent) + '12';