// ==UserScript== // @name Quizlet Auto Reject + Checkout Safe // @namespace http://tampermonkey.net/ // @version 2026-04-28 // @match https://quizlet.com/* // @grant none // @run-at document-idle // ==/UserScript== (function () { 'use strict'; const CHECK_INTERVAL = 500; const CHECK_TIMEOUT = 20000; const CHECKOUT_URL = "https://quizlet.com/checkout?source=header_teacher&signupOrigin=upgrade-teacher-above-the-fold-start-trial"; function waitClick(selectors, name) { const start = Date.now(); const timer = setInterval(() => { for (const selector of selectors) { const el = document.querySelector(selector); if (el && !el.disabled) { el.click(); console.log("[TM] Clicked:", name); clearInterval(timer); return true; } } if (Date.now() - start > CHECK_TIMEOUT) { clearInterval(timer); console.log("[TM] Not found:", name); } }, CHECK_INTERVAL); } function rejectCookies() { waitClick([ '#ketch-banner-button-tertiary', 'button[aria-label="Reject All"]', 'button[aria-label="Từ chối tất cả"]' ], "Reject cookies"); } function clickTrial() { waitClick([ 'button[data-testid="assembly-button-upgrade"]', 'button[aria-label="Dùng thử miễn phí"]', 'button[title="Dùng thử miễn phí"]' ], "Trial"); } function clickCancelFinish() { waitClick([ 'button[aria-label="Hoàn tất việc hủy"]', 'button[data-testid="assembly-button-primary"]' ], "Cancel finish"); } function handleUrl() { const url = location.href; console.log("[TM] URL:", url); if (url.startsWith("https://quizlet.com/settings/manage-subscription/cancellation-survey")) { console.log("[TM] Cancellation survey reached."); return; } if (url.startsWith("https://quizlet.com/upgrade/success")) { location.replace("https://quizlet.com/settings/manage-subscription?step=cancel"); return; } if ( url.startsWith("https://quizlet.com/settings/manage-subscription") && url.includes("step=cancel") ) { clickCancelFinish(); return; } if (url.startsWith("https://quizlet.com/checkout")) { console.log("[TM] Checkout reached. Please click Google Pay manually."); rejectCookies(); return; } if (url.startsWith("https://quizlet.com/upgrade")) { clickTrial(); return; } if (url.startsWith("https://quizlet.com/settings")) { location.replace(CHECKOUT_URL); return; } rejectCookies(); } handleUrl(); let lastUrl = location.href; setInterval(() => { if (location.href !== lastUrl) { lastUrl = location.href; handleUrl(); } }, 500); })();