diff --git a/pages/index.md b/pages/index.md index abb8cfc..c2f72d9 100644 --- a/pages/index.md +++ b/pages/index.md @@ -40,6 +40,8 @@ var recent_blog_posts = []; var news_items = []; +const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + async function get_release_info(repo) { let url = "https://api.github.com/repos/" + repo + "/releases?per_page=1"; @@ -60,7 +62,7 @@ async function get_release_info(repo) { }; releases.push(info); } - return releases; + return releases; // length matches 'per_page' in query string } catch (error) { console.warn("Could not fetch release info for "+ repo + ": " + error.message); } @@ -91,27 +93,31 @@ function show_news() { } +async function add_news_item(post) { + news_items.push(post); + news_items.sort((a, b) => (a.date < b.date)); + show_news(); + await sleep(20); +} + + async function create_news() { let repos = ["pygfx/pygfx", "pygfx/wgpu-py", "pygfx/rendercanvas", "pygfx/pylinalg"]; - let pending_news_items = []; - for (let repo of repos) { - let repo_releases = await get_release_info(repo); - pending_news_items.push(...repo_releases); - } + + news_items.length = 0; // clear + for (let post of recent_blog_posts) { post.date = new Date(post.date); - pending_news_items.push(post) + await add_news_item(post) } - pending_news_items.sort((a, b) => (a.date < b.date)); - - const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - - for (let news_item of pending_news_items) { - news_items.push(news_item); - show_news() - await sleep(200); + for (let repo of repos) { + let repo_releases = await get_release_info(repo); + for (let post of repo_releases) { + await add_news_item(post); + } } + } create_news(); @@ -144,7 +150,7 @@ The following projects fall under the pygfx.org umbrella: Docs Source