Skip to content

Instantly share code, notes, and snippets.

@ErgEnn
Created October 22, 2023 12:56
Show Gist options
  • Save ErgEnn/b7dab785aee3b37806ff61875bc5e2df to your computer and use it in GitHub Desktop.
Save ErgEnn/b7dab785aee3b37806ff61875bc5e2df to your computer and use it in GitHub Desktop.
Facebook Marketplace item hider
// ==UserScript==
// @name Facebook Marketplace Item Hider
// @namespace FBMarkerplaceHider
// @match *://www.facebook.com/marketplace/*
// @grant GM_setValue
// @grant GM_getValue
// @version 1.0
// @author Ergo Enn
// @description On right-click allows to hide item in Facebook Marketplace
// @downloadURL https://gist.github.com/ErgEnn/
// @updateURL https://gist.github.com/ErgEnn/
// ==/UserScript==
(function () {
'use strict';
let hiddenItems = new Set(JSON.parse(GM_getValue('hiddenItems', '[]')));
function hideElement(elem) {
if (elem) {
elem.style.opacity = 0.1;
}
}
function extractItemId(href) {
const match = href.match(/item\/(\d+)/);
return match ? match[1] : null;
}
function hideMarketplaceItem(event) {
if(confirm("Hide?")){
event.preventDefault();
}else{
return;
}
const closestAnchor = event.target.closest('a');
if (!closestAnchor) return;
const itemId = extractItemId(closestAnchor.href);
if (!itemId) return;
let targetElement = closestAnchor;
for (let i = 0; i < 6; i++) {
if (targetElement.parentNode) {
targetElement = targetElement.parentNode;
} else {
break;
}
}
hiddenItems.add(itemId);
GM_setValue('hiddenItems', JSON.stringify(Array.from(hiddenItems)));
hideElement(targetElement);
}
function checkAndHideStoredItems() {
document.querySelectorAll('a').forEach(anchor => {
const itemId = extractItemId(anchor.href);
if (itemId && hiddenItems.has(itemId)) {
let targetElement = anchor;
for (let i = 0; i < 6; i++) {
if (targetElement.parentNode) {
targetElement = targetElement.parentNode;
} else {
break;
}
}
hideElement(targetElement);
}
});
}
new MutationObserver(checkAndHideStoredItems).observe(document.body, {
childList: true,
subtree: true
});
document.addEventListener('contextmenu', hideMarketplaceItem);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment