just open direct!
// ==UserScript==
// @name open_original_links_in_pocket
// @namespace undegro
// @include https://getpocket.com/*
// @version 4.6
// @license MIT
// @description just open direct!
// ==/UserScript==
{
const parent = document.getElementById("__next")
const observeParent = new MutationObserver(records => records.filter(record => record.addedNodes[0]).some(record => record.target.tagName == "MAIN" || (record.target == parent && record.addedNodes[0].querySelector("main"))) && init())
const observeArticle = new MutationObserver(records => records.flatMap(record => [...record.addedNodes]).forEach(rewrite))
observeParent.observe(parent, { childList: true, subtree: true })
async function init() {
observeArticle.disconnect()
const articleList = await waitElement("main > div > div > div")
if(articleList) observeArticle.observe(articleList, { childList: true, subtree: true })
}
function rewrite(target) {
if(target.tagName == "ARTICLE") {
const links = [...target.getElementsByTagName("a")]
const publisherLink = links.find(link => link.classList.contains("publisher"))
links.forEach(link => {
link.addEventListener("click", e => e.stopPropagation())
link.href = decodeURIComponent(publisherLink.href.replace(/^https:\/\/getpocket\.com\/redirect\?url=/, ""))
link.setAttribute("target", "_blank")
})
}
}
function waitElement(selector) {
return new Promise((resolve) => {
const searchElement = () => {
const elem = document.querySelector(selector)
if(!elem) {
requestAnimationFrame(searchElement)
}else{
resolve(elem)
}
}
searchElement()
setTimeout(() => resolve(false), 5000)
})
}
}