// Metro module 15363 (f15364). import { useMemo, useCallback } from "react"; import { View } from "react-native"; import ChannelStore from "../../../stores/ChannelStore"; import GuildMemberStore from "../../../stores/GuildMemberStore"; import GuildStore from "../../../stores/GuildStore"; import { DEFAULT_ROLE_COLOR_HEX } from "../../../Constants"; import { createICYMIStyles } from "./createICYMIStyles"; import Module712 from "../../../_bundle/Module712"; import ClipView, { CutoutShape } from "../../../design/components/Icon/native/ClipView"; import GuildIcon, { GuildIconSizes } from "../../guild/native/GuildIcon"; import { Avatar, AvatarSizes } from "../../../design/void/native"; import { useFontScale } from "../../screen/native/useFontScale"; import { useStateFromStores } from "../../../_bundle/Module589"; import useDisplayNameStyles from "../../display_name_styles/hooks/useDisplayNameStyles"; import { useDisplayNameStylesFont } from "../../display_name_styles/native/useDisplayNameStylesFont"; import { useName } from "../../../utils/NicknameUtils"; import { Text } from "../../../design/components/Text/native/Text"; import useChannelName from "../../channel/useChannelName"; import { getIconForChannel } from "./util/getIconForChannel"; import { intl, t } from "../../../intl/index.native"; import { TextIcon } from "../../../design/components/Icon/native/redesign/generated/TextIcon"; import { openDetailsActionSheet } from "./util/openDetailsActionSheet"; import { PressableHighlight, PressableOpacity } from "../../../design/void/Pressables/native/Pressables"; import { getRelativeTimestamp } from "../../notification_center/NotificationCenterUtils"; import { MoreHorizontalIcon } from "../../../design/components/Icon/native/redesign/generated/MoreHorizontalIcon"; let styles; const CutoutGuildIconWithUserCustom = function CutoutGuildIconWithUserCustom(props) { const { guild, author } = props; return ; }; styles = createICYMIStyles((a0) => ({ container: { marginTop: a0.margin }, content: { flex: 1, overflow: "hidden" }, channelNameAndAccessory: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", paddingBottom: Module712.space.PX_4, marginHorizontal: a0.margin }, channelNameAndAccessoryLarge: { flexDirection: "column", paddingBottom: Module712.space.PX_4, marginHorizontal: a0.margin }, header: { flexDirection: "row", flexGrow: 1 }, headerInfo: { flexGrow: 1, flexShrink: 1, marginLeft: Module712.space.PX_12 }, title: { flexDirection: "row", alignItems: "center", justifyContent: "space-between", marginBottom: 2 }, titleLeft: { flexShrink: 1, flexGrow: 0, flexDirection: "row", alignItems: "center", gap: 6 }, subTitleContainer: { flexDirection: "row", justifyContent: "space-between", borderRadius: Module712.radii.sm }, subtitle: { flexShrink: 1, flexGrow: 0, width: "100%" }, genContentSubtitle: { flexDirection: "row", alignItems: "center", gap: 2 }, genContentSubtitleChannel: { flexDirection: "row", alignItems: "center", gap: 2, flex: 1 }, subtitleTrailing: { paddingVertical: 1 }, separator: { height: 1, width: "100%", backgroundColor: Module712.colors.BORDER_SUBTLE }, normalContent: { borderBottomWidth: 1, borderBottomColor: Module712.colors.BORDER_STRONG, flexShrink: 0 }, authorAvatar: { position: "absolute", right: 0, bottom: 0 } })); export default function ICYMICardInCard(props) { let guildId, stateFromStores2, stateFromStores3, displayNameStylesFont, name, children; const { children: children2, message, actionLabel, timestamp, id, interactionType, onHeaderPress, onHeaderLongPress, channelId, guildId: guildId2, hideTimestamp = false, shouldFeatureUser = false } = props; let c21906_6 = shouldFeatureUser; guildId = void 0; stateFromStores2 = void 0; stateFromStores3 = void 0; displayNameStylesFont = void 0; name = void 0; children = void 0; const r10 = styles(); let c21906_7 = r10; const fontScale = useFontScale(); const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId), [channelId]); let r30 = stateFromStores?.guild_id; if (r30 == null) { r30 = guildId2; } guildId = r30; stateFromStores2 = useStateFromStores([GuildStore], () => guildId != null ? GuildStore.getGuild(guildId) : null, [guildId]); stateFromStores3 = useStateFromStores([GuildMemberStore], () => c21906_6 ? guildId != null ? (message == null ? void 0 : message.author.id) != null ? GuildMemberStore.getMember(guildId, message.author.id) : null : null : null, [shouldFeatureUser, guildId, message]); displayNameStylesFont = useDisplayNameStylesFont({ displayNameStyles: useDisplayNameStyles({ userId: message == null ? void 0 : message.author?.id }) }); const name2 = useName(guildId, stateFromStores?.id, message?.author); name = shouldFeatureUser ? message?.author != null ? guildId != null ? stateFromStores != null ? name2 : null : null : null : null; const memo = useMemo(() => stateFromStores2 == null ? null : c21906_6 ? message?.author != null ? : : , [stateFromStores2, shouldFeatureUser, message?.author]); const memo2 = useMemo(() => stateFromStores2 != null ? {stateFromStores2.name} : null, [stateFromStores2]); children = useChannelName(stateFromStores); const memo3 = useMemo(() => { if (c21906_6 && message?.author != null && guildId != null && stateFromStores != null && name != null) { let color = stateFromStores3?.colorString; if (color == null) { color = DEFAULT_ROLE_COLOR_HEX; } const IconForChannel = getIconForChannel(stateFromStores); return {name.length > 20 ? `${name.slice(0, 17)}...` : name} {intl.string(t.CHUAYk)} {children} ; } const Component = stateFromStores != null ? getIconForChannel(stateFromStores) : TextIcon; return {actionLabel} {stateFromStores != null ? <> {intl.string(t.CHUAYk)} {children} : null} ; }, [shouldFeatureUser, message?.author, guildId, stateFromStores, children, name, stateFromStores3, displayNameStylesFont, r10.genContentSubtitle, r10.genContentSubtitleChannel, onHeaderPress, actionLabel]); const callback = useCallback(() => { if (stateFromStores2 != null && stateFromStores != null) { openDetailsActionSheet({ guildId: stateFromStores2.id, channelId: stateFromStores.id, id, type: interactionType }); } }, [stateFromStores2, stateFromStores, id, interactionType]); return fontScale > 1.8 ? c21906_7.channelNameAndAccessoryLarge : c21906_7.channelNameAndAccessory, [fontScale, r10.channelNameAndAccessoryLarge, r10.channelNameAndAccessory])}> {memo} {memo2} {hideTimestamp ? !hideTimestamp : {getRelativeTimestamp(timestamp)} } {memo3} {children2} ; };