Files
discord-decomp/sources/modules/icymi/native/ICYMICardInCard.tsx
T
2026-07-28 01:06:53 +03:00

582 lines
30 KiB
TypeScript

/* Metro module 14856; source: modules/icymi/native/ICYMICardInCard.tsx; dependencies: [31, 27, 1379, 1945, 1867, 661, 33, 14815, 697, 7599, 6819, 1305, 4584, 566, 4635, 8699, 4617, 4573, 4805, 14857, 1244, 6691, 14855, 5278, 4788, 8638, 2] */
import Native from '../../../external/discord_common/js/packages/tokens/native.tsx'; /* Metro dependency 697 */
import ChannelStore from '../../../stores/ChannelStore.tsx'; /* Metro dependency 1379 */
import GuildStore from '../../../stores/GuildStore.tsx'; /* Metro dependency 1867 */
import GuildMemberStore from '../../../stores/GuildMemberStore.tsx'; /* Metro dependency 1945 */
import GuildIcon from '../../guild/native/GuildIcon.tsx'; /* Metro dependency 6819 */
import ClipView from '../../../design/components/Icon/native/ClipView.tsx'; /* Metro dependency 7599 */
import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ReactNativeModule from '../../../by-id/module-00027-ReactNative.js'; /* Metro dependency 27 */
import * as ReactModule from '../../../by-id/module-00031-React.js'; /* Metro dependency 31 */
import * as JsxRuntimeModule from '../../../by-id/module-00033-JsxRuntime.js'; /* Metro dependency 33 */
import * as ConstantsModule from '../../../Constants.tsx'; /* Metro dependency 661 */
import * as NativeModule from '../../../design/void/native.tsx'; /* Metro dependency 1305 */
import * as TextModule from '../../../design/components/Text/native/Text.tsx'; /* Metro dependency 4573 */
import * as UseFontScaleModule from '../../screen/native/useFontScale.tsx'; /* Metro dependency 4584 */
import * as NicknameUtilsModule from '../../../utils/NicknameUtils.tsx'; /* Metro dependency 4617 */
import * as PressablesModule from '../../../design/void/Pressables/native/Pressables.tsx'; /* Metro dependency 5278 */
import * as GuildIconModule from '../../guild/native/GuildIcon.tsx'; /* Metro dependency 6819 */
import * as ClipViewModule from '../../../design/components/Icon/native/ClipView.tsx'; /* Metro dependency 7599 */
import * as MoreHorizontalIconModule from '../../../design/components/Icon/native/redesign/generated/MoreHorizontalIcon.tsx'; /* Metro dependency 8638 */
import * as CreateICYMIStylesModule from './createICYMIStyles.tsx'; /* Metro dependency 14815 */
function _fun112281(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#112281, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:6, offset: 0x023c303b, size: 308 bytes, params: 8, frame: 19
const env0_0 = require;
const truncateUsername_112282 = function(a0) {
var r0;
var value = a0;
if (value.length > 20) {
value = value.slice(0, 17);
value = '' + value + '...';
r0 = value;
} else {
r0 = value;
}
return r0;
};
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = JsxRuntimeModule;
const env0_9 = value.jsx;
const env0_10 = value.jsxs;
const env0_11 = value.Fragment;
const env0_12 = (CreateICYMIStylesModule).createICYMIStyles(_fun112284);
(FileImportTrackerModule).fileFinishedImporting('modules/icymi/native/ICYMICardInCard.tsx');
exports.default = ICYMICardInCard;
function CutoutGuildIconWithUserCustom({guild, author}) { // fn#112283, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:1518, offset: 0x023c316f, size: 311 bytes, params: 2, frame: 27
const value2 = env0_12();
const CutoutShape = (ClipViewModule).CutoutShape;
const Circle = CutoutShape.Circle;
const items2 = [{'shape': null, 'x': 18, 'y': 18, 'size': 24, shape: Circle}];
const GuildIconSizes = (GuildIconModule).GuildIconSizes;
const SMALL_32 = GuildIconSizes.SMALL_32;
const clipView = (
<ClipView cutouts={items2}>
<GuildIcon guild={guild} size={SMALL_32} />
</ClipView>
);
const Avatar = (NativeModule).Avatar;
const authorAvatar = value2.authorAvatar;
const id = guild.id;
const AvatarSizes = (NativeModule).AvatarSizes;
const XSMALL_20 = AvatarSizes.XSMALL_20;
return (
<View style={{'width': 40, 'height': 40}}>
{clipView}
<Avatar
animate
style={authorAvatar}
guildId={id}
user={author}
size={XSMALL_20}
/>
</View>
);
}
function _fun112284(a0) { // fn#112284, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:329, offset: 0x023c32a6, size: 476 bytes, params: 2, frame: 17
const object = {};
object.container = {marginTop: a0.margin};
object.content = {'flex': 1, 'overflow': 'hidden'};
let PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4;
object.channelNameAndAccessory = {'flexDirection': 'row', 'justifyContent': 'space-between', 'alignItems': 'center',
paddingBottom: PX_4, marginHorizontal: a0.margin};
PX_4 = (importDefault(697) /* metro dependency 697: native */).space.PX_4;
object.channelNameAndAccessoryLarge = {flexDirection: 'column', paddingBottom: PX_4, marginHorizontal: a0.margin};
object.header = {'flexDirection': 'row', 'flexGrow': 1};
const PX_12 = (importDefault(697) /* metro dependency 697: native */).space.PX_12;
object.headerInfo = {'flexGrow': 1, 'flexShrink': 1, marginLeft: PX_12};
object.title = {'flexDirection': 'row', 'alignItems': 'center', 'justifyContent': 'space-between',
'marginBottom': 2};
object.titleLeft = {'flexShrink': 1, 'flexGrow': 0, 'flexDirection': 'row', 'alignItems': 'center', 'gap': 6};
const object4 = {'flexDirection': 'row', 'justifyContent': 'space-between'};
object4.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.sm;
object.subTitleContainer = object4;
object.subtitle = {'flexShrink': 1, 'flexGrow': 0, 'width': '100%'};
object.genContentSubtitle = {'flexDirection': 'row', 'alignItems': 'center', 'gap': 2};
object.genContentSubtitleChannel = {'flexDirection': 'row', 'alignItems': 'center', 'gap': 2, 'flex': 1};
object.subtitleTrailing = {paddingVertical: 1};
const BORDER_SUBTLE = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_SUBTLE;
object.separator = {'height': 1, 'width': '100%', backgroundColor: BORDER_SUBTLE};
const BORDER_STRONG = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_STRONG;
object.normalContent = {'borderBottomWidth': 1, 'borderBottomColor': null, 'flexShrink': 0,
borderBottomColor: BORDER_STRONG};
object.authorAvatar = {'position': 'absolute', 'right': 0, 'bottom': 0};
return object;
}
function ICYMICardInCard({children, message, actionLabel, timestamp, id, interactionType, onHeaderPress, onHeaderLongPress, channelId, guildId, hideTimestamp, shouldFeatureUser}) { // fn#112285, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:1978, offset: 0x023c3482, size: 1496 bytes, params: 2, frame: 48
const interactionType2 = interactionType;
hideTimestamp = !(hideTimestamp === undefined) && hideTimestamp;
shouldFeatureUser = !(shouldFeatureUser === undefined) && shouldFeatureUser;
const value5 = undefined();
const value6 = (UseFontScaleModule).useFontScale();
const value7 = (require(566) /* metro dependency 566: flux */).useStateFromStores([ChannelStore], function() {
return ChannelStore.getChannel(channelId);
}, [channelId]);
const r21 = value7?.guild_id ?? guildId;
const value9 = (require(566) /* metro dependency 566: flux */).useStateFromStores([GuildStore], _fun112287, [r21]);
const value10 = (require(566) /* metro dependency 566: flux */).useStateFromStores([GuildMemberStore], _fun112288,
[shouldFeatureUser, r21, message]);
const value12 = (require(8699) /* metro dependency 8699: useDisplayNameStylesFont */).useDisplayNameStylesFont({displayNameStyles: (importDefault(4635) /* metro dependency 4635: useDisplayNameStyles */)({userId: message == null || message.author == null ? undefined : message.author.id})});
const useName = NicknameUtilsModule.useName;
const r19 = shouldFeatureUser && (message?.author != null && r21 != null) && value7 != null ? Reflect.apply(useName,
NicknameUtilsModule, [r21, value7?.id, message?.author]) : null;
let binding = interactionType2;
const value14 = binding.useMemo(_fun112289, [value9, shouldFeatureUser, message?.author]);
binding = interactionType2;
const value15 = binding.useMemo(_fun112290, [value9]);
const value17 = binding.useMemo(_fun112291, [shouldFeatureUser, message?.author, r21, value7,
(importDefault(4805) /* metro dependency 4805: useChannelName */)(value7), r19, value10, value12,
value5.genContentSubtitle, value5.genContentSubtitleChannel, onHeaderPress, actionLabel]);
binding = interactionType2;
const value18 = binding.useCallback(_fun112292, [value9, value7, id, interactionType]);
const value19 = binding.useMemo(_fun112293, [value6, value5.channelNameAndAccessoryLarge,
value5.channelNameAndAccessory]);
const container = value5.container;
const PressableHighlight = (PressablesModule).PressableHighlight;
const content = value5.content;
const header = value5.header;
const headerInfo = value5.headerInfo;
const title = value5.title;
const view = (
<View style={value5.titleLeft}>
{value15}
{!hideTimestamp && ((Text) => <Text lineClamp={1} variant="text-xs/normal" color="text-muted">{(require(4788) /* metro dependency 4788: NotificationCenterUtils */).getRelativeTimestamp(timestamp)}</Text>)((require(4573) /* metro dependency 4573: Text */).Text)}
</View>
);
const PressableOpacity = (PressablesModule).PressableOpacity;
const subtitleTrailing = value5.subtitleTrailing;
const MoreHorizontalIcon = (MoreHorizontalIconModule).MoreHorizontalIcon;
const ICON_MUTED = (Native).colors.ICON_MUTED;
return (
<View style={container}>
<PressableHighlight
onPress={onHeaderPress}
onLongPress={onHeaderLongPress}
style={content}
>
<View style={value19}>
<View style={header}>
{value14}
<View style={headerInfo}>
<View style={title}>
{view}
<PressableOpacity
onPress={value18}
style={subtitleTrailing}
hitSlop={8}
>
<MoreHorizontalIcon color={ICON_MUTED} size="sm" />
</PressableOpacity>
</View>
<View style={value5.subTitleContainer}>
<View style={value5.subtitle}>
{value17}
</View>
</View>
</View>
</View>
</View>
</PressableHighlight>
<View style={value5.normalContent}>
{children}
</View>
</View>
);
function _fun112287() { // fn#112287, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:2354, offset: 0x023c3a74, size: 40 bytes, params: 1, frame: 12
const value2 = null;
return value2 != env0_10 ? GuildStore.getGuild(env0_10) : value2;
}
function _fun112288() { // fn#112288, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:2426, offset: 0x023c3a9c, size: 104 bytes, params: 1, frame: 14
const shouldFeatureUserBinding = shouldFeatureUser;
const value2 = null;
return shouldFeatureUserBinding && value2 != env0_10 && value2 != (value2 == message ? undefined : message.author.id) ? GuildMemberStore.getMember(env0_10,
message.author.id) : value2;
}
function _fun112289() { // fn#112289, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:2780, offset: 0x023c3b04, size: 180 bytes, params: 1, frame: 20
const value2 = null;
return (
value2 == env0_11
? value2
: (
shouldFeatureUser && value2 != (value2 == message ? undefined : message.author)
? (
<CutoutGuildIconWithUserCustom guild={env0_11} author={message.author} />
)
: ((Component) => <Component guild={env0_11} size={(require(6819) /* metro dependency 6819: GuildIcon */).GuildIconSizes.NORMAL} />)(importDefault(6819) /* metro dependency 6819: GuildIcon */)
)
);
}
function _fun112290() { // fn#112290, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:2994, offset: 0x023c3bb8, size: 111 bytes, params: 1, frame: 18
const value2 = null;
if (value2 != env0_11) {
const Text = (require(4573) /* metro dependency 4573: Text */).Text;
return (
<Text
style={{maxWidth: 225}}
lineClamp={1}
variant="text-md/semibold"
color="mobile-text-heading-primary"
key={env0_11.id}
>
{env0_11.name}
</Text>
);
} else {
return value2;
}
}
function _fun112291() { // fn#112291, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:3180, offset: 0x023c3c27, size: 1014 bytes, params: 1, frame: 32
var r22;
var r6;
var r7;
var messageBinding;
var value2;
var value3;
var value7;
const Text = (TextModule).Text;
var items4;
var jsxRuntimeEnv1_11Binding;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
var items2;
var items3;
var value12;
var iconForChannel;
var items5;
var items6;
if (shouldFeatureUser) {
messageBinding = message;
value2 = undefined;
if ((messageBinding == null ? value2 : message.author) == null) {
value3 = null;
r22 = value3 != env0_9 ? (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9) : (require(6691) /* metro dependency 6691: TextIcon */).TextIcon;
value7 = environment.__proto__;
var viewBindingProps = {style: env0_7.genContentSubtitle};
items4 = [
<Text variant="text-sm/medium" color="text-default">
{actionLabel}
</Text>,
];
if (value3 != env0_9) {
jsxRuntimeEnv1_11Binding = jsxRuntimeEnv1_11;
items2 = [
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>,
];
var viewBinding2Props = {style: env0_7.genContentSubtitleChannel};
items3 = [
((Component) => <Component size="xs" color="text-default" />)(r22),
];
items3[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items2[1] = (
<View {...viewBinding2Props}>
{items3}
</View>
);
r6 = (
<>
{items2}
</>
);
} else {
r6 = value3;
}
items4[1] = r6;
return (
<View {...viewBindingProps}>
{items4}
</View>
);
}
if (env0_10 == null) {
value3 = null;
r22 = value3 != env0_9 ? (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9) : (require(6691) /* metro dependency 6691: TextIcon */).TextIcon;
value7 = environment.__proto__;
var viewBindingProps = {style: env0_7.genContentSubtitle};
items4 = [
<Text variant="text-sm/medium" color="text-default">
{actionLabel}
</Text>,
];
if (value3 != env0_9) {
jsxRuntimeEnv1_11Binding = jsxRuntimeEnv1_11;
items2 = [
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>,
];
var viewBinding2Props = {style: env0_7.genContentSubtitleChannel};
items3 = [
((Component) => <Component size="xs" color="text-default" />)(r22),
];
items3[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items2[1] = (
<View {...viewBinding2Props}>
{items3}
</View>
);
r6 = (
<>
{items2}
</>
);
} else {
r6 = value3;
}
items4[1] = r6;
return (
<View {...viewBindingProps}>
{items4}
</View>
);
}
if (env0_9 == null) {
value3 = null;
r22 = value3 != env0_9 ? (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9) : (require(6691) /* metro dependency 6691: TextIcon */).TextIcon;
value7 = environment.__proto__;
var viewBindingProps = {style: env0_7.genContentSubtitle};
items4 = [
<Text variant="text-sm/medium" color="text-default">
{actionLabel}
</Text>,
];
if (value3 != env0_9) {
jsxRuntimeEnv1_11Binding = jsxRuntimeEnv1_11;
items2 = [
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>,
];
var viewBinding2Props = {style: env0_7.genContentSubtitleChannel};
items3 = [
((Component) => <Component size="xs" color="text-default" />)(r22),
];
items3[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items2[1] = (
<View {...viewBinding2Props}>
{items3}
</View>
);
r6 = (
<>
{items2}
</>
);
} else {
r6 = value3;
}
items4[1] = r6;
return (
<View {...viewBindingProps}>
{items4}
</View>
);
}
if (env0_14 != null) {
r7 = (env0_12 == null ? value2 : env0_12.colorString) ?? DEFAULT_ROLE_COLOR_HEX;
value12 = environment.__proto__;
iconForChannel = (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9);
var viewBindingProps = {style: env0_7.genContentSubtitle};
items5 = [
<Text variant="text-sm/semibold" style={[{color: r7},
env0_13 != null ? {fontFamily: env0_13} : value2]}>
{truncateUsername_112282(env0_14)}
</Text>,
];
items5[1] = (
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>
);
var viewBinding3Props = {style: env0_7.genContentSubtitleChannel};
items6 = [
((Component) => <Component size="xs" color="text-default" />)(iconForChannel),
];
items6[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items5[2] = (
<View {...viewBinding3Props}>
{items6}
</View>
);
return (
<View {...viewBindingProps}>
{items5}
</View>
);
}
value3 = null;
r22 = value3 != env0_9 ? (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9) : (require(6691) /* metro dependency 6691: TextIcon */).TextIcon;
value7 = environment.__proto__;
var viewBindingProps2 = {style: env0_7.genContentSubtitle};
items4 = [
<Text variant="text-sm/medium" color="text-default">
{actionLabel}
</Text>,
];
if (value3 != env0_9) {
jsxRuntimeEnv1_11Binding = jsxRuntimeEnv1_11;
items2 = [
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>,
];
var viewBinding2Props = {style: env0_7.genContentSubtitleChannel};
items3 = [
((Component) => <Component size="xs" color="text-default" />)(r22),
];
items3[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items2[1] = (
<View {...viewBinding2Props}>
{items3}
</View>
);
r6 = (
<>
{items2}
</>
);
} else {
r6 = value3;
}
items4[1] = r6;
return (
<View {...viewBindingProps2}>
{items4}
</View>
);
}
value3 = null;
r22 = value3 != env0_9 ? (require(14857) /* metro dependency 14857: getIconForChannel */).getIconForChannel(env0_9) : (require(6691) /* metro dependency 6691: TextIcon */).TextIcon;
const genContentSubtitle = env0_7.genContentSubtitle;
const text = (
<Text variant="text-sm/medium" color="text-default">
{actionLabel}
</Text>
);
if (value3 != env0_9) {
jsxRuntimeEnv1_11Binding = jsxRuntimeEnv1_11;
items2 = [
<Text variant="text-sm/medium" color="text-default">
{intl.string((require(1244) /* metro dependency 1244: indexNative */).t.CHUAYk)}
</Text>,
];
var viewBinding2Props = {style: env0_7.genContentSubtitleChannel};
items3 = [
((Component) => <Component size="xs" color="text-default" />)(r22),
];
items3[1] = (
<Text
variant="text-sm/medium"
color="text-default"
onPress={onHeaderPress}
style={{flex: 1}}
lineClamp={1}
ellipsizeMode="tail"
>
{env0_15}
</Text>
);
items2[1] = (
<View {...viewBinding2Props}>
{items3}
</View>
);
r6 = (
<>
{items2}
</>
);
} else {
r6 = value3;
}
return (
<View style={genContentSubtitle}>
{text}
{r6}
</View>
);
}
function _fun112292() { // fn#112292, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:4519, offset: 0x023c401d, size: 111 bytes, params: 1, frame: 13
var value4;
if (env0_11 != null && env0_9 != null) {
value4 = environment.__proto__;
(require(14855) /* metro dependency 14855: openDetailsActionSheet */).openDetailsActionSheet({guildId: env0_11.id,
channelId: env0_9.id, id: id, type: interactionType});
}
}
function _fun112293() { // fn#112293, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:15053:4643, offset: 0x023c408c, size: 45 bytes, params: 1, frame: 3
return ConstantsModule.DEFAULT_ROLE_COLOR_HEX > 1.8 ? env0_7.channelNameAndAccessoryLarge : env0_7.channelNameAndAccessory;
}
}
}
global.__d(_fun112281, 14856, [31, 27, 1379, 1945, 1867, 661, 33, 14815, 697, 7599, 6819, 1305, 4584, 566, 4635,
8699, 4617, 4573, 4805, 14857, 1244, 6691, 14855, 5278, 4788, 8638,
2]) /* metro module 14856, dependencies: [31, 27, 1379, 1945, 1867, 661, 33, 14815, 697, 7599, 6819, 1305, 4584, 566, 4635, 8699, 4617, 4573, 4805, 14857, 1244, 6691, 14855, 5278, 4788, 8638, 2] */;