/** * Prints VRE d4s-social-posts (limiting to @quantity number) */ window.customElements.define('d4s-social-posts', class extends HTMLElement { #basepath = 'https://api.d4science.org/rest' //#basepath = 'https://api.dev.d4science.org/rest' #quantity = 20 #boot = null; #data = null; #shadowRoot = null; constructor() { super() this.#boot = document.querySelector("d4s-boot-2") this.#shadowRoot = this.attachShadow({mode: 'open'}) } connectedCallback() { this.fetchPosts() } fetchPosts() { const url = this.#basepath + '/2/posts/get-posts-vre' this.#boot.secureFetch(url).then(reply => { if(reply.status !== 200) throw "Unable to fetch posts"; return reply.json() }).then(data => { this.#data = data this.renderPosts() }).catch(err => console.error("Unable to fetch posts " + err)) } renderPosts() { var ul = document.createElement('ul') this.#data.result.reverse().forEach(post => { if (this.#quantity-- > 0) { var li = document.createElement('li') li.setAttribute('class', 'd4s-social-post') const datetime = new Date(0) datetime.setUTCMilliseconds(post.time) const thumbnail = (!post.thumbnail_url.startsWith('http')) ? 'https://' + this.#boot.clientId + post.thumbnail_url : post.thumbnail_url li.innerHTML = `