Files
discord-decomp/modules/conversations/components/native/ConversationPreviewMessage.tsx
T
2026-11-01 12:12:55 +02:00

74 lines
3.6 KiB
TypeScript

// Metro module 9289 (f9290).
import { useMemo } from "react";
import { View } from "react-native";
import AccessibilityStore from "../../../a11y/AccessibilityStore";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import RowGenerator from "../../../messages/native/renderer/RowGenerator";
import { MessageContextType } from "../../../messages/native/renderer/RowGeneratorTypes";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useName } from "../../../../utils/NicknameUtils";
import { useProcessColorStringsArray, useIsRoleStyleAndRoleColorsEligibleForERC } from "../../../premium/enhanced_role_colors/native/EnhancedRoleColorUtils";
import { TimestampHourCycle } from "../../../user_settings/UserSettings";
import { calendarFormat } from "../../../../utils/DateUtils";
import { Avatar, AvatarSizes, RoleDot } from "../../../../design/void/native";
import { Text } from "../../../../design/components/Text/native/Text";
import ChatItem from "../../../../components_native/chat/ChatItem";
let rowGenerator, useStyles;
const modifyRow = function modifyRow(a0) {
a0.contextType = MessageContextType.SEARCH;
a0.renderContentOnly = true;
};
rowGenerator = new RowGenerator();
rowGenerator.setOptions({
renderReplies: false,
renderReactions: false
});
useStyles = createStyles({
container: {
gap: Module712.space.PX_4
},
header: {
flexDirection: "row",
alignItems: "center",
gap: Module712.space.PX_8
},
authorRow: {
flexDirection: "row",
alignItems: "center",
gap: Module712.space.PX_4
},
headerTimestamp: {
flex: 1
}
});
export default function ConversationPreviewMessage(props) {
let setting;
const { message, guildId, channelId } = props;
setting = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.roleStyle);
const stateFromStores2 = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getMember(guildId, message.author.id), [guildId, message.author.id]);
const name = useName(guildId, channelId, message.author);
const style = stateFromStores === "username" ? stateFromStores2?.colorString != null ? {
color: stateFromStores2.colorString
} : {} : {};
const processColorStringsArray = useProcessColorStringsArray(stateFromStores2?.colorStrings);
const isRoleStyleAndRoleColorsEligibleForERC = useIsRoleStyleAndRoleColorsEligibleForERC(guildId, message.author.id, stateFromStores, processColorStringsArray);
setting = TimestampHourCycle.useSetting();
return <View style={styles.container}>
<View style={styles.header}>
<Avatar user={message.author} guildId={guildId} size={AvatarSizes.XXSMALL} />
<View style={styles.authorRow}>
{stateFromStores === "dot" && stateFromStores2?.colorString != null && <RoleDot size="small" color={stateFromStores2.colorString} colors={stateFromStores2.colorStrings} />}
<Text variant="text-md/medium" lineClamp={1} style={style} gradientColors={isRoleStyleAndRoleColorsEligibleForERC ? processColorStringsArray : void 0}>{name}</Text>
</View>
<Text variant="text-xs/normal" color="text-muted" lineClamp={1} style={styles.headerTimestamp}>
{useMemo(() => calendarFormat(message.timestamp, true, setting), [message.timestamp, setting])}
</Text>
</View>
<ChatItem pointerEvents="none" horizontalOffset={0} modifyRow={modifyRow} message={message} rowGenerator={rowGenerator} />
</View>;
};