I'm trying to add multiple tweets to a page as it is paginated. However, I cannot seem to get widget.createTweet
promises to resolve in order to add their element to the page.
Here is the logic from my reduced Codepen example.
// increment current page number
// create next set of tweets
// append tweet elems to masonry container
async function paginate() {
let current = page;
page = page + 3;
var tweetIDs = source.slice(current, page);
// create tweets/widget promises
const tweetPromises = tweetIDs.map(async id => {
// create grid element
let gridEl = document.createElement("div");
// set masonry class
gridEl.setAttribute("class", "grid__item");
// twitter widget.js - get promise
const response = twttr.widgets.createTweet(id, gridEl, {
theme: colorScheme,
dnt: true
});
return response;
});
// Promise.all over loops
let results = Promise.all(tweetPromises).then((m) => {
console.log("then", m); // never happens
})
.catch(e => {
console.log("catch", e.reason);
});
console.log(tweetIDs, tweetPromises, results, page);
// need the resolved tweets first!
// msnry.appended(newTweetElms);
// msnry.addItems(newTweetElms);
// msnry.layout();
}