fix(11): guard от потери userModels/scripts при автосейве
All checks were successful
CI / Lint (pull_request) Successful in 1m7s
CI / Build (pull_request) Successful in 2m3s
CI / Secret scan (pull_request) Successful in 2m35s
CI / PR size check (pull_request) Successful in 8s
CI / Deploy to S1 + S2 (pull_request) Has been skipped

При частичной загрузке сцены (terrain догрузился, модели/скрипты ещё
нет из-за таймаута) автосейв затирал scene нулями. Блокируем сейв если
ранее загружено >0 объектов, а сейчас 0 и пользователь не редактировал;
loadFailedRef в safety-timer блокирует автосейв при таймауте загрузки.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
min 2026-06-02 20:09:36 +03:00
parent ee1b7352b7
commit b2b545344a

View File

@ -549,6 +549,12 @@ const KubikonEditor = () => {
// не отработал, или setSceneLoading(false) попал в обход (race).
const safetyTimer = setTimeout(() => {
console.warn('[KubikonEditor] safety timer: forcing setSceneLoading(false) after 60s');
// Загрузка не завершилась штатно за 60с (медленная сеть / таймаут
// getProject / частично загруженные модели) помечаем как СБОЙ
// загрузки, чтобы автосейв НЕ затёр проект частичной/пустой сценой.
// Без этого terrain мог загрузиться частично (напр. 3 из 13173) и
// автосейв писал эту пустышку в БД (инцидент 2026-06-02).
loadFailedRef.current = true;
setSceneLoading(false);
}, 60000);
return () => {