comments: add dtext shortlink option to comment menu.

Add a Shortlink menu option to the comment menu. Clicking this will copy
a DText comment shortlink (e.g. `comment #12345`) to the clipboard. You
can middle-click or right-click the menu option to get the full URL.

The menu option is called Shortlink instead of `comment #1234` because
show the full comment ID in the menu makes the menu look too unbalanced.

Note that the `navigator.clipboard` API can only be used in a https://
environment. It won't work in non-HTTPS development environments. ngrok
can help with this.
This commit is contained in:
evazion
2021-01-22 03:35:30 -06:00
parent 2beac62fc3
commit bed5fdafb8
4 changed files with 49 additions and 25 deletions

View File

@@ -1,9 +1,12 @@
import Utility from "../../javascript/src/javascripts/utility.js";
class CommentComponent {
static initialize() {
if ($("#c-posts #a-show, #c-comments").length) {
$(document).on("click.danbooru.comment", ".edit_comment_link", CommentComponent.showEditForm);
$(document).on("click.danbooru.comment", ".expand-comment-response", CommentComponent.showNewCommentForm);
$(document).on("click.danbooru.comment", ".unhide-comment-link", CommentComponent.unhideComment);
$(document).on("click.danbooru.comment", ".comment-copy-link", CommentComponent.copyLink);
}
}
@@ -26,8 +29,20 @@ class CommentComponent {
$comment.find(".body").show();
e.preventDefault();
}
}
static async copyLink(e) {
let $comment = $(this).closest(".comment");
let link = `comment #${$comment.data("id")}`;
e.preventDefault();
try {
await navigator.clipboard.writeText(link);
Utility.notice(`Copied ${link} to clipboard.`);
} catch (error) {
Utility.error("Couldn't copy link to clipboard");
}
}
}
$(document).ready(CommentComponent.initialize);