Last active
November 25, 2022 12:01
-
-
Save gd3kr/b4399eef601428bcc73bd1d1c1d99188 to your computer and use it in GitHub Desktop.
twitter autocomplete hack v2
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//MIT license (ie. do whatever tf you want with this code) | |
//Paste directly into console or GreaseMonkey https://greasyfork.org/en/scripts/455318-twitter-from-ui-upgrade | |
let search; | |
let fromFlag = false; | |
setTimeout(() => { | |
search = document.querySelectorAll( | |
"input[placeholder='Search Twitter']" | |
)[0]; | |
search.addEventListener("keydown", function (e) { | |
let searchValue = search.value; | |
if (searchValue.indexOf("from:") > -1) { | |
if (fromFlag === false) { | |
createSpanElement(); | |
search.value = searchValue.replace(/from:/, ""); | |
fromFlag = true; | |
} | |
} | |
if (search.value === "" && e.keyCode === 8) { | |
let span = document.getElementById("customSpan"); | |
span.parentNode.removeChild(span); | |
fromFlag = false; | |
} | |
if (e.keyCode === 13) { | |
e.preventDefault(); | |
window.location.href = "https://twitter.com/search?q=from:" + search.value; | |
} | |
}); | |
}, 1000); //one second delay to initialise the search bar | |
const createSpanElement = () => { | |
let span = document.createElement("span"); | |
span.innerHTML = "from:"; | |
span.style.color = "white"; | |
span.style.margin = "0px"; | |
span.style.height = "20px"; | |
span.style.marginRight = "0.5em"; | |
span.style.padding = "0.3em"; | |
span.style.marginTop = "0.45em"; | |
span.style.borderRadius = "0.5em"; | |
span.id = "customSpan"; | |
span.style.backgroundColor = "#1d99eb"; | |
search.parentNode.insertBefore(span, search); | |
}; | |
setInterval(function () { | |
// try catch block | |
let elements = document.getElementById("typeaheadDropdown-1")?.children; | |
// if null or undefined return | |
if (!elements) return; | |
for (let i = 0; i < elements.length; i++) { | |
elements[i].addEventListener("click", function (e) { | |
search.focus(); | |
e.stopImmediatePropagation(); | |
let text = this.innerText.match(/@.*\n/)[0]; | |
search.value = text; | |
}); | |
} | |
}, 200); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
linkstation.xyz