Wanikani Forums: Easy mentions

Mention users with the click of a button!

// ==UserScript==
// @name         Wanikani Forums: Easy mentions
// @namespace    http://tampermonkey.net/
// @version      0.1.8
// @description  Mention users with the click of a button!
// @author       Kumirei
// @include      *community.wanikani.com*
// @include      *community.bunpro.jp*
// @require      https://greasyfork.org/scripts/432418-wait-for-selector/code/Wait%20For%20Selector.js?version=974318
// @grant        none
// ==/UserScript==

;(function ($, wfs) {
    wfs.wait('.post-controls .actions', effect)

    function effect(e) {
        var btn = document.createElement('button')
        btn.className = 'widget-button btn-flat no-text btn-icon mention-button'
        btn.title = 'Click to mention the author of this post'
        btn.innerHTML =
            '<svg class="fa d-icon d-icon-at svg-icon svg-node" aria-hidden="true"><use xlink:href="#at"></use></svg></button>'
        btn.onclick = function () {
            if (!$('#reply-control .reply-area').length) $('.btn-primary.create').click()
            var interval = setInterval(function () {
                if ($('button.quote').length) {
                    $('.d-editor-input')[0].value += '@' + $(e).closest('article').find('.username a')[0].innerText + ' '
                    $('.d-editor-input').blur()
                    $('.d-editor-input').focus()
                    clearInterval(interval)
                }
            }, 100)
        }
        var E = $(e).closest('article')
        var oldBtn = E.find('button[title="Click to mention the author of this post"]')
        if (oldBtn.length) oldBtn.remove()
        $(e).after(btn)
    }
    $('head').append(
        '<style id="EasyMentionsCSS">' +
            '.mention-button {order: 1; padding: 8px 10px; margin: 1px 0;}' +
            '.mention-button.d-hover {background-color: rgba(122, 122, 122, 0.17);}' +
            '.post-controls {justify-content: flex-end !important;}' +
            '.post-controls .actions {margin: 0 !important; order: 99;}' +
            '.post-controls .show-replies {position: absolute; left: 0; margin-left: 0px !important;}' +
            '</style>',
    )
})(window.jQuery, window.wfs)