Removes Archived, Saved & Applied Job Posts from showing up & Allows select Job Posts via Arrow Keys
// ==UserScript== // @name Indeed UX+ // @namespace http://tampermonkey.net/ // @version 0.3.1 // @description Removes Archived, Saved & Applied Job Posts from showing up & Allows select Job Posts via Arrow Keys // @author TigerYT // @include *://*.indeed.tld/* // @icon https://uk.indeed.com/images/favicon.ico // @grant none // @license The Unlicense // @run-at context-menu // ==/UserScript== (function checkDocumentReady() { document.readyState === 'complete' ? executeUsercript() : setTimeout(checkDocumentReady, 0); })(); function executeUsercript() { 'use strict'; let getViewJobPanelElem = () => document.getElementById('jobsearch-JobFullDetailsTitle')?.nextElementSibling; let getJobR###ltsPanelElem = () => document.getElementById('mosaic-provider-jobcards')?.firstElementChild; let allPosts = Array.from(getJobR###ltsPanelElem()?.children ?? []); let getJobPosts = () => allPosts.filter((jobPost) => jobPost.firstElementChild.classList.contains('tapItem')).map((({firstElementChild}) => firstElementChild)); let getVisiblePosts = () => getJobPosts().filter((jobPostElem) => !jobPostElem.classList.contains('disliked')); let getCurrentJobPostId = () => getViewJobPanelElem()?.querySelector('.jobsearch-HeaderContainer a').href.split("&fromjk=")[1]; let getCurrentJobPostElem = () => getVisiblePosts().find((jobPostElem) => getCurrentJobPostId() == getjobPostId(jobPostElem)); let getCurrentJobPostElemIndex = () => getVisiblePosts().findIndex((jobPostElem) => getCurrentJobPostId() == getjobPostId(jobPostElem)); let getjobPostId = (jobPostElem) => jobPostElem.className.split(' ').find((classStr) => classStr.startsWith('job_'))?.slice(4); /* Hide All Saved Job Posts */ getJobPosts().forEach((jobPostElem) => { let jobPostId = getjobPostId(jobPostElem); if ((jobPostElem.querySelector('div.underShelfFooter span')?.textContent.startsWith('Saved ') || jobPostElem.querySelector('div.underShelfFooter span')?.textContent.startsWith('Archived ') || jobPostElem.querySelector('.mainContentTable div[data-testid="appliedSnippet"]')?.textContent == 'Applied') && !jobPostElem.classList.contains('disliked')) { jobPostElem.classList.add('disliked'); if (jobPostId == getCurrentJobPostId() || !getCurrentJobPostElem()) getViewJobPanelElem().firstElementChild.click(); } else if (jobPostId == getCurrentJobPostId()) getCurrentJobPostElem().classList.add('vjs-highlight'); }); /* Allow Arrow Keys to Select Job Posts */ let newJobPostElemIndex, currentJobPostElemIndex newJobPostElemIndex = currentJobPostElemIndex = getCurrentJobPostElemIndex(); let jobPostSelector = (e) => { let upKey = ['ArrowUp', 'ArrowLeft'].includes(e.key); let downKey = ['ArrowDown', 'ArrowRight'].includes(e.key); if (!getCurrentJobPostElem()) getViewJobPanelElem()?.firstElementChild.click(); if (currentJobPostElemIndex > 0 && upKey) newJobPostElemIndex--; else if (currentJobPostElemIndex < (getVisiblePosts().length - 1) && downKey) newJobPostElemIndex++; else return; let newJobPostElem = getVisiblePosts()[newJobPostElemIndex]; let newJobPostId = getjobPostId(newJobPostElem); newJobPostElem.scrollIntoView({ behavior: 'auto', block: 'center', inline: 'center' }); document.querySelector(`#sj_${newJobPostId}, #job_${newJobPostId}`).click(); currentJobPostElemIndex = newJobPostElemIndex; } window.addEventListener('keydown', (e) => jobPostSelector(e)); }