Bitcointalk Image Upload Button (TalkIMG)

Adds an button to the post creation form that uploads an image and inserts it on the post

// ==UserScript==
// @name         Bitcointalk Image Upload Button (TalkIMG)
// @version      0.2
// @description  Adds an button to the post creation form that uploads an image and inserts it on the post
// @author       TryNinja
// @match        https://bitcointalk.org/index.php?action=post*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bitcointalk.org
// @grant        none
// @namespace https://greasyfork.org/users/1070272
// ==/UserScript==

const apiKey = '';
const uploadUrl = 'https://proxy.ninjastic.space/?url=https://talkimg.com/api/1/upload';

(function() {
    'use strict';

const forumImgButtonTarget = document.querySelector('a:nth-child(24)');

const imgUploadButton = document.createElement('a');
imgUploadButton.href = "javascript:void(0);";
imgUploadButton.onclick = () => document.getElementById('uploadImage').click();
imgUploadButton.innerHTML = `<img onmouseover="bbc_highlight(this, true);" onmouseout="if (window.bbc_highlight) bbc_highlight(this, false);" src="https://www.talkimg.com/images/2023/05/09/logo418d0697bfbdeac7.png" align="bottom" width="23" height="22" alt="Upload Image" title="Upload Image" style="background-image: url('https://bitcointalk.org/Themes/custom1/images/bbc/bbc_bg.gif'); margin: 1px 2px 1px 1px;">`;
forumImgButtonTarget.after(imgUploadButton);

const uploadInput = document.createElement('input');
uploadInput.id = 'uploadImage';
uploadInput.type = 'file';
uploadInput.accept = 'image/*';
uploadInput.style.display = 'none';
forumImgButtonTarget.after(uploadInput);

const insertImageUrl = imgUrl => {
    /*global replaceText, a*/
   replaceText(`[img]${imgUrl}[/img]`, document.forms.postmodify.message);
};

uploadInput.onchange = async () => {
  const { files } = uploadInput;
  if (files[0].size) {
    const formData = new FormData();
    formData.append('type', 'file');
    formData.append('format', 'json');
    formData.append('source', files[0]);

    console.log('uploading image');

    const upload = await fetch(uploadUrl, {
      method: 'POST',
      headers: { 'X-API-Key': apiKey },
      mode: 'cors',
      body: formData,
    });

    const result = await upload.json();
      console.log(result)

    if (result.status_code === 200) {
      insertImageUrl(result.image.url);
    }

   uploadInput.value = undefined;
  }
};

})();