Cursor Reset Trial

Reset Cursor Trial - Reset their Cursor trial period

2024-12-30 기준 버전입니다. 최신 버전을 확인하세요.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Cursor Reset Trial
// @namespace    http://tampermonkey.net/
// @version      1.1
// @license MIT
// @description  Reset Cursor Trial - Reset their Cursor trial period
// @author       ovftank
// @homepage     https://github.com/ovftank/cursor-reset-trial/tree/main/tampermonkey-script
// @supportURL   https://github.com/ovftank
// @match        https://www.cursor.com/*
// @match        https://authenticator.cursor.sh/*
// @grant        GM_xmlhttpRequest
// @icon         https://github.com/ovftank/cursor-reset-trial/raw/refs/heads/main/images/icon.ico
// @contactURL   https://t.me/ovftank
// @copyright    2024, ovftank (https://greasyfork.org/users/1392240-ovftank)
// ==/UserScript==

(()=>{"use strict";let t=()=>{let t=document.createElement("style");t.textContent=`
    @keyframes toastFadeIn {
        from {
            opacity: 0;
            transform: translateY(-20px);
        }
        to {
            opacity: 1;
            transform: translateY(0);
        }
    }

    .toast-overlay {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        bottom: 0;
        background-color: rgba(0, 0, 0, 0.5);
        backdrop-filter: blur(4px);
        z-index: 99999;
        display: flex;
        align-items: center;
        justify-content: center;
    }

    .toast-container {
        background-color: rgba(0, 0, 0, 0.9);
        color: white;
        padding: 20px;
        border-radius: 8px;
        min-width: 300px;
        text-align: center;
        animation: toastFadeIn 0.3s ease;
        border: 1px solid rgba(255, 255, 255, 0.1);
    }

    .toast-message {
        margin-bottom: 16px;
        font-size: 16px;
    }

    .toast-buttons {
        display: flex;
        justify-content: center;
        gap: 8px;
    }

    .toast-button {
        padding: 8px 16px;
        border-radius: 12px;
        color: white;
        cursor: pointer;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        transition: all 0.3s ease;
    }

    .toast-button:hover {
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
    }

    .confirm-button {
        background-color: white;
        color: black;
        border: none;
    }

    .confirm-button:hover {
        background-color: #f0f0f0;
    }

    .cancel-button {
        background-color: #666;
    }

    .cancel-button:hover {
        background-color: #777;
    }

    .delete-account-button {
        width: 100%;
        margin-top: 8px;
        padding: 8px 16px;
        background-color: #1a1a1a;
        border: 1px solid white;
        color: white;
        border-radius: 12px;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
        transition: all 0.3s ease;
        cursor: pointer;
    }

    .delete-account-button:hover {
        background-color: #2a2a2a;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
    }

    .loading-spinner {
        width: 24px;
        height: 24px;
        border: 3px solid rgba(255, 255, 255, 0.3);
        border-radius: 50%;
        border-top-color: white;
        animation: spin 1s linear infinite;
        margin: 0 auto;
        display: none;
    }

    @keyframes spin {
        to {
            transform: rotate(360deg);
        }
    }

    .toast-message.loading .loading-spinner {
        display: block;
        margin-top: 12px;
    }
`,document.head.appendChild(t)},e=(t,e,o=!1)=>{let r=document.createElement("div");r.className="toast-overlay";let a=document.createElement("div");a.className="toast-container",a.innerHTML=`
    <div class="toast-message">${t}
        <div class="loading-spinner"></div>
    </div>
    <div class="toast-buttons">
        <button class="toast-button confirm-button">Confirm</button>
        <button class="toast-button cancel-button">Cancel</button>
    </div>
`;let n=a.querySelector(".confirm-button"),s=a.querySelector(".cancel-button"),i=a.querySelector(".toast-message"),l=a.querySelector(".toast-buttons"),d=()=>{i.classList.add("loading"),l.style.display="none",i.textContent="Processing...";let t=document.createElement("div");t.className="loading-spinner",i.appendChild(t),e(r)};o?setTimeout(d,500):(n.addEventListener("click",d),s.addEventListener("click",()=>{document.body.removeChild(r)})),r.appendChild(a),document.body.appendChild(r)},o=(t,e,o=10)=>{let r=0,a=()=>{r++;let n=document.querySelector(t);if(n){e(n);return}r<o?setTimeout(a,1e3):console.log("Kh\xf4ng t\xecm thấy phần tử sau nhiều lần thử")};a()},r=t=>{GM_xmlhttpRequest({method:"POST",url:"https://www.cursor.com/api/dashboard/delete-account",headers:{"Content-Type":"application/json"},onload(e){if(200===e.status)document.body.removeChild(t),window.location.href="https://authenticator.cursor.sh";else{let o=t.querySelector(".toast-message"),r=t.querySelector(".toast-buttons");o.classList.remove("loading"),o.textContent="Failed to reset trial. Please try again.",r.style.display="flex"}},onerror(e){console.error("Error:",e);let o=t.querySelector(".toast-message"),r=t.querySelector(".toast-buttons");o.classList.remove("loading"),o.textContent="An error occurred. Please try again.",r.style.display="flex"}})},a=()=>{let t=window.location.href;"https://www.cursor.com/"===t?window.location.href="https://www.cursor.com/settings":t.startsWith("https://authenticator.cursor.sh/")&&o("body > div.radix-themes > div > div > div:nth-child(2) > div > form > div > div.rt-Grid.rt-r-gap-3 > a:nth-child(2)",t=>{t.click()})},n=()=>{if(t(),a(),window.location.href.startsWith("https://www.cursor.com/settings")){let n=new URLSearchParams(window.location.search),s="true"===n.get("reset");o("body > main > div > div > div > div > div > div.col-span-1.flex.flex-col.gap-2.xl\\:gap-4 > div:nth-child(1)",t=>{let o=document.createElement("button");o.innerHTML="Reset Trial",o.className="delete-account-button",o.addEventListener("click",()=>{e("Are you sure you want to reset your trial?",r)}),t.appendChild(o),s&&e("Are you sure you want to reset your trial?",r,!0)})}};n()})();