74 lines
3.6 KiB
TypeScript
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>;
|
|
};
|