diff --git a/src/KubikonPlayer/KubikonPlayer.jsx b/src/KubikonPlayer/KubikonPlayer.jsx index 3129c5e..9d96bf8 100644 --- a/src/KubikonPlayer/KubikonPlayer.jsx +++ b/src/KubikonPlayer/KubikonPlayer.jsx @@ -22,7 +22,7 @@ import { useAuth } from '../auth/PlayerAuth'; import RublocsLogo from '../components/RublocsLogo/RublocsLogo'; import useDeviceType from '../hooks/useDeviceType'; import KubikonMobileControls from './KubikonMobileControls'; - +// загрузка плейсов начинается на строке 1163 // Плеер живёт на player.rublox.pro — он не знает SPA-роутов Майнкрафтии // (/kubikon, /login, /auth). Поэтому вместо navigate(...) делаем // явный window.location.assign на внешний домен. @@ -254,6 +254,7 @@ const KubikonPlayer = () => { const [ratingToast, setRatingToast] = useState(null); const [placeName, setPlaceName] = useState('Загрузка игры…'); const [placeImage, setPlaceImage] = useState(null); + const [studioName, setStudioName] = useState(null); const timerRafRef = useRef(null); /** Кэш загруженного project_data для soft-restart игры. */ const initialStateRef = useRef(null); @@ -689,24 +690,22 @@ const KubikonPlayer = () => { }, [projectId, userId, sessionId, loading]); // Загрузка названия и картинки плейса с сервера + // Загрузка названия, картинки и автора плейса с сервера + // Загрузка названия, картинки и автора плейса useEffect(() => { if (!projectId) return; + if (!userId) { + console.log('[Loading] Ждём userId...'); + return; // Ждём пока userId загрузится + } async function loadPlaceData() { try { - // Пробуем получить данные из meta (уже загружено в проекте) - if (meta?.title) { - setPlaceName(meta.title); - } - if (meta?.thumbnail) { - setPlaceImage(meta.thumbnail); - return; - } - - // Если нет — загружаем через API + // Пытаемся загрузить данные через API const response = await Kubikon3DApi.getProjectForPlay(projectId, userId); const title = response?.data?.title; const thumbnail = response?.data?.thumbnail; + const author = response?.data?.author_username; if (title) { setPlaceName(title); @@ -717,6 +716,11 @@ const KubikonPlayer = () => { if (thumbnail) { setPlaceImage(thumbnail); } + + if (author) { + setStudioName(author); + } + } catch (error) { console.warn('[KubikonPlayer] Не удалось загрузить данные плейса:', error); setPlaceName(`Плейс ${projectId}`); @@ -724,7 +728,7 @@ const KubikonPlayer = () => { } loadPlaceData(); - }, [projectId, userId, meta]); + }, [projectId, userId]); // Убрал meta из зависимостей! // Хоткеи 1-5 для слотов инвентаря. // Babylon ловит ввод на canvas — слушаем в capture-phase на window @@ -1175,8 +1179,6 @@ const KubikonPlayer = () => { /> {/* Loading-оверлей */} {/*не меняйте пожалуйста загрузку, работаю над ней*/} - {/* Loading-оверлей */} - {/*ЗДЕСЬ БУДЕТ ТВОЙ СКРИПТ*/} {loading && (