🏠 Home 

pocketSelectAll

9/Oct/2020


Install this script?
// ==UserScript==
// @name        pocketSelectAll
// @namespace   Violentmonkey Scripts
// @match       https://app.getpocket.com/*
// @grant       none
// @version     1.2
// @author      AdrianSkar
// @description 9/Oct/2020
// ==/UserScript==
(function () {
setTimeout(() => {// Pocket loads content (including buttons) asynchronously
let listen = document.querySelector("button[aria-label='Bulk Edit']");
function buttons() {
setTimeout(() => {// Pocket loads content (including buttons) asynchronously
let selectVis = function () {
function eventFire(el) {
let evt = new MouseEvent("click", {
view: window,
bubbles: true,
cancelable: true,
});
el.dispatchEvent(evt);
}
//svg
let target = document.getElementsByTagName("use");
//loop trough <use> elements (some are not articles)
for (let i = 0; i < target.length; i++) {
// check if targets are selectable articles
if ((target[i].getAttribute('xlink:href').indexOf("CheckOpen") > -1)) {
//click on them
eventFire(target[i]);
}
else {
// console.log(target[i], 'is not clickable');
}
}
};
// console.log(' close bulk');
//prepend buttons before the close bulk edit one
//prepend buttons before the close bulk edit one
let responsiveX = document.querySelector('[*|href*="CloseX"]'); // X button on responsive
let bulk = document.querySelector("button[aria-label='Close Bulk Edit']");
let selVis = bulk.cloneNode();
let selAll = bulk.cloneNode();
selVis.textContent = 'Select visible';
selAll.textContent = 'Select all';
//load styles depending on responsive or desktop version
if (responsiveX) {
let styleRes = 'margin-right: 0.5em; min-width: 4em; font-size: 0.8em; border: 1px solid lightgray; border-radius: 4px;';
selVis.setAttribute('style', styleRes);
selAll.setAttribute('style', styleRes);
} else {
let styleDes = 'margin-right: 0.5em;';
selVis.setAttribute('style', styleDes);
selAll.setAttribute('style', styleDes);
}
bulk.parentElement.prepend(selVis);
bulk.parentElement.prepend(selAll);
// select all articles (selectVis + scroll every 2secs)
let selectAll = function () {
let target = document.getElementsByTagName("use"),
last = target[target.length - 1];
function scrollEnd() {
if (last.getAttribute('xlink:href').indexOf("CheckOpen") === -1) {
selAll.textContent = 'Selected';
// console.log('done');
clearInterval(timer);
selectVis();
}
else {
selectVis();
last.scrollIntoView();
selAll.textContent = 'working...';
console.log('scrolling');
}
}
let timer = setInterval(() => {
target = document.getElementsByTagName("use");
last = target[target.length - 1];
scrollEnd();
}, 2000);
};
selVis.addEventListener('click', selectVis);
selAll.addEventListener('click', selectAll);
}, 100);
}
if (Boolean(listen)) {
console.log('listen');
listen.addEventListener('click', buttons);
}
else {
console.log('no listen');
}
}, 2000);
})();