Trade Chat Spammer

Taking over Trade Chat. If you make a big deal, do send Microbes a gift!

// ==UserScript==
// @name         Trade Chat Spammer
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Taking over Trade Chat. If you make a big deal, do send Microbes a gift!
// @author       Microbes
// @match        https://www.torn.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=torn.com
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
	'use strict';

	let msg = "";
	startWaiting();

	function startWaiting() {
		waitForElementToExist('#chatRoot div[role="button"] svg path[fill="url(#public_trade-default)"]').then((elm) => {
			$('textarea[placeholder="Type your message here..."]').last().text(getLastMessage());

			$('textarea[placeholder="Type your message here..."]').last().keyup(function(e) {
				if (e.keyCode == 13 && msg) {
					localStorage.setItem(`tspammer_lastchat`, msg);
				} else {
					msg = $(e.currentTarget).val();
				}
			});

			$(elm).parent().parent().parent().parent().click(() => {
				startWaiting();
			});
		});
	}

	function getLastMessage() {
		return localStorage.getItem(`tspammer_lastchat`) || 'Trade Spammer Activaited! Send Microbes gifts!';
	}
})();

/* HELPERS */
function waitForElementToExist(selector) {
	return new Promise(resolve => {
		if (document.querySelector(selector)) {
			return resolve(document.querySelector(selector));
		}

		const observer = new MutationObserver(() => {
			if (document.querySelector(selector)) {
				resolve(document.querySelector(selector));
				observer.disconnect();
			}
		});

		observer.observe(document.body, {
			subtree: true,
			childList: true,
		});
	});
}