Mock capture preview in guest v2
This commit is contained in:
@@ -316,6 +316,39 @@ export default function UploadScreen() {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const handleCapture = React.useCallback(async () => {
|
const handleCapture = React.useCallback(async () => {
|
||||||
|
if (mockPreviewEnabled) {
|
||||||
|
const canvas = document.createElement('canvas');
|
||||||
|
const width = 1400;
|
||||||
|
const height = 1000;
|
||||||
|
canvas.width = width;
|
||||||
|
canvas.height = height;
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
if (!ctx) return;
|
||||||
|
const gradient = ctx.createLinearGradient(0, 0, width, height);
|
||||||
|
gradient.addColorStop(0, '#ff6ad5');
|
||||||
|
gradient.addColorStop(0.5, '#8b5cf6');
|
||||||
|
gradient.addColorStop(1, '#38bdf8');
|
||||||
|
ctx.fillStyle = gradient;
|
||||||
|
ctx.fillRect(0, 0, width, height);
|
||||||
|
ctx.fillStyle = 'rgba(255,255,255,0.18)';
|
||||||
|
ctx.fillRect(80, 80, width - 160, height - 160);
|
||||||
|
ctx.strokeStyle = 'rgba(255,255,255,0.5)';
|
||||||
|
ctx.lineWidth = 6;
|
||||||
|
ctx.strokeRect(80, 80, width - 160, height - 160);
|
||||||
|
ctx.fillStyle = 'rgba(15, 23, 42, 0.7)';
|
||||||
|
ctx.font = '700 64px system-ui, sans-serif';
|
||||||
|
ctx.fillText('Mock Capture', 120, height - 140);
|
||||||
|
const blob = await new Promise<Blob | null>((resolve) => canvas.toBlob(resolve, 'image/jpeg', 0.92));
|
||||||
|
if (!blob) return;
|
||||||
|
const file = new File([blob], `mock-${Date.now()}.jpg`, { type: blob.type });
|
||||||
|
const url = URL.createObjectURL(file);
|
||||||
|
setPreviewFile(file);
|
||||||
|
setPreviewUrl(url);
|
||||||
|
stopCamera();
|
||||||
|
setCameraState('preview');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const video = videoRef.current;
|
const video = videoRef.current;
|
||||||
if (!video) return;
|
if (!video) return;
|
||||||
if (cameraState !== 'ready') {
|
if (cameraState !== 'ready') {
|
||||||
@@ -353,7 +386,7 @@ export default function UploadScreen() {
|
|||||||
setPreviewUrl(url);
|
setPreviewUrl(url);
|
||||||
stopCamera();
|
stopCamera();
|
||||||
setCameraState('preview');
|
setCameraState('preview');
|
||||||
}, [cameraState, facingMode, mirror, startCamera, stopCamera, t]);
|
}, [cameraState, facingMode, mirror, mockPreviewEnabled, startCamera, stopCamera, t]);
|
||||||
|
|
||||||
React.useEffect(() => {
|
React.useEffect(() => {
|
||||||
if (!mockPreviewEnabled) return;
|
if (!mockPreviewEnabled) return;
|
||||||
|
|||||||
Reference in New Issue
Block a user