fix(editor): убрана модалка подтверждения при смене языка скрипта
При переключении JS↔Lua показывалась модалка "Сменить язык?" даже если код не пустой. Юзер: не нужна, переключай сразу. Сейчас: код остаётся как есть, меняется только подсветка синтаксиса Monaco. Если код был пустой шаблон — подставляется новый шаблон языка.
This commit is contained in:
parent
bf2447f86e
commit
3f9f7cd6c7
@ -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',
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user