🚀 Auto-deploy: melhoria no snap e medição AR em 02/06/2026 21:32:29

This commit is contained in:
2026-06-02 21:32:29 +00:00
parent 11547f7bc7
commit 10f00e921d
2 changed files with 16 additions and 2 deletions
+7 -2
View File
@@ -3,6 +3,7 @@ import { supabase } from "@/integrations/supabase/client";
import { ArrowLeft, Glasses, Box, Ruler, FileText, Upload, Loader2, Users, Menu, Target } from "lucide-react";
import { Button } from "@/components/ui/button";
import { useModelStore } from "@/stores/useModelStore";
import { xrStore } from "@/stores/useXRStore";
import { ModelViewerCanvas } from "@/components/three/ModelViewer";
import { ViewerControls } from "@/components/ViewerControls";
import { InspectionChecklist } from "@/components/InspectionChecklist";
@@ -274,12 +275,16 @@ const Viewer = () => {
}, 15000);
try {
const { xrStore } = await import('@/stores/useXRStore');
// Marca que está entrando no AR antes de navegar — bloqueia auto-return prematuro
(window as unknown as { __setXrEntering?: (v: boolean) => void }).__setXrEntering?.(true);
await xrStore.enterAR();
// Chamada síncrona de enterAR para preservar o User Gesture exigido pelo WebXR
const enterPromise = xrStore.enterAR();
clearTimeout(timeoutId);
navigate("/xr");
await enterPromise;
} catch (e) {
clearTimeout(timeoutId);
setEnteringXR(false);
+9
View File
@@ -812,3 +812,12 @@ export const useModelStore = create<ModelStore>((set, get) => ({
set({ ifcMaterialColors: enabled });
},
}));
// Autodetecção global de suporte a WebXR
if (typeof navigator !== 'undefined' && navigator.xr) {
navigator.xr.isSessionSupported('immersive-ar')
.then((supported) => useModelStore.getState().setXrSupported(supported))
.catch(() => useModelStore.getState().setXrSupported(false));
} else {
useModelStore.getState().setXrSupported(false);
}