Fix Twitter Share Link

Replace `twitter` to `vxtwitter` when sharing links

// ==UserScript==
// @name         Fix Twitter Share Link
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Replace `twitter` to `vxtwitter` when sharing links
// @author       You
// @match        https://twitter.com/*
// @match        https://mobile.twitter.com/*
// @match        https://tweetdeck.twitter.com/*
// @match        https://x.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=twitter.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    const originalExecCommand = document.execCommand;
    const hijackedExecCommand = (...attrs) => {
        if (attrs[0] == 'copy') {
            const selected = window.getSelection().toString();
            if (selected.match(/^https+:\/\/((.+)\.)?x\.com\/(.+)\/status\/(\d+)(\?.+)?$/)) {
                const newUrl = selected.replace(/^https+:\/\/((.+)\.)?x\.com\/(.+)\/status\/(\d+)(\?.+)?$/, 'https://vxtwitter.com/$3/status/$4');
                copyTextToClipboard(newUrl);
                return;
            }
        }
        callExecCommand(...attrs);
    }
    const callExecCommand = (...attrs) => {
        document.execCommand = originalExecCommand;
        document.execCommand(...attrs);
        document.execCommand = hijackedExecCommand;
    }
    const copyTextToClipboard = (text) => {
        const textarea = document.createElement('textarea');
        textarea.style.position = 'fixed';
        textarea.style.top = '0';
        textarea.style.left = '0';
        textarea.style.opacity = '0';
        textarea.style.pointerEvents = 'none';
        textarea.value = text;
        document.body.appendChild(textarea);
        textarea.select();
        callExecCommand('copy', true);
        document.body.removeChild(textarea);
    }

    document.execCommand = hijackedExecCommand;
})();