ChatGPT Temporary Chat Toggle without reloading the web

Toggle temporary chat mode on chaptgpt with double shift key press without reloading

Verze ze dne 31. 12. 2024. Zobrazit nejnovější verzi.

// ==UserScript==
// @name         ChatGPT Temporary Chat Toggle without reloading the web
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Toggle temporary chat mode on chaptgpt with double shift key press without reloading
// @author       小红书 :沉浸式学法语😈  小红书id : 590862748
// @match        https://chatgpt.com/*
// @license      MIT
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    var lastShiftTime = 0;
    var shiftTimeout = 500;
    var shiftPressedOnce = false;

    document.addEventListener('keydown', function(e) {
        if (e.key === 'Shift') {
            var currentTime = new Date().getTime();
            if (shiftPressedOnce && (currentTime - lastShiftTime) < shiftTimeout) {
                shiftPressedOnce = false;
                lastShiftTime = 0;

                toggleTemporaryChat();
            } else {
                shiftPressedOnce = true;
                lastShiftTime = currentTime;

                setTimeout(function() {
                    shiftPressedOnce = false;
                }, shiftTimeout);
            }
        }
    });

    function toggleTemporaryChat() {
        var url = new URL(window.location.href);
        var params = new URLSearchParams(url.search);

        if (params.get('temporary-chat') === 'true') {
            // we are in tempo chat mode, remove the parameter
            params.delete('temporary-chat');

            history.replaceState(null, '', url.pathname + '?' + params.toString() + url.hash);

            // dispatch a custom event
            triggerUrlChange();

        } else {
            params.set('temporary-chat', 'true');

            history.replaceState(null, '', url.pathname + '?' + params.toString() + url.hash);

            triggerUrlChange();
        }
    }

    function triggerUrlChange() {
        // some SPAs listen to the popstate event
        window.dispatchEvent(new PopStateEvent('popstate', { state: history.state }));

    }
})();

// ==Copyright==
// Copyright © 2024 by 沉浸式学法语😈 (小红书 ID: 590862748). All rights reserved.
// This script is the intellectual property of the author. Unauthorized copying, modification,
// or redistribution of this script, in whole or in part, is strictly prohibited without explicit
// prior written permission from the author.
// For inquiries, contact the author through their 小红书 ID: 590862748.
// ==End of Copyright==