feat: add copy text

This commit is contained in:
Barış Soner Uşaklı
2023-11-09 12:46:31 -05:00
parent f4c36b842b
commit 4b2491becd
2 changed files with 21 additions and 7 deletions

View File

@@ -68,7 +68,8 @@
"chat.in-room": "In this room", "chat.in-room": "In this room",
"chat.kick": "Kick", "chat.kick": "Kick",
"chat.show-ip": "Show IP", "chat.show-ip": "Show IP",
"chat.copy-link": "Copy link", "chat.copy-text": "Copy Text",
"chat.copy-link": "Copy Link",
"chat.owner": "Room Owner", "chat.owner": "Room Owner",
"chat.grant-rescind-ownership": "Grant/Rescind Ownership", "chat.grant-rescind-ownership": "Grant/Rescind Ownership",

View File

@@ -106,7 +106,7 @@ define('forum/chats', [
Chats.addTextareaResizeHandler(mainWrapper); Chats.addTextareaResizeHandler(mainWrapper);
Chats.addTypingHandler(mainWrapper, roomId); Chats.addTypingHandler(mainWrapper, roomId);
Chats.addIPHandler(mainWrapper); Chats.addIPHandler(mainWrapper);
Chats.addCopyLinkHandler(mainWrapper); Chats.addCopyTextLinkHandler(mainWrapper);
Chats.createAutoComplete(roomId, $('[component="chat/input"]')); Chats.createAutoComplete(roomId, $('[component="chat/input"]'));
Chats.addUploadHandler({ Chats.addUploadHandler({
dragDropAreaEl: $('.chats-full'), dragDropAreaEl: $('.chats-full'),
@@ -168,7 +168,7 @@ define('forum/chats', [
}); });
containerEl.tooltip({ containerEl.tooltip({
selector: '[component="chat/message/controls"] button', selector: '[component="chat/message/controls"] > .btn-group > button',
placement: 'top', placement: 'top',
container: '#content', container: '#content',
animation: false, animation: false,
@@ -241,15 +241,28 @@ define('forum/chats', [
}); });
}; };
Chats.addCopyLinkHandler = function (container) { Chats.addCopyTextLinkHandler = function (container) {
function doCopy(copyEl, text) {
navigator.clipboard.writeText(text);
copyEl.find('i').addClass('fa-check').removeClass('fa-link');
setTimeout(() => copyEl.find('i').removeClass('fa-check').addClass('fa-link'), 2000);
}
container.off('click', '[data-action="copy-link"]') container.off('click', '[data-action="copy-link"]')
.on('click', '[data-action="copy-link"]', function () { .on('click', '[data-action="copy-link"]', function () {
const copyEl = $(this); const copyEl = $(this);
const mid = copyEl.attr('data-mid'); const mid = copyEl.attr('data-mid');
if (mid) { if (mid) {
navigator.clipboard.writeText(`${window.location.origin}/message/${mid}`); doCopy(copyEl, `${window.location.origin}/message/${mid}`);
copyEl.find('i').addClass('fa-check').removeClass('fa-link'); }
setTimeout(() => copyEl.find('i').removeClass('fa-check').addClass('fa-link'), 2000); });
container.off('click', '[data-action="copy-text"]')
.on('click', '[data-action="copy-text"]', function () {
const copyEl = $(this);
const messageEl = copyEl.parents('[data-mid]');
if (messageEl.length) {
doCopy(copyEl, messageEl.find('[component="chat/message/body"]').text().trim());
} }
}); });
}; };