Remembers and scroll through the last 10 entered in the chatbox using the up and down arrow keys
// ==UserScript==
// @name Replika Chatbox History
// @namespace http://tampermonkey.net/
// @version 0.1.1
// @description Remembers and scroll through the last 10 entered in the chatbox using the up and down arrow keys
// @author Nixsy
// @match *://*/*
// @grant none
// @license GPL 3
// ==/UserScript==
(function () {
'use strict';
const test = false;
if (test) {
console.log("Script started");
}
const maxEntries = 10;
let chatHistory = [];
let currentEntryIndex = 0;
function handleKeyPress(event) {
if (event.key == 'ArrowUp' || event.key == 'ArrowDown' || event.key == 'Enter') {
console.log('key event :' + event.key);
var chatbox = document.querySelector('#send-message-textarea');
if (event.key == 'ArrowUp') {
// Scroll up through history
if (currentEntryIndex > 0) {
currentEntryIndex--;
chatbox.value = chatHistory[currentEntryIndex];
chatbox.click()
var e = new KeyboardEvent('keydown',{'keyCode':32,'which':32});
if (test) {
console.log('arrow up and current entry: ' + chatHistory[currentEntryIndex]);
}
}
} else if (event.key == 'ArrowDown') {
// Scroll down through history
if (currentEntryIndex < chatHistory.length - 1) {
currentEntryIndex++;
chatbox.value = chatHistory[currentEntryIndex];
chatbox.click()
var e = new KeyboardEvent('keydown',{'keyCode':32,'which':32});
if (test) {
console.log('arrow down and current entry: ' + chatHistory[currentEntryIndex]);
}
} else {
// If at the latest message, clear the chatbox
currentEntryIndex = chatHistory.length;
chatbox.value = '';
}
} else if (event.key == 'Enter') {
if (chatbox.value) {
console.log("chatbox isnt null")
} else {
var chatbox = document.querySelector('#send-message-textarea');
console.log('tried to refil chatbox content with: ' + chatbox.value)
}
if (test) {
console.log('enter pressed and this added to object :' + chatbox.value);
}
// Remember the current entry when Enter is pressed
const currentEntry = chatbox.value;
if (currentEntry !== '') {
if (chatHistory.length == maxEntries) {
chatHistory.shift(); // Remove the oldest entry if the history is full
}
chatHistory.push(currentEntry);
currentEntryIndex = chatHistory.length;
if (test) {
console.log('current entry : ' + currentEntry + ' current length:' + chatHistory.length);
}
}
}
}
}
setTimeout(function () {
const chatbox2 = document.querySelector('#send-message-textarea');
if (chatbox2) {
chatbox2.addEventListener('keydown', handleKeyPress);
if (test) {
console.log('Chatbox key event added');
}
} else {
if (test) {
console.log('Chatbox not found');
}
}
}, 1000);
})();