decord/beta/source/modules/icymi/native/ICYMIMessageRow.tsx
2026-10-01 14:13:23 +00:00

364 lines
15 KiB
TypeScript

// Module ID: 16134
// Function ID: 16135
// Name: ICYMIMessageRow
// Dependencies: [19, 17, 2045, 2108, 2067, 4479, 5017, 1372, 16129, 1074, 21, 576, 16091, 1364, 16092, 7713, 7796, 504, 16135, 16136, 4832, 1115, 1177, 4988, 5832, 7798, 7799, 10374, 11152, 16130, 16132, 11, 5435, 9060, 16138, 2]
// Exports: default
// Module 16134 (ICYMIMessageRow)
import react_native from "react-native" /* 17 */;
import nativeDefault from "native" /* 576 */;
import PlatformUtils from "PlatformUtils" /* 1364 */;
import GuildActionCreatorsDefault from "GuildActionCreators" /* 5832 */;
import ICYMIActionCreatorsDefault from "ICYMIActionCreators" /* 7799 */;
import openChannelLongPressActionSheet from "openChannelLongPressActionSheet" /* 10374 */;
import showLongPressMessageActionSheet from "showLongPressMessageActionSheet" /* 11152 */;
import DesignConstants from "DesignConstants" /* 16129 */;
import ICYMIShared from "ICYMIShared" /* 16130 */;
import react from "react" /* 19 */;
import ChannelStore from "ChannelStore" /* 2045 */;
import GuildMemberStore from "GuildMemberStore" /* 2108 */;
import GuildStore from "GuildStore" /* 2067 */;
import RelationshipStore from "RelationshipStore" /* 4479 */;
import UserGuildSettingsStore from "UserGuildSettingsStore" /* 5017 */;
import UserStore from "UserStore" /* 1372 */;
import Constants from "Constants" /* 1074 */;
import Fragment from "Fragment" /* 21 */;
import createICYMIStyles from "createICYMIStyles" /* 16091 */;
import size from "module_2" /* 2 */;
let content_type;
let closure_12;
let closure_14;
let closure_15;
let map1;
class MessageRowContent {
constructor(message) {
let items3;
let obj10;
let obj6;
let obj8;
let str;
message = message.message;
const channel = message.channel;
let num = message.lineClamp;
if (num === undefined) {
num = 3;
}
let flag = message.nested;
if (flag === undefined) {
flag = false;
}
let flag2 = message.visible;
if (flag2 === undefined) {
flag2 = false;
}
const tmp = closure_18();
let tmp2 = message;
let tmp3 = dependencyMap;
const context = react.useContext(message(16092).ICYMIContext);
const obj = message(7713);
const result = obj.extractMediaSourcesFromMessage(message, message, channel.guild_id, message(7796).GRAVITY_VALID_EMBED_TYPES);
const items = [UserGuildSettingsStore];
const obj2 = message(504);
const stateFromStores = obj2.useStateFromStores(items, () => UserGuildSettingsStore.isChannelMuted(channel.getGuildId(), channel.id));
const items1 = [message.attachments.length, , ];
({ content: arr3[1], embeds: arr3[2] } = message);
const memo = react.useMemo(() => {
let tmp3 = !(1 !== message.embeds.length || tmp.attachments.length > 0);
const tmp2 = 1 !== message.embeds.length || tmp.attachments.length > 0;
if (tmp3) {
tmp3 = message.embeds[0].type === map1.GIFV && message.embeds[0].url === message.content;
}
return tmp3;
}, items1);
const attachments = message.attachments;
const items2 = [tmp.messagePreview, ];
let tmp10 = null;
const everyResult = attachments.every((content_type) => {
content_type = content_type.content_type;
let startsWithResult;
if (content_type != null) {
startsWithResult = content_type.startsWith("audio/");
}
return startsWithResult;
});
const tmp8 = closure_15;
if (!flag) {
tmp10 = { paddingLeft: context.margin };
const obj3 = { paddingLeft: context.margin };
}
const obj4 = { style: items2, children: items3 };
items2[1] = tmp10;
let tmp12Result = !memo;
if (tmp12Result) {
const obj5 = { message, muted: stateFromStores, lineClamp: num, messageOptions: obj6, pointerEvents: str };
obj6 = undefined;
const MessageRowPreview = tmp2(16135).MessageRowPreview;
const tmp12 = closure_14;
if (0 === result.length) {
if (message.attachments.length > 0) {
if (0 === message.embeds.length) {
obj6 = { renderAttachments: true };
}
}
}
str = "none";
if (everyResult) {
str = "auto";
}
tmp12Result = tmp12(MessageRowPreview, obj5);
}
items3 = [tmp12Result, , ];
let tmp13 = result.length > 0;
if (tmp13) {
const obj7 = { style: tmp.media, children: closure_14(channel(16136), obj8) };
obj8 = { message, visible: flag2, itemType: "message" };
tmp13 = closure_14(tmp9, obj7);
}
items3[1] = tmp13;
let tmp16 = 0 === result.length && message.embeds.length > 0;
if (tmp16) {
const obj9 = { style: tmp.media, children: closure_14(tmp2(16135).NonMediaEmbedsRowPreview, obj10) };
obj10 = { message, muted: stateFromStores, lineClamp: 3 };
tmp16 = closure_14(tmp9, obj9);
}
items3[2] = tmp16;
return tmp8(View, obj4);
}
}
function ReplyMessageContent(message) {
let channel;
let guild;
let intl;
let items2;
let items3;
let items4;
let obj11;
let obj13;
let obj15;
let obj9;
let tmp2Result;
message = message.message;
({ channel, guild } = message);
const tmp = closure_18();
const context = react.useContext(message(16092).ICYMIContext);
const items = [UserStore];
const obj2 = message(504);
const stateFromStores = obj2.useStateFromStores(items, () => UserStore.getUser(message.author.id));
const items1 = [GuildMemberStore];
const obj3 = message(504);
const stateFromStores1 = obj3.useStateFromStores(items1, () => GuildMemberStore.getMember(guild.id, message.author.id));
let colorString;
const obj = react;
if (stateFromStores1 != null) {
colorString = stateFromStores1.colorString;
}
if (colorString == null) {
colorString = closure_12;
}
const width = obj.useContext(tmp2(16092).ICYMIContext).width;
let tmp8 = null;
if (null != stateFromStores) {
const obj4 = { style: tmp.replyPreview, children: items2 };
const obj5 = { variant: "text-sm/semibold", color: "text-muted", style: { fontStyle: "italic" }, children: intl.string(message(1115).t.mPPcez) };
const Text = tmp2(4832).Text;
intl = tmp2(1115).intl;
items2 = [closure_14(Text, obj5), ];
const obj6 = { style: tmp.replyInner, children: items3 };
const obj7 = { animate: false, guildId: guild.id, user: stateFromStores, size: message(1177).AvatarSizes.SMALL };
const Avatar = tmp2(1177).Avatar;
items3 = [closure_14(Avatar, obj7), ];
const obj8 = { style: obj9, children: items4 };
obj9 = { gap: 4, width: width - context.inset - 2 * ITEM_PADDING - 2 * PX_12 - 30 - PX_8 - 2 };
const obj10 = { variant: "text-md/semibold", style: obj11, lineClamp: 1, children: tmp2Result.getName(guild.id, channel.id, stateFromStores) };
obj11 = { color: colorString };
const Text2 = tmp2(4832).Text;
tmp2Result = message(4988);
items4 = [closure_14(Text2, obj10), ];
const obj12 = { value: obj13, children: closure_14(MessageRowContent, obj15) };
obj13 = { width: width - 2 * PX_12 - 30 - PX_8 - 2, margin: null, inset: null };
({ margin: obj14.margin, inset: obj14.inset } = context);
obj15 = { message, channel, guild, nested: true };
const Provider = tmp2(16092).ICYMIContext.Provider;
items4[1] = closure_14(Provider, obj12);
items3[1] = closure_15(View, obj8);
items2[1] = closure_15(View, obj6);
tmp8 = closure_15(View, obj4);
}
return tmp8;
}
const View = react_native.View;
const ITEM_PADDING = DesignConstants.ITEM_PADDING;
({ DEFAULT_ROLE_COLOR_HEX: closure_12, MessageEmbedTypes: map1 } = Constants);
({ jsx: closure_14, jsxs: closure_15 } = Fragment);
const PX_12 = nativeDefault.space.PX_12;
const PX_8 = nativeDefault.space.PX_8;
const authStore4 = createICYMIStyles.createICYMIStyles((paddingLeft) => {
let num;
let obj6;
const obj = { pressable: { flex: 1, paddingLeft: paddingLeft.inset, gap: nativeDefault.space.PX_8 }, messagePreview: { marginTop: num, borderRadius: nativeDefault.radii.md, gap: 0 }, replyPreview: { gap: nativeDefault.space.PX_8, marginHorizontal: paddingLeft.margin, padding: PX_12, overflow: "hidden", borderWidth: 1, borderColor: nativeDefault.colors.BORDER_SUBTLE, borderRadius: nativeDefault.radii.lg, maxHeight: 132 }, replyInner: obj6, afterMessage: { paddingLeft: paddingLeft.inset, paddingBottom: paddingLeft.margin }, media: { marginRight: paddingLeft.margin }, footer: { marginTop: nativeDefault.space.PX_8, marginBottom: paddingLeft.margin, gap: nativeDefault.space.PX_8, paddingHorizontal: paddingLeft.margin, marginLeft: paddingLeft.inset } };
({ flex: 1, paddingLeft: paddingLeft.inset, gap: nativeDefault.space.PX_8 });
num = 0;
const obj3 = PlatformUtils;
if (obj3.isAndroid()) {
num = -2;
}
({ marginTop: num, borderRadius: nativeDefault.radii.md, gap: 0 });
obj6 = { flexDirection: "row", gap: PX_8, overflow: "hidden" };
({ gap: nativeDefault.space.PX_8, marginHorizontal: paddingLeft.margin, padding: PX_12, overflow: "hidden", borderWidth: 1, borderColor: nativeDefault.colors.BORDER_SUBTLE, borderRadius: nativeDefault.radii.lg, maxHeight: 132 });
({ marginTop: nativeDefault.space.PX_8, marginBottom: paddingLeft.margin, gap: nativeDefault.space.PX_8, paddingHorizontal: paddingLeft.margin, marginLeft: paddingLeft.inset });
return obj;
});
let closure_21 = react.memo((message) => {
let intl;
let items5;
let items6;
let messageContext;
let obj4;
let obj9;
let tmpResult4;
let visible;
message = message.message;
const channel = message.channel;
const guild = message.guild;
({ visible, messageContext } = message);
const tmp = message;
let obj = message(guild[17]);
const items = [UserGuildSettingsStore];
let obj2 = react;
let id1;
const stateFromStores = obj.useStateFromStores(items, () => UserGuildSettingsStore.isChannelMuted(channel.getGuildId(), channel.id));
const useEffect = react.useEffect;
if (guild != null) {
id1 = guild.id;
}
const items1 = [id1, message.author.id];
const effect = useEffect(() => {
let id;
if (guild != null) {
id = tmp.id;
}
if (null != id) {
let id1;
const requestMembersById = GuildActionCreatorsDefault.requestMembersById;
GuildActionCreatorsDefault;
if (guild != null) {
id1 = tmp.id;
}
const membersById = requestMembersById(id1, message.author.id);
}
}, items1);
let reply_message_id;
const useICYMIMessage = tmp(guild[25]).useICYMIMessage;
let id = channel.id;
tmp(guild[25]);
if (messageContext != null) {
reply_message_id = messageContext.reply_message_id;
}
const iCYMIMessage = useICYMIMessage(id, reply_message_id);
let before_message_id;
const useICYMIMessage2 = tmp(guild[25]).useICYMIMessage;
const id2 = channel.id;
tmp(guild[25]);
if (messageContext != null) {
before_message_id = messageContext.before_message_id;
}
const iCYMIMessage2 = useICYMIMessage2(id2, before_message_id);
const tmp12 = closure_18();
const items2 = [channel.id, message];
const items3 = [channel, message];
const callback = obj2.useCallback(() => {
const obj = ICYMIActionCreatorsDefault;
obj.itemInteracted(message.id, "message", "long_press_channel");
const obj2 = ICYMIActionCreatorsDefault;
const obj3 = { itemId: message.id, itemType: "message", actionParameters: { actionGestureType: "long_press", actionTargetElement: "item_header", actionIntentType: "open", actionDestinationType: null } };
obj2.feedItemActioned(obj3);
const obj4 = openChannelLongPressActionSheet;
const result = obj4.openChannelLongPressActionSheet(channel.id);
}, items2);
const items4 = [channel.id, guild.id, message.id];
const callback1 = obj2.useCallback(() => {
const obj = ICYMIActionCreatorsDefault;
obj.itemInteracted(message.id, "message", "long_press_message");
const obj2 = ICYMIActionCreatorsDefault;
const obj3 = { itemId: message.id, itemType: "message", actionParameters: { actionGestureType: "long_press", actionTargetElement: "item_body", actionIntentType: "open", actionDestinationType: null } };
obj2.feedItemActioned(obj3);
const obj4 = showLongPressMessageActionSheet;
const obj5 = { channel, message, user: UserStore.getUser(message.author.id) };
const result = obj4.showLongPressMessageActionSheet(obj5);
}, items3);
const callback2 = obj2.useCallback(() => {
const obj = ICYMIActionCreatorsDefault;
obj.itemInteracted(message.id, "message", "press_message");
const obj2 = ICYMIActionCreatorsDefault;
const obj3 = { itemId: message.id, itemType: "message", actionParameters: { actionGestureType: "press", actionTargetElement: "item_container", actionIntentType: "navigate", actionDestinationType: "channel" } };
obj2.feedItemActioned(obj3);
const obj4 = ICYMIShared;
obj4.navigateToPost(channel.id, guild.id, message.id);
}, items4);
let obj3 = { actionLabel: intl.string(tmp(guild[21]).t.hMFMY9), id: message.id, interactionType: "message", channelId: channel.id, timestamp: obj4.extractTimestamp(message.id), onHeaderPress: callback2, onHeaderLongPress: callback, message, shouldFeatureUser: true, children: items6 };
const tmp18 = channel(guild[30]);
intl = tmp(tmp2[21]).intl;
obj4 = channel(tmp2[31]);
let obj5 = { onPress: callback2, onLongPress: callback1, unstable_pressDelay: 130, accessibilityRole: "button", accessibilityLabel: channel(guild[33])({ channel }), accessibilityHint: tmpResult4.getChannelA11yHint({ channel, muted: stateFromStores }), style: tmp12.pressable, children: items5 };
const PressableHighlight = tmp(tmp2[32]).PressableHighlight;
let tmp19 = null;
const tmp17 = channel;
tmpResult4 = tmp(guild[33]);
if (null != iCYMIMessage2) {
const obj6 = { message: iCYMIMessage2, channel, guild, visible };
tmp19 = closure_14(MessageRowContent, obj6);
}
items5 = [tmp19, closure_14(MessageRowContent, { message, channel, guild, visible }), ];
let tmp22Result = null;
if (null != iCYMIMessage) {
const obj7 = { message: iCYMIMessage, channel, guild };
tmp22Result = tmp22(ReplyMessageContent, obj7);
}
items5[2] = tmp22Result;
items6 = [closure_15(PressableHighlight, obj5), ];
const obj8 = { style: tmp12.footer, children: closure_14(tmp17(guild[34]), obj9) };
obj9 = { message, channel, guild, backgroundVariant: "base", id: message.id, itemType: "message" };
items6[1] = closure_14(View, obj8);
return closure_15(tmp18, obj3);
});
let result = size.fileFinishedImporting("modules/icymi/native/ICYMIMessageRow.tsx");
export default function MessageRowWrapper(arg0) {
let message;
let messageContext;
let visible;
let gravityMessage;
({ message, messageContext, visible } = arg0);
const obj = gravityMessage(7798);
gravityMessage = obj.useGravityMessage(message);
const items = [ChannelStore];
const obj2 = gravityMessage(504);
const stateFromStores = obj2.useStateFromStores(items, () => ChannelStore.getChannel(gravityMessage.getChannelId()));
const items1 = [GuildStore];
const obj3 = gravityMessage(504);
const stateFromStores1 = obj3.useStateFromStores(items1, () => {
let guild_id;
const getGuild = GuildStore.getGuild;
if (stateFromStores != null) {
guild_id = stateFromStores.guild_id;
}
return getGuild(guild_id);
});
gravityMessage(504);
[][0] = RelationshipStore;
let tmp6 = null;
if (null != stateFromStores) {
tmp6 = null;
if (null != stateFromStores1) {
tmp6 = null;
if (!tmp5) {
const obj4 = { message: gravityMessage, channel: stateFromStores, guild: stateFromStores1, messageContext, visible };
tmp6 = closure_14(closure_21, obj4);
}
}
}
return tmp6;
};
export { MessageRowContent };