@@ -6,6 +6,46 @@ function read_rss_into_element(elementName, url) {
66 rss_queue . push ( { elementName, url } ) ;
77}
88
9+ function init_rss_feed ( elementName , url , feedId ) {
10+ const isCollapsed = localStorage . getItem ( 'feed_collapsed_' + feedId ) === 'true' ;
11+ if ( isCollapsed ) {
12+ const feedBlock = document . getElementById ( 'feed-block-' + feedId ) ;
13+ if ( feedBlock ) {
14+ feedBlock . classList . add ( 'collapsed' ) ;
15+ }
16+ const toggle = document . getElementById ( 'toggle-' + feedId ) ;
17+ if ( toggle ) {
18+ toggle . innerHTML = '+' ;
19+ }
20+ } else {
21+ read_rss_into_element ( elementName , url ) ;
22+ }
23+ }
24+
25+ function toggle_feed ( feedId , rssUrl ) {
26+ const feedBlock = document . getElementById ( 'feed-block-' + feedId ) ;
27+ const toggle = document . getElementById ( 'toggle-' + feedId ) ;
28+ if ( ! feedBlock ) return ;
29+
30+ const isCollapsed = feedBlock . classList . toggle ( 'collapsed' ) ;
31+ localStorage . setItem ( 'feed_collapsed_' + feedId , isCollapsed ) ;
32+
33+ if ( isCollapsed ) {
34+ if ( toggle ) toggle . innerHTML = '+' ;
35+ } else {
36+ if ( toggle ) toggle . innerHTML = '-' ;
37+ // If not loaded yet (has loading indicator), add to queue
38+ const content = document . getElementById ( feedId + '_link' ) ;
39+ if ( content && content . querySelector ( '.loading-container' ) ) {
40+ read_rss_into_element ( feedId + '_link' , rssUrl ) ;
41+ // If queue was empty, restart processing
42+ if ( rss_queue . length === 1 ) {
43+ process_rss_queue ( ) ;
44+ }
45+ }
46+ }
47+ }
48+
949/**
1050 * Randomize array element order in-place.
1151 * Using Durstenfeld shuffle algorithm.
@@ -59,9 +99,12 @@ function process_rss_queue() {
5999
60100 if ( rss_queue . length <= 0 ) {
61101 // all done!
102+ is_processing = false ;
62103 return ;
63104 }
64105
106+ is_processing = true ;
107+
65108 const MAX_ITEMS = 8 ;
66109
67110 const { elementName, url } = rss_queue [ 0 ] ;
@@ -138,6 +181,13 @@ function process_rss_queue() {
138181 counter += 1 ;
139182}
140183
184+ var is_processing = false ;
185+ function start_process_rss_queue ( ) {
186+ if ( is_processing ) return ;
187+ shuffleArray ( rss_queue ) ;
188+ process_rss_queue ( ) ;
189+ }
190+
141191// https://stackoverflow.com/questions/11381673/detecting-a-mobile-browser
142192window . mobilecheck = function ( ) {
143193 var check = false ;
0 commit comments