Files
discord-decomp/sources/modules/icymi/native/ICYMIMessageRow.tsx
T
2026-07-27 16:20:00 +03:00

303 lines
19 KiB
TypeScript

/* Metro module 14858; source: modules/icymi/native/ICYMIMessageRow.tsx; dependencies: [31, 27, 1379, 1945, 1867, 3793, 4864, 1878, 14853, 661, 33, 697, 14815, 477, 14816, 9546, 7230, 566, 14859, 14860, 4573, 1244, 1305, 4617, 6593, 9579, 9580, 12129, 11401, 14854, 14856, 21, 5278, 9122, 14862, 2] */
function _fun112296(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#112296, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:6, offset: 0x023c4268, size: 455 bytes, params: 8, frame: 20
const env0_0 = require;
const closure = MessageRowContent;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const value = importAll(31) /* metro dependency 31 */;
const env0_4 = (require(27) /* metro dependency 27 */).View;
const channelStore = importDefault(1379) /* metro dependency 1379: ChannelStore */;
const guildMemberStore = importDefault(1945) /* metro dependency 1945: GuildMemberStore */;
const guildStore = importDefault(1867) /* metro dependency 1867: GuildStore */;
const relationshipStore = importDefault(3793) /* metro dependency 3793: RelationshipStore */;
const userGuildSettingsStore = importDefault(4864) /* metro dependency 4864: UserGuildSettingsStore */;
const userStore = importDefault(1878) /* metro dependency 1878: UserStore */;
const env0_11 = (require(14853) /* metro dependency 14853: DesignConstants */).ITEM_PADDING;
const constantsModule = require(661) /* metro dependency 661: Constants */;
const env0_12 = constantsModule.DEFAULT_ROLE_COLOR_HEX;
const env0_13 = constantsModule.MessageEmbedTypes;
const value3 = require(33) /* metro dependency 33 */;
const env0_14 = value3.jsx;
const env0_15 = value3.jsxs;
const env0_16 = (importDefault(697) /* metro dependency 697: native */).space.PX_12;
const env0_17 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
const env0_18 = (require(14815) /* metro dependency 14815: createICYMIStyles */).createICYMIStyles(_fun112304);
const env0_19 = value.memo(_fun112305);
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/icymi/native/ICYMIMessageRow.tsx');
exports.default = MessageRowWrapper;
exports.MessageRowContent = closure;
}
function MessageRowContent({message, channel, lineClamp, nested, visible}) { // fn#112297, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:997, offset: 0x023c442f, size: 728 bytes, params: 2, frame: 31
var r11;
var r6;
var MessageRowPreview;
var object;
lineClamp = lineClamp === undefined ? 3 : lineClamp;
nested = !(nested === undefined) && nested;
visible = !(visible === undefined) && visible;
const value6 = env0_18();
const binding = env0_3;
const useContext = binding.useContext;
const ICYMIContext = (require(14816) /* metro dependency 14816: ICYMIContext */).ICYMIContext;
const value7 = Reflect.apply(useContext, binding, [ICYMIContext]);
const mediaSourceUtilModule = require(9546) /* metro dependency 9546: MediaSourceUtil */;
const extractMediaSourcesFromMessage = mediaSourceUtilModule.extractMediaSourcesFromMessage;
const guild_id = channel.guild_id;
const GRAVITY_VALID_EMBED_TYPES = (require(7230) /* metro dependency 7230: ICYMITypes */).GRAVITY_VALID_EMBED_TYPES;
const value8 = Reflect.apply(extractMediaSourcesFromMessage, mediaSourceUtilModule, [message, message, guild_id,
GRAVITY_VALID_EMBED_TYPES]);
const value9 = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserGuildSettingsStore],
_fun112298);
const value10 = env0_3.useMemo(_fun112299, [message.attachments.length, message.content, message.embeds]);
const value11 = message.attachments.every(function({content_type}) {
return content_type?.startsWith('audio/');
});
const items3 = [value6.messagePreview];
items3[1] = nested ? null : {paddingLeft: value7.margin};
if (value10) {
r6 = !value10;
} else {
MessageRowPreview = (require(14859) /* metro dependency 14859: ICYMIMessageRowPreview */).MessageRowPreview;
object = {message: message, muted: value9, lineClamp: lineClamp};
r11 = value8.length !== 0 ? undefined : message.attachments.length > 0 ? message.embeds.length !== 0 ? undefined : {renderAttachments: true} : undefined;
object.messageOptions = r11;
r11 = value11 ? 'auto' : 'none';
object.pointerEvents = r11;
r6 = <MessageRowPreview {...object} />;
}
const items2 = [r6];
items2[1] = value8.length > 0 && <View style={value6.media}>{((Component) => <Component message={message} visible={visible} itemType="message" />)(importDefault(14860) /* metro dependency 14860: ICYMIMediaMosaic */)}</View>;
items2[2] = value8.length === 0 && message.embeds.length > 0 && <View style={value6.media}>{((NonMediaEmbedsRowPreview) => <NonMediaEmbedsRowPreview message={message} muted={value9} lineClamp={3} />)((require(14859) /* metro dependency 14859: ICYMIMessageRowPreview */).NonMediaEmbedsRowPreview)}</View>;
return (
<View style={items3}>
{items2}
</View>
);
}
function ReplyMessageContent({message, channel, guild}) { // fn#112301, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:2076, offset: 0x023c47da, size: 847 bytes, params: 2, frame: 42
var r0;
const Text = (require(4573) /* metro dependency 4573: Text */).Text;
var intl;
var items4;
var Avatar;
var id;
var items2;
var object;
var inset;
var moduleValue3;
var getName;
var items3;
var Provider;
const value3 = env0_18();
let binding = env0_3;
let useContext = binding.useContext;
const ICYMIContext = (require(14816) /* metro dependency 14816: ICYMIContext */).ICYMIContext;
const value4 = Reflect.apply(useContext, binding, [ICYMIContext]);
const user = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserStore], function() {
return UserStore.getUser(message.author.id);
});
const r28 = (require(566) /* metro dependency 566: flux */).useStateFromStores([GuildMemberStore], function() {
return GuildMemberStore.getMember(guild.id, message.author.id);
})?.colorString ?? DEFAULT_ROLE_COLOR_HEX;
binding = env0_3;
useContext = binding.useContext;
const width = Reflect.apply(useContext, binding, [ICYMIContext]).width;
if (user == null) {
r0 = null;
} else {
var viewBindingProps = {style: value3.replyPreview};
intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
items4 = [<Text variant="text-sm/semibold" color="text-muted" style={{fontStyle: 'italic'}}>{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.mPPcez)}</Text>];
var viewBinding2Props = {style: value3.replyInner};
Avatar = (require(1305) /* metro dependency 1305: native */).Avatar;
id = guild.id;
items2 = [<Avatar animate={false} guildId={id} user={user} size={(require(1305) /* metro dependency 1305: native */).AvatarSizes.SMALL} />];
object = {};
inset = value4.inset;
object.style = {gap: 4, width: width - inset - 2 * ITEM_PADDING - 2 * PX_12 - 30 - PX_8 - 2};
var textProps2 = {'variant': 'text-md/semibold', 'style': null, 'lineClamp': 1, style: {color: r28}};
moduleValue3 = require(4617) /* metro dependency 4617: NicknameUtils */;
getName = moduleValue3.getName;
id = guild.id;
items3 = [<Text {...textProps2}>{Reflect.apply(getName, moduleValue3, [id, channel.id, user])}</Text>];
Provider = (require(14816) /* metro dependency 14816: ICYMIContext */).ICYMIContext.Provider;
inset = value4.inset;
items3[1] = <Provider value={{width: width - 2 * PX_12 - 30 - PX_8 - 2, margin: value4.margin,
inset: inset}}><MessageRowContent message={message} channel={channel} guild={guild} nested /></Provider>;
items2[1] = <View {...object}>{items3}</View>;
items4[1] = <View {...viewBinding2Props}>{items2}</View>;
r0 = <View {...viewBindingProps}>{items4}</View>;
}
return r0;
}
function _fun112304(a0) { // fn#112304, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:366, offset: 0x023c4b7f, size: 439 bytes, params: 2, frame: 19
const object5 = {};
const object6 = {flex: 1};
object6.paddingLeft = a0.inset;
const PX_82 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object6.gap = PX_82;
object5.pressable = object6;
const object7 = {};
const isAndroid2 = (require(477) /* metro dependency 477: PlatformUtils */).isAndroid();
const value2 = 0;
object7.marginTop = isAndroid2 ? -2 : value2;
object7.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.md;
object7.gap = value2;
object5.messagePreview = object7;
const object9 = {};
const PX_83 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object9.gap = PX_83;
object9.marginHorizontal = a0.margin;
object9.padding = PX_12;
object9.overflow = 'hidden';
object9.borderWidth = 1;
const BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE;
object9.borderColor = BORDER_SUBTLE;
object9.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.lg;
object9.maxHeight = 132;
object5.replyPreview = object9;
object5.replyInner = {'flexDirection': 'row', 'gap': null, 'overflow': 'hidden', gap: PX_8};
object5.afterMessage = {paddingLeft: a0.inset, paddingBottom: a0.margin};
object5.media = {marginRight: a0.margin};
const object10 = {};
const PX_84 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object10.marginTop = PX_84;
object10.marginBottom = a0.margin;
const PX_85 = (importDefault(697) /* metro dependency 697: native */).space.PX_8;
object10.gap = PX_85;
object10.paddingHorizontal = a0.margin;
object10.marginLeft = a0.inset;
object5.footer = object10;
return object5;
}
function _fun112305({message, channel, guild, visible, messageContext}) { // fn#112305, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:3084, offset: 0x023c4d36, size: 941 bytes, params: 2, frame: 33
var object2;
const value3 = (require(566) /* metro dependency 566: flux */).useStateFromStores([UserGuildSettingsStore],
_fun112306);
env0_3.useEffect(_fun112307, [guild?.id, message.author.id]);
const value5 = (require(9579) /* metro dependency 9579: ICYMIUtils */).useICYMIMessage(channel.id,
messageContext?.reply_message_id);
const value6 = (require(9579) /* metro dependency 9579: ICYMIUtils */).useICYMIMessage(channel.id,
messageContext?.before_message_id);
const value7 = env0_18();
const value8 = env0_3.useCallback(_fun112308, [channel.id, message]);
const value9 = env0_3.useCallback(_fun112309, [channel, message]);
const value10 = env0_3.useCallback(_fun112310, [channel.id, guild.id, message.id]);
const ICYMICardInCard = importDefault(14856) /* metro dependency 14856: ICYMICardInCard */;
object2 = {};
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
object2.actionLabel = intl.string((require(1244) /* metro dependency 1244: indexNative */).t.hMFMY9);
object2.id = message.id;
object2.interactionType = 'message';
object2.channelId = channel.id;
const defaultImport2 = importDefault(21) /* metro dependency 21: SnowflakeUtils */;
object2.timestamp = defaultImport2.extractTimestamp(message.id);
object2.onHeaderPress = value10;
object2.onHeaderLongPress = value8;
object2.message = message;
object2.shouldFeatureUser = true;
const PressableHighlight = (require(5278) /* metro dependency 5278: Pressables */).PressableHighlight;
const pressableHighlightProps = {onPress: value10, onLongPress: value9, unstable_pressDelay: 130,
accessibilityRole: 'button',
accessibilityLabel: (importDefault(9122) /* metro dependency 9122: getChannelA11yLabel */)({channel: channel}),
accessibilityHint: (require(9122) /* metro dependency 9122: getChannelA11yLabel */).getChannelA11yHint({channel: channel,
muted: value3}), style: value7.pressable};
const items2 = [value6 != null ? <MessageRowContent message={value6} channel={channel} guild={guild} visible={visible} /> : null];
items2[1] = <MessageRowContent message={message} channel={channel} guild={guild} visible={visible} />;
items2[2] = value5 != null ? <ReplyMessageContent message={value5} channel={channel} guild={guild} /> : null;
return (
<ICYMICardInCard {...object2}>
<PressableHighlight {...pressableHighlightProps}>
{items2}
</PressableHighlight>
<View style={value7.footer}>
{((Component) => <Component message={message} channel={channel} guild={guild} backgroundVariant="base" id={message.id} itemType="message" />)(importDefault(14862) /* metro dependency 14862: ICYMICardInteractionRow */)}
</View>
</ICYMICardInCard>
);
}
function MessageRowWrapper({message, messageContext, visible}) { // fn#112311, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:5479, offset: 0x023c534f, size: 251 bytes, params: 2, frame: 23
const value2 = (require(9579) /* metro dependency 9579: ICYMIUtils */).useGravityMessage(message);
const channel = (require(566) /* metro dependency 566: flux */).useStateFromStores([ChannelStore], _fun112312);
const guild = (require(566) /* metro dependency 566: flux */).useStateFromStores([GuildStore], function() {
return GuildStore.getGuild(channel?.guild_id);
});
return channel == null || guild == null || (require(566) /* metro dependency 566: flux */).useStateFromStores([RelationshipStore],
_fun112314) ? null : ((Component) => <Component message={value2} channel={channel} guild={guild} messageContext={messageContext} visible={visible} />)(env0_19);
}
function _fun112298() { // fn#112298, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:1262, offset: 0x023c4707, size: 43 bytes, params: 1, frame: 13
const value = environment.__proto__;
const isChannelMuted = UserGuildSettingsStore.isChannelMuted;
const channelBinding = channel;
return Reflect.apply(isChannelMuted, UserGuildSettingsStore, [channelBinding.getGuildId(), channelBinding.id]);
}
function _fun112299() { // fn#112299, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:1319, offset: 0x023c4732, size: 129 bytes, params: 1, frame: 5
return !(message.embeds.length !== 1 || message.attachments.length > 0) && (message.embeds[0].type === MessageEmbedTypes.GIFV && message.embeds[0].url === message.content);
}
function _fun112307() { // fn#112307, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:3247, offset: 0x023c50e3, size: 107 bytes, params: 1, frame: 15
var value3;
var defaultImport;
const guildBinding = guild;
const value2 = undefined;
if ((guildBinding == null ? value2 : guild.id) != null) {
value3 = environment.__proto__;
defaultImport = importDefault(6593) /* metro dependency 6593: GuildActionCreators */;
defaultImport.requestMembersById(guild == null ? value2 : guild.id, message.author.id);
}
return value2;
}
function _fun112308() { // fn#112308, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:3541, offset: 0x023c514e, size: 154 bytes, params: 1, frame: 22
let value = environment.__proto__;
const defaultImport = importDefault(9580) /* metro dependency 9580: ICYMIActionCreators */;
const itemInteracted = defaultImport.itemInteracted;
const messageBinding = message;
Reflect.apply(itemInteracted, defaultImport, [messageBinding.id, 'message', 'long_press_channel']);
defaultImport.feedItemActioned({itemId: messageBinding.id, itemType: 'message',
actionParameters: {'actionGestureType': 'long_press', 'actionTargetElement': 'item_header',
'actionIntentType': 'open', 'actionDestinationType': null}});
value = require(12129) /* metro dependency 12129: openChannelLongPressActionSheet */;
value.openChannelLongPressActionSheet(channel.id);
}
function _fun112309() { // fn#112309, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:3878, offset: 0x023c51e8, size: 189 bytes, params: 1, frame: 22
const defaultImport = importDefault(9580) /* metro dependency 9580: ICYMIActionCreators */;
const itemInteracted = defaultImport.itemInteracted;
const messageBinding = message;
Reflect.apply(itemInteracted, defaultImport, [messageBinding.id, 'message', 'long_press_message']);
defaultImport.feedItemActioned({itemId: messageBinding.id, itemType: 'message',
actionParameters: {'actionGestureType': 'long_press', 'actionTargetElement': 'item_body',
'actionIntentType': 'open', 'actionDestinationType': null}});
const showLongPressMessageActionSheetModule = require(11401) /* metro dependency 11401: showLongPressMessageActionSheet */;
const showLongPressMessageActionSheet = showLongPressMessageActionSheetModule.showLongPressMessageActionSheet;
const getUser = UserStore.getUser;
Reflect.apply(showLongPressMessageActionSheet, showLongPressMessageActionSheetModule, [{channel: channel,
message: messageBinding, user: Reflect.apply(getUser, UserStore, [messageBinding.author.id])}]);
}
function _fun112310() { // fn#112310, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:4255, offset: 0x023c52a5, size: 170 bytes, params: 1, frame: 22
let value = environment.__proto__;
const defaultImport = importDefault(9580) /* metro dependency 9580: ICYMIActionCreators */;
const itemInteracted = defaultImport.itemInteracted;
const messageBinding = message;
Reflect.apply(itemInteracted, defaultImport, [messageBinding.id, 'message', 'press_message']);
defaultImport.feedItemActioned({itemId: messageBinding.id, itemType: 'message',
actionParameters: {'actionGestureType': 'press', 'actionTargetElement': 'item_container',
'actionIntentType': 'navigate', 'actionDestinationType': 'channel'}});
value = require(14854) /* metro dependency 14854: ICYMIShared */;
value.navigateToPost(channel.id, guild.id, messageBinding.id);
}
function _fun112314() { // fn#112314, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15055:5768, offset: 0x023c5479, size: 38 bytes, params: 1, frame: 11
return RelationshipStore.isBlockedOrIgnored(env0_0.author.id);
}