// ==UserScript==
// @name Scrap.TF - Hide Entered Raffles
// @namespace https://github.com/ceeprus
// @version 1.1
// @description Hide already-entered (darkened) raffles on scrap.tf raffle lists, with an eye toggle button next to Create Raffle
// @icon https://www.google.com/s2/favicons?sz=64&domain=scrap.tf
// @author Cee
// @match https://scrap.tf/raffles
// @match https://scrap.tf/raffles/*
// @grant none
// @run-at document-end
// @downloadURL https://raw.githubusercontent.com/ceeprus/userscript/main/scraptf/scraptf-hide-entered.user.js
// @updateURL https://raw.githubusercontent.com/ceeprus/userscript/main/scraptf/scraptf-hide-entered.user.js
// ==/UserScript==
(function () {
'use strict';
var list = document.getElementById('raffles-list');
if (!list) return; // not a raffle list page (e.g. an individual raffle)
var KEY = 'stf-hide-entered';
var hidden = localStorage.getItem(KEY) !== '0'; // default: hide entered
var style = document.createElement('style');
style.textContent =
'body.stf-hide-entered .panel-raffle.raffle-entered{display:none!important}' +
'#stf-eye-toggle{margin-right:8px;cursor:pointer}' +
'#stf-eye-toggle.stf-floating{position:fixed;bottom:20px;right:20px;z-index:99999;margin:0}' +
'#stf-eye-badge{display:inline-block;margin-left:5px;background:#e74c3c;color:#fff;' +
'border-radius:9px;font-size:11px;line-height:16px;min-width:16px;padding:0 4px;' +
'text-align:center;vertical-align:middle}';
document.head.appendChild(style);
var btn = document.createElement('button');
btn.id = 'stf-eye-toggle';
btn.type = 'button';
btn.className = 'btn btn-inverse btn-embossed';
btn.innerHTML = '0';
var newRaffle = document.querySelector('.new-raffle');
if (newRaffle) {
newRaffle.insertBefore(btn, newRaffle.firstChild); // left of Create Raffle
} else {
btn.classList.add('stf-floating'); // fallback: floating bottom-right
document.body.appendChild(btn);
}
var icon = btn.querySelector('.fa');
var badge = btn.querySelector('#stf-eye-badge');
function render() {
document.body.classList.toggle('stf-hide-entered', hidden);
icon.className = 'fa fa-fw ' + (hidden ? 'fa-eye-slash' : 'fa-eye');
var n = list.querySelectorAll('.panel-raffle.raffle-entered').length;
badge.textContent = n;
btn.title = hidden
? n + ' entered raffle(s) hidden — click to show'
: n + ' entered raffle(s) shown — click to hide';
}
btn.addEventListener('click', function () {
hidden = !hidden;
localStorage.setItem(KEY, hidden ? '1' : '0');
render();
});
// infinite scroll appends panels; entering a raffle can flip its class live
new MutationObserver(render).observe(list, {
childList: true,
subtree: true,
attributes: true,
attributeFilter: ['class']
});
render();
})();