fix: Text-Auswahl in MessageText — selectable an alle nested Texts
Android-Eigenheit: bei nested Text-Komponenten muss selectable=true auch an die Kinder; der Wert auf dem Parent erbt sich nicht zuverlaessig. Plus: dataDetectorType="all" als Fallback fuer System-Linkifizierung, falls unsere Regex einen Match verpasst. suppressHighlighting=false damit Long-Press auf den Link-Texten den Selection-Mode nicht blockt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
f031fa159e
commit
9d0776c819
|
|
@ -72,13 +72,28 @@ interface Props {
|
||||||
const MessageText: React.FC<Props> = ({ text, style }) => {
|
const MessageText: React.FC<Props> = ({ text, style }) => {
|
||||||
const segments = React.useMemo(() => tokenize(text), [text]);
|
const segments = React.useMemo(() => tokenize(text), [text]);
|
||||||
return (
|
return (
|
||||||
<Text style={style} selectable>
|
<Text
|
||||||
|
style={style}
|
||||||
|
selectable
|
||||||
|
// dataDetectorType ist Android-only und macht Phone/URL/Email zusaetzlich
|
||||||
|
// ueber System-Detection klickbar — als Fallback falls unsere Regex-
|
||||||
|
// Tokens nicht passen.
|
||||||
|
dataDetectorType="all"
|
||||||
|
>
|
||||||
{segments.map((seg, i) => {
|
{segments.map((seg, i) => {
|
||||||
if (seg.kind === 'text') {
|
if (seg.kind === 'text') {
|
||||||
return <Text key={i}>{seg.text}</Text>;
|
return <Text key={i} selectable>{seg.text}</Text>;
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<Text key={i} style={LINK_STYLE} onPress={() => onPress(seg)}>
|
<Text
|
||||||
|
key={i}
|
||||||
|
selectable
|
||||||
|
style={LINK_STYLE}
|
||||||
|
onPress={() => onPress(seg)}
|
||||||
|
// Long-Press soll an den Parent durch fuer Selection
|
||||||
|
onLongPress={undefined}
|
||||||
|
suppressHighlighting={false}
|
||||||
|
>
|
||||||
{seg.text}
|
{seg.text}
|
||||||
</Text>
|
</Text>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue