fix(app): SVG-Anhaenge mit SvgUri rendern statt Image

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-10 18:42:53 +02:00
parent 03fc465057
commit 2de4cbc00f
+13 -1
View File
@@ -24,6 +24,7 @@ import {
} from 'react-native'; } from 'react-native';
import AsyncStorage from '@react-native-async-storage/async-storage'; import AsyncStorage from '@react-native-async-storage/async-storage';
import RNFS from 'react-native-fs'; import RNFS from 'react-native-fs';
import { SvgUri } from 'react-native-svg';
import rvs, { RVSMessage, ConnectionState } from '../services/rvs'; import rvs, { RVSMessage, ConnectionState } from '../services/rvs';
import audioService from '../services/audio'; import audioService from '../services/audio';
import wakeWordService from '../services/wakeword'; import wakeWordService from '../services/wakeword';
@@ -113,7 +114,9 @@ const ChatImage: React.FC<{
onError: () => void; onError: () => void;
}> = ({ uri, onPress, onError }) => { }> = ({ uri, onPress, onError }) => {
const [aspectRatio, setAspectRatio] = useState<number>(4 / 3); const [aspectRatio, setAspectRatio] = useState<number>(4 / 3);
const isSvg = /\.svg(?:\?|$)/i.test(uri);
useEffect(() => { useEffect(() => {
if (isSvg) return; // SvgUri hat kein getSize
let cancelled = false; let cancelled = false;
Image.getSize(uri, (w, h) => { Image.getSize(uri, (w, h) => {
if (!cancelled && w > 0 && h > 0) { if (!cancelled && w > 0 && h > 0) {
@@ -124,7 +127,16 @@ const ChatImage: React.FC<{
} }
}, () => {}); }, () => {});
return () => { cancelled = true; }; return () => { cancelled = true; };
}, [uri]); }, [uri, isSvg]);
if (isSvg) {
return (
<TouchableOpacity onPress={onPress} activeOpacity={0.8}>
<View style={[CHAT_IMAGE_STYLE, { height: 260, alignItems: 'center', justifyContent: 'center' }]}>
<SvgUri uri={uri} width="100%" height="100%" onError={onError} />
</View>
</TouchableOpacity>
);
}
return ( return (
<TouchableOpacity onPress={onPress} activeOpacity={0.8}> <TouchableOpacity onPress={onPress} activeOpacity={0.8}>
<Image <Image