import { Box } from "@mui/material"; import { useState, useEffect } from "react"; import { ReactPhotoSphereViewer } from "react-photo-sphere-viewer"; import { ThreeView } from "./ThreeView"; import { ThreeViewErrorBoundary } from "./ThreeViewErrorBoundary"; import { clearMediaTransitionCache } from "../../shared/lib/gltfCacheManager"; export interface MediaData { id: string | number; media_type: number; filename?: string; } export function MediaViewer({ media, className, height, width, fullWidth, fullHeight, }: Readonly<{ media?: MediaData; className?: string; height?: string; width?: string; fullWidth?: boolean; fullHeight?: boolean; }>) { const token = localStorage.getItem("token"); const [resetKey, setResetKey] = useState(0); const [previousMediaId, setPreviousMediaId] = useState< string | number | null >(null); // Сбрасываем ключ при смене медиа useEffect(() => { if (media?.id !== previousMediaId) { console.log("🔄 MediaViewer: Смена медиа, сброс ключа", { previousMediaId, newMediaId: media?.id, mediaType: media?.media_type, }); // Используем новый cache manager для очистки кеша clearMediaTransitionCache( previousMediaId, media?.id || null, media?.media_type ); setResetKey(0); setPreviousMediaId(media?.id || null); } }, [media?.id, media?.media_type, previousMediaId]); const handleReset = () => { console.log("🔄 MediaViewer: handleReset вызван", { currentResetKey: resetKey, mediaId: media?.id, }); setResetKey((prev) => { const newKey = prev + 1; console.log("🔄 MediaViewer: resetKey обновлен", { oldKey: prev, newKey, }); return newKey; }); }; return ( {media?.media_type === 1 && ( {media?.filename} )} {media?.media_type === 2 && ( ); }