mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import $ from "jquery";
 | 
						|
 | 
						|
import render_deprecated_feature_notice from "../templates/deprecated_feature_notice.hbs";
 | 
						|
 | 
						|
import * as blueslip from "./blueslip";
 | 
						|
import * as common from "./common";
 | 
						|
import {$t} from "./i18n";
 | 
						|
import {localstorage} from "./localstorage";
 | 
						|
import * as overlays from "./overlays";
 | 
						|
 | 
						|
export function get_hotkey_deprecation_notice(originalHotkey, replacementHotkey) {
 | 
						|
    return $t(
 | 
						|
        {
 | 
						|
            defaultMessage:
 | 
						|
                'We\'ve replaced the "{originalHotkey}" hotkey with "{replacementHotkey}" to make this common shortcut easier to trigger.',
 | 
						|
        },
 | 
						|
        {originalHotkey, replacementHotkey},
 | 
						|
    );
 | 
						|
}
 | 
						|
 | 
						|
let shown_deprecation_notices = [];
 | 
						|
 | 
						|
export function maybe_show_deprecation_notice(key) {
 | 
						|
    let message;
 | 
						|
    const isCmdOrCtrl = common.has_mac_keyboard() ? "Cmd" : "Ctrl";
 | 
						|
    if (key === "C") {
 | 
						|
        message = get_hotkey_deprecation_notice("C", "x");
 | 
						|
    } else if (key === "*") {
 | 
						|
        message = get_hotkey_deprecation_notice("*", isCmdOrCtrl + " + s");
 | 
						|
    } else {
 | 
						|
        blueslip.error("Unexpected deprecation notice for hotkey:", key);
 | 
						|
        return;
 | 
						|
    }
 | 
						|
 | 
						|
    // Here we handle the tracking for showing deprecation notices,
 | 
						|
    // whether or not local storage is available.
 | 
						|
    if (localstorage.supported()) {
 | 
						|
        const notices_from_storage = JSON.parse(localStorage.getItem("shown_deprecation_notices"));
 | 
						|
        if (notices_from_storage !== null) {
 | 
						|
            shown_deprecation_notices = notices_from_storage;
 | 
						|
        } else {
 | 
						|
            shown_deprecation_notices = [];
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    if (!shown_deprecation_notices.includes(key)) {
 | 
						|
        const rendered_deprecated_feature_notice = render_deprecated_feature_notice({message});
 | 
						|
        const deprecated_feature_notice = $(rendered_deprecated_feature_notice);
 | 
						|
 | 
						|
        $(".app").append(deprecated_feature_notice);
 | 
						|
 | 
						|
        overlays.open_modal("#deprecation-notice-modal", {autoremove: true});
 | 
						|
        $("#deprecation-notice-message").text(message);
 | 
						|
        $("#close-deprecation-notice").trigger("focus");
 | 
						|
        shown_deprecation_notices.push(key);
 | 
						|
        if (localstorage.supported()) {
 | 
						|
            localStorage.setItem(
 | 
						|
                "shown_deprecation_notices",
 | 
						|
                JSON.stringify(shown_deprecation_notices),
 | 
						|
            );
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |