From 13e4c734d6ac7d8726bf73492c852a50a670bce7 Mon Sep 17 00:00:00 2001 From: orfelorfel23 Date: Mon, 1 Jun 2026 11:14:33 +0200 Subject: [PATCH] Fix AbsoluteFill blocking touch events and fix ViewShot drawable bug by resolving require() assets to explicit file URI --- src/components/FrameOverlay.tsx | 22 +++++++++++++++++----- src/screens/PreviewScreen.tsx | 2 +- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/components/FrameOverlay.tsx b/src/components/FrameOverlay.tsx index 605a5bf9..d24c781b 100644 --- a/src/components/FrameOverlay.tsx +++ b/src/components/FrameOverlay.tsx @@ -1,8 +1,10 @@ import React from 'react'; import { StyleSheet, ImageBackground, View } from 'react-native'; +import { Asset } from 'expo-asset'; +import { useState, useEffect } from 'react'; interface FrameOverlayProps { - frameAsset: number | any; // require() asset + frameAsset: any; // require() asset isCapturing?: boolean; } @@ -12,14 +14,24 @@ interface FrameOverlayProps { * Positioned absolutely to cover the entire photo canvas. */ export default function FrameOverlay({ frameAsset, isCapturing = false }: FrameOverlayProps) { - if (!frameAsset) return null; + const [localUri, setLocalUri] = useState(null); + + useEffect(() => { + if (frameAsset) { + Asset.fromModule(frameAsset).downloadAsync().then(asset => { + setLocalUri(asset.localUri || asset.uri); + }); + } + }, [frameAsset]); + + if (!localUri) return null; return ( - ); diff --git a/src/screens/PreviewScreen.tsx b/src/screens/PreviewScreen.tsx index 83d15c72..b6b4fc66 100644 --- a/src/screens/PreviewScreen.tsx +++ b/src/screens/PreviewScreen.tsx @@ -462,7 +462,7 @@ export default function PreviewScreen({ style={styles.viewShotContainer} collapsable={false} > - + {renderCollageView()} {/* Frame Overlay */}