diff --git a/content/scripts/mastodon-api-comments.js b/content/scripts/mastodon-api-comments.js index 178187d..81005be 100644 --- a/content/scripts/mastodon-api-comments.js +++ b/content/scripts/mastodon-api-comments.js @@ -43,47 +43,66 @@ function write_comments(root, data) { for (const status of data.descendants) { - let content = status.content; - for (const emoji of status.emojis) - { - content = content.replace( - ':' + emoji.shortcode + ':', - ''); - } + const content = add_emojis(status.content, status.emojis); - const p = document.createElement("p"); - p.setAttribute("class", "mastodon-api-comment"); - p.appendChild(author_html(status)); + const div = document.createElement("div"); + div.setAttribute("class", "mastodon-api-comment"); + div.appendChild(author_html(status)); if (status.spoiler_text.length > 0) { - const subject_p = document.createElement("p"); - subject_p.setAttribute("class", "mastodon-api-comment-subject"); - const subject = document.createElement("strong"); - subject.appendChild(document.createTextNode(status.spoiler_text)); - subject_p.appendChild(subject); - p.appendChild(subject_p); + div.appendChild(subject_html(status)); } const content_p = document.createElement("p"); content_p.setAttribute("class", "mastodon-api-comment-content"); content_p.innerHTML = content; - p.appendChild(content_p); - root.appendChild(p); + div.appendChild(content_p); + root.appendChild(div); } } +function add_emojis(text, emojis) +{ + for (const emoji of emojis) + { + text = text.replace( + ':' + emoji.shortcode + ':', + ''); + } + + return text; +} + function author_html(status) { const p = document.createElement("p"); p.setAttribute("class", "mastodon-api-comment-author"); + + const img = document.createElement("img"); + img.setAttribute("class", "mastodon-api-comment-avatar"); + img.setAttribute("src", status.account.avatar); + p.appendChild(img); + p.innerHTML += " "; + const strong = document.createElement("strong"); strong.appendChild(document.createTextNode(status.account.display_name)); p.appendChild(strong); + p.appendChild( document.createTextNode(" (" + status.account.acct + ") wrote on " + get_status_time(status) + ":")); return p; } +function subject_html(status) +{ + const p = document.createElement("p"); + p.setAttribute("class", "mastodon-api-comment-subject"); + const subject = document.createElement("strong"); + subject.innerHTML += add_emojis(status.spoiler_text, status.emojis); + p.appendChild(subject); + return p; +} + // Human readable time, YYYY-MM-DD HH:MM. function get_status_time(status) { diff --git a/layouts/shortcodes/mastodon-api-comments.html b/layouts/shortcodes/mastodon-api-comments.html index 69bcb00..5698bb9 100644 --- a/layouts/shortcodes/mastodon-api-comments.html +++ b/layouts/shortcodes/mastodon-api-comments.html @@ -1,8 +1,9 @@ -{{ $instance := .Get "instance" | default "false" }} -{{ $status_id := .Get "status_id" | default "false" }} +{{ $instance := .Get "instance" | default "" }} +{{ $status_id := .Get "status_id" | default "" }} {{ partial "mastodon-api-comments-scripts.html" . }} -

+ +