mirror of
https://github.com/bulwarkmail/native.git
synced 2026-11-04 16:06:41 +00:00
fix: show unified inbox rows with the list's text size, density and preview settings
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
|||||||
View, Text, StyleSheet, FlatList, ActivityIndicator, Pressable, TextInput, Alert, AppState,
|
View, Text, StyleSheet, FlatList, ActivityIndicator, Pressable, TextInput, Alert, AppState,
|
||||||
} from 'react-native';
|
} from 'react-native';
|
||||||
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';
|
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context';
|
||||||
|
import { useDensity, useTypography } from '../theme/dynamic';
|
||||||
import { useFocusEffect } from '@react-navigation/native';
|
import { useFocusEffect } from '@react-navigation/native';
|
||||||
import {
|
import {
|
||||||
ArrowLeft, Star, Paperclip, AlertTriangle, Search, X, Square, SquareCheck,
|
ArrowLeft, Star, Paperclip, AlertTriangle, Search, X, Square, SquareCheck,
|
||||||
@@ -50,6 +51,9 @@ export default function UnifiedInboxScreen({ navigation, route }: Props) {
|
|||||||
const styles = React.useMemo(() => makeStyles(c), [c]);
|
const styles = React.useMemo(() => makeStyles(c), [c]);
|
||||||
const t = useLocaleStore((s) => s.t);
|
const t = useLocaleStore((s) => s.t);
|
||||||
const insets = useSafeAreaInsets();
|
const insets = useSafeAreaInsets();
|
||||||
|
const dyn = useTypography();
|
||||||
|
const density = useDensity();
|
||||||
|
const showPreview = useSettingsStore((s) => s.showPreview);
|
||||||
const role: UnifiedRole = route.params?.role ?? 'inbox';
|
const role: UnifiedRole = route.params?.role ?? 'inbox';
|
||||||
const view: CrossView | undefined = route.params?.view;
|
const view: CrossView | undefined = route.params?.view;
|
||||||
const accounts = useAccountStore((s) => s.accounts);
|
const accounts = useAccountStore((s) => s.accounts);
|
||||||
@@ -321,7 +325,12 @@ export default function UnifiedInboxScreen({ navigation, route }: Props) {
|
|||||||
onPress={() => (selectionMode ? toggleSelect(item) : onOpen(item))}
|
onPress={() => (selectionMode ? toggleSelect(item) : onOpen(item))}
|
||||||
onLongPress={() => toggleSelect(item)}
|
onLongPress={() => toggleSelect(item)}
|
||||||
delayLongPress={300}
|
delayLongPress={300}
|
||||||
style={({ pressed }) => [styles.row, pressed && styles.rowPressed, isSelected && styles.rowSelected]}
|
style={({ pressed }) => [
|
||||||
|
styles.row,
|
||||||
|
{ paddingVertical: density.rowPaddingVertical },
|
||||||
|
pressed && styles.rowPressed,
|
||||||
|
isSelected && styles.rowSelected,
|
||||||
|
]}
|
||||||
>
|
>
|
||||||
{unread && <View style={styles.unreadDot} />}
|
{unread && <View style={styles.unreadDot} />}
|
||||||
{selectionMode && (
|
{selectionMode && (
|
||||||
@@ -329,7 +338,7 @@ export default function UnifiedInboxScreen({ navigation, route }: Props) {
|
|||||||
{isSelected ? <SquareCheck size={16} color={c.primary} /> : <Square size={16} color={c.textMuted} />}
|
{isSelected ? <SquareCheck size={16} color={c.primary} /> : <Square size={16} color={c.textMuted} />}
|
||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
<View style={styles.avatarWrap}>
|
{density.showAvatar && <View style={styles.avatarWrap}>
|
||||||
<SenderAvatar
|
<SenderAvatar
|
||||||
name={senderName(item, showRecipient, t('email_viewer.unknown_sender', 'Unknown'))}
|
name={senderName(item, showRecipient, t('email_viewer.unknown_sender', 'Unknown'))}
|
||||||
email={showRecipient ? item.to?.[0]?.email : item.from?.[0]?.email}
|
email={showRecipient ? item.to?.[0]?.email : item.from?.[0]?.email}
|
||||||
@@ -339,17 +348,17 @@ export default function UnifiedInboxScreen({ navigation, route }: Props) {
|
|||||||
{acc && accountIds.length > 1 && (
|
{acc && accountIds.length > 1 && (
|
||||||
<View style={[styles.accountDot, { backgroundColor: acc.avatarColor }]} />
|
<View style={[styles.accountDot, { backgroundColor: acc.avatarColor }]} />
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>}
|
||||||
<View style={styles.content}>
|
<View style={styles.content}>
|
||||||
<View style={styles.line}>
|
<View style={styles.line}>
|
||||||
<Text style={[styles.sender, unread && styles.bold]} numberOfLines={1}>
|
<Text style={[styles.sender, dyn.bodyMedium, unread && styles.bold]} numberOfLines={1}>
|
||||||
{senderName(item, showRecipient, t('email_viewer.unknown_sender', 'Unknown'))}
|
{senderName(item, showRecipient, t('email_viewer.unknown_sender', 'Unknown'))}
|
||||||
</Text>
|
</Text>
|
||||||
{starred && <Star size={12} color={c.starred} fill={c.starred} />}
|
{starred && <Star size={12} color={c.starred} fill={c.starred} />}
|
||||||
{item.hasAttachment && <Paperclip size={12} color={c.textMuted} />}
|
{item.hasAttachment && <Paperclip size={12} color={c.textMuted} />}
|
||||||
<Text style={styles.time}>{formatListDate(item.receivedAt, { dateFormat, timeFormat, locale, t })}</Text>
|
<Text style={[styles.time, dyn.caption]}>{formatListDate(item.receivedAt, { dateFormat, timeFormat, locale, t })}</Text>
|
||||||
</View>
|
</View>
|
||||||
<Text style={[styles.subject, unread && styles.bold]} numberOfLines={1}>
|
<Text style={[styles.subject, dyn.body, unread && styles.bold]} numberOfLines={1}>
|
||||||
{singleLine(item.subject) || t('email_viewer.no_subject', '(No Subject)')}
|
{singleLine(item.subject) || t('email_viewer.no_subject', '(No Subject)')}
|
||||||
</Text>
|
</Text>
|
||||||
<View style={styles.line}>
|
<View style={styles.line}>
|
||||||
@@ -372,8 +381,9 @@ export default function UnifiedInboxScreen({ navigation, route }: Props) {
|
|||||||
</View>
|
</View>
|
||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
{item.preview ? (
|
{/* Same settings as the folder list: preview on/off, density, text size. */}
|
||||||
<Text style={styles.preview} numberOfLines={1}>{singleLine(item.preview)}</Text>
|
{item.preview && showPreview && density.showPreview ? (
|
||||||
|
<Text style={[styles.preview, dyn.body]} numberOfLines={2}>{singleLine(item.preview)}</Text>
|
||||||
) : null}
|
) : null}
|
||||||
</View>
|
</View>
|
||||||
</Pressable>
|
</Pressable>
|
||||||
|
|||||||
Reference in New Issue
Block a user