fix(editor): убрана модалка подтверждения при смене языка скрипта

При переключении JS↔Lua показывалась модалка "Сменить язык?" даже
если код не пустой. Юзер: не нужна, переключай сразу.

Сейчас: код остаётся как есть, меняется только подсветка синтаксиса
Monaco. Если код был пустой шаблон — подставляется новый шаблон языка.
This commit is contained in:
min 2026-06-09 01:55:54 +03:00
parent bf2447f86e
commit 3f9f7cd6c7

View File

@ -348,20 +348,9 @@ function ScriptEditor({ value, onSave, onRunSolo, isSoloRunning, scriptId, targe
onLanguageChange(lang, nextCode);
return;
}
// Код не пустой показываем кастомную модалку.
// ВАЖНО: lang захвачен через map'a, но localCode и onLanguageChange
// надо взять из ref'ов на момент confirm, иначе stale closure.
const targetLang = lang;
setConfirmState({
title: `Сменить язык на ${targetLang === 'lua' ? 'Lua' : 'JavaScript'}?`,
message: `Код останется как есть — синтаксис прежнего языка перестанет подсвечиваться, но текст не исчезнет. Можно переключиться обратно в любой момент.`,
confirmLabel: `Сменить на ${targetLang === 'lua' ? 'Lua' : 'JS'}`,
cancelLabel: 'Отмена',
onConfirm: () => {
// Берём актуальное значение из ref (не stale closure)
onLanguageChange(targetLang, localCodeRef.current);
},
});
// Код не пустой переключаем сразу, без модалки.
// Код остаётся как есть, только подсветка синтаксиса меняется.
onLanguageChange(lang, localCodeRef.current);
}}
style={{
padding: '4px 12px',