Files
2026-07-28 01:06:53 +03:00

441 lines
20 KiB
TypeScript

/* Metro module 4641; source: utils/EmbedUtils.tsx; dependencies: [661, 4642, 21, 1391, 22, 3738, 673, 4627, 2] */
import * as FileImportTrackerModule from '../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as ConstantsModule from '../Constants.tsx'; /* Metro dependency 661 */
import * as FlagUtilsModule from '../external/discord_common/js/shared/utils/FlagUtils.tsx'; /* Metro dependency 1391 */
import * as EmbedConstantsModule from '../modules/messages/EmbedConstants.tsx'; /* Metro dependency 4642 */
function _fun39903(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#39903, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:6, offset: 0x010ef3cc, size: 474 bytes, params: 8, frame: 19
var RegExp;
let env0_0 = require;
const validateSize = function({width, height}) {
return width > 0 && height > 0;
};
const appendQueryParams = function(a0, a1) {
var env0_0 = a1;
var value2 = new global.URL(a0);
var env0_1 = value2;
global.Object.keys(a1).forEach(_fun39907);
return value2.toString();
};
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_7 = RegExp('sketchfab', 'i');
const env0_8 = RegExp('^https:\\/\\/sketchfab\\.com', 'i');
const env0_9 = RegExp('youtube|steam|imgur|vimeo|sketchfab|soundcloud|streamable|twitch|vid\\.me|twitter', 'i');
const env0_10 = RegExp('^https?:\\/\\/(?:canary\\.|ptb\\.|www\\.)?discord(?:app)?\\.com\\/channels\\/([0-9]+)\\/shop$',
'');
const env0_11 = RegExp('^https?:\\/\\/(?:canary\\.|ptb\\.|www\\.)?discord(?:app)?\\.com\\/channels\\/([0-9]+)\\/shop\\/([0-9]+)$',
'');
RegExp = global.RegExp;
const regExp = new RegExp('^https://(?:(?:canary\\.|ptb\\.)?discord(?:app)?.com|staging\\.discord\\.co)/shop');
const env0_13 = RegExp('^https?:\\/\\/(?:canary\\.|ptb\\.|www\\.)?discord(?:app)?\\.com\\/channels\\/([0-9]+)\\/game-shop\\/([0-9]+)\\/([0-9]+)',
'');
const env0_14 = RegExp('^https?:\\/\\/(?:canary\\.|ptb\\.|www\\.)?discord(?:app)?\\.com\\/game-shop\\/([0-9]+)\\/([0-9]+)',
'');
const env0_15 = RegExp('^https?:\\/\\/(?:canary\\.|ptb\\.|www\\.)?discord(?:app)?\\.com\\/shop\\?(?=.*tab=game-shops)(?=.*applicationId=[0-9]+)(?=.*skuId=[0-9]+)',
'');
(FileImportTrackerModule).fileFinishedImporting('utils/EmbedUtils.tsx');
exports.sanitizeEmbed = sanitizeEmbed;
exports.mergeEmbedsOnURL = function(a0) {
var Map = global.Map;
var env0_0 = new Map();
a0.forEach(_fun39911);
return [];
};
exports.getEffectiveVideoProvider = function(a0, a1) {
var property;
var prototype;
var value;
var value2;
var error;
if (a0 !== 'YouTube') {
reducibleJoin20: while (true) {
if (a0 !== 'TikTok') {
reduciblePort19: while (true) {
exceptionLanding18: while (true) {
if (a1 == null) {
break reduciblePort19;
}
try {
property = global.URL;
} catch (error) {
break exceptionLanding18;
}
try {
prototype = property.prototype;
} catch (error) {
break exceptionLanding18;
}
try {
} catch (error) {
break exceptionLanding18;
}
try {
value2 = new property(a1);
} catch (error) {
break exceptionLanding18;
}
try {
value = value2 instanceof Object ? value2 : value;
} catch (error) {
break exceptionLanding18;
}
try {
property = value.hostname;
} catch (error) {
break exceptionLanding18;
}
try {
value = property === 'www.youtube.com';
} catch (error) {
break exceptionLanding18;
}
if (value) {
return 'YouTube';
}
try {
value = property === 'www.tiktok.com';
} catch (error) {
break exceptionLanding18;
}
if (value) {
return 'TikTok';
}
break reduciblePort19;
}
break reduciblePort19;
}
return a0;
}
break reducibleJoin20;
}
}
return a0;
};
exports.isEmbedInline = isEmbedInline;
exports.isServerShopArticleEmbed = isServerShopArticleEmbed;
exports.isCollectiblesShopArticleEmbed = isCollectiblesShopArticleEmbed;
exports.isSocialLayerStorefrontArticleEmbed = isSocialLayerStorefrontArticleEmbed;
exports.getMaxEmbedMediaSize = function(a0, a1, a2) {
return a1 == null ? a0.provider?.name === 'TikTok' ? {'maxMediaWidth': 400,
'maxMediaHeight': 450} : {'maxMediaWidth': 400, 'maxMediaHeight': 300} : a2 != null ? {maxMediaWidth: a1,
maxMediaHeight: a2} : a0.provider?.name === 'TikTok' ? {'maxMediaWidth': 400,
'maxMediaHeight': 450} : {'maxMediaWidth': 400, 'maxMediaHeight': 300};
};
exports.canEmbedLinks = canEmbedLinks;
exports.shouldStripEmbeds = function(a0) {
return a0.content !== '' || a0.messageSnapshots.some(_fun39920);
};
function sanitizeMedia({url, proxy_url, width, height, placeholder, placeholder_version, description, flags, content_type}) { // fn#39905, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:1031, offset: 0x010ef5c2, size: 186 bytes, params: 2, frame: 20
const object = {url: url, proxyURL: proxy_url, width: width, height: height, placeholder: placeholder,
placeholderVersion: placeholder_version, description: description};
const hasFlag = FlagUtilsModule.hasFlag;
const r7 = flags ?? 0;
const IS_ANIMATED = MessageEmbedMediaFlags.IS_ANIMATED;
object.srcIsAnimated = Reflect.apply(hasFlag, FlagUtilsModule, [r7, IS_ANIMATED]);
object.flags = flags ?? 0;
object.contentType = content_type ?? undefined;
return object;
}
function appendQueryParams(a0, a1) { // fn#39906, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:1360, offset: 0x010ef67c, size: 86 bytes, params: 3, frame: 14
const env0_0 = a1;
const URL = global.URL;
const uRL = new URL(a0);
const Object = global.Object;
Object.keys(a1).forEach(_fun39907);
return uRL.toString();
function _fun39907(a0) { // fn#39907, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:1440, offset: 0x010ef6d2, size: 39 bytes, params: 2, frame: 13
env0_1.searchParams.set(a0, require[a0]);
}
}
function sanitizeEmbed(a0, a1, a2) { // fn#39908, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:1557, offset: 0x010ef6f9, size: 1205 bytes, params: 4, frame: 23
var r4;
var r10;
var r8;
var r7;
var r6;
var object;
var object2;
var object3;
var defaultImport2;
var Date;
var value7;
var date;
var moduleValue;
var object4;
var appendQueryParamsBinding;
var binding;
var value20;
var regexp;
const object5 = {};
var value;
const value2 = undefined;
object5.id = (importDefault(22) /* metro dependency 22 */).uniqueId('embed_');
object5.url = a2.url;
let type = a2.type;
object5.type = type;
object5.rawTitle = a2.title;
object5.rawDescription = a2.description;
object5.referenceId = a2.reference_id;
object5.flags = a2.flags;
object5.contentScanVersion = a2.content_scan_version;
let footer = a2.footer;
if (footer != null) {
object = {};
footer = a2.footer;
object.text = footer.text;
footer = a2.footer;
object.iconURL = footer.icon_url;
footer = a2.footer;
object.iconProxyURL = footer.proxy_icon_url;
object5.footer = object;
}
let author = a2.author;
if (author != null && a2.author.name != null) {
object2 = {};
author = a2.author;
object2.name = author.name;
author = a2.author;
object2.url = author.url;
author = a2.author;
object2.iconURL = author.icon_url;
author = a2.author;
object2.iconProxyURL = author.proxy_icon_url;
object5.author = object2;
}
let provider = a2.provider;
if (provider != null && a2.provider.name != null) {
object3 = {};
provider = a2.provider;
object3.name = provider.name;
provider = a2.provider;
object3.url = provider.url;
object5.provider = object3;
}
let timestamp = a2.timestamp;
if (timestamp != null) {
defaultImport2 = importDefault(3738) /* metro dependency 3738 */;
Date = global.Date;
timestamp = a2.timestamp;
value7 = Object.create(Date.prototype, {constructor: {value: Date}});
date = new Date(timestamp);
object5.timestamp = defaultImport2(date instanceof Object ? date : value7);
}
if (a2.color != null) {
moduleValue = require(673) /* metro dependency 673: ColorUtils */;
object5.color = moduleValue.int2hsl(a2.color, false);
}
let thumbnail = a2.thumbnail;
if (thumbnail != null) {
if (validateSize(a2.thumbnail)) {
type = object5.type;
if (MessageEmbedTypes.ARTICLE === type) {
object5.image = sanitizeMedia(a2.thumbnail);
} else if (MessageEmbedTypes.IMAGE === type) {
object5.image = sanitizeMedia(a2.thumbnail);
} else {
object5.thumbnail = sanitizeMedia(a2.thumbnail);
}
}
}
if (a2.image != null && validateSize(a2.image)) {
object5.image = sanitizeMedia(a2.image);
}
let video = a2.video;
if (video != null) {
thumbnail = object5.thumbnail;
r4 = thumbnail == null && a2.video.proxy_url != null;
r4 = r4 && validateSize(a2.video);
if (r4) {
object4 = {};
video = a2.video;
object4.width = video.width;
video = a2.video;
object4.height = video.height;
appendQueryParamsBinding = appendQueryParams;
video = a2.video;
object4.url = appendQueryParamsBinding(video.proxy_url, {format: 'webp'});
object5.thumbnail = object4;
}
thumbnail = object5.thumbnail;
r4 = thumbnail != null && validateSize(a2.video);
if (r4) {
provider = a2.provider;
video = a2.video;
if (provider == null) {
binding = env0_8;
if (binding.test(video.url)) {
r6 = false;
} else {
value20 = video.proxy_url != null;
if (value20) {
r10 = value20;
} else {
regexp = RegExp('^https:', 'i');
r10 = regexp.test(video.url);
}
r8 = a1 != null && (importDefault(21) /* metro dependency 21: SnowflakeUtils */).extractTimestamp(a1) < 1492472454139;
if (r8) {
r8 = r10 && provider != null;
r8 = r8 && env0_9.test(provider.name);
r7 = r8;
} else {
r7 = r10;
}
r6 = r7;
}
} else {
binding = env0_7;
if (binding.test(provider.name)) {
r6 = false;
} else {
binding = env0_8;
if (binding.test(video.url)) {
r6 = false;
} else {
value20 = video.proxy_url != null;
if (value20) {
r10 = value20;
} else {
regexp = RegExp('^https:', 'i');
r10 = regexp.test(video.url);
}
r8 = a1 != null && (importDefault(21) /* metro dependency 21: SnowflakeUtils */).extractTimestamp(a1) < 1492472454139;
if (r8) {
r8 = r10 && provider != null;
r8 = r8 && env0_9.test(provider.name);
r7 = r8;
} else {
r7 = r10;
}
r6 = r7;
}
}
}
r4 = r6;
}
if (r4) {
object5.video = sanitizeMedia(a2.video);
}
}
if (EMBED_TYPES_WITH_PARSEABLE_FIELDS.has(object5.type)) {
object5.fields = (a2.fields ?? []).map(function({name, value, inline}) {
return {rawName: name, rawValue: value, inline: inline};
});
} else {
object5.fields = [];
}
if (a2.components != null) {
value = require(4627) /* metro dependency 4627: InteractionComponentUtils */;
value = value.transformComponents(a2.components);
object5.components = value.length > 0 ? value : value2;
}
return object5;
}
function mergeEmbedsOnURL(a0) { // fn#39910, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:3299, offset: 0x010efbd4, size: 62 bytes, params: 2, frame: 12
const Map = global.Map;
const map = new Map();
a0.forEach(_fun39911);
return [];
function _fun39911(a0) { // fn#39911, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:3365, offset: 0x010efc12, size: 185 bytes, params: 2, frame: 15
var binding;
var value2;
var images;
if (a0.url != null) {
binding = env0_0;
value2 = binding.get(a0.url);
if (value2 == null) {
binding = env0_1;
binding.push(a0);
binding = env0_0;
binding.set(a0.url, a0);
return undefined;
}
if (a0.image != null) {
images = value2.images;
if (images == null) {
value2.images = [];
if (value2.image != null) {
images = value2.images;
images.push(value2.image);
}
}
images = value2.images;
images.push(a0.image);
}
} else {
env0_1.push(a0);
}
}
}
function isEmbedInline({image, video, type, author, rawTitle}) { // fn#39913, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:3846, offset: 0x010efd3b, size: 104 bytes, params: 2, frame: 8
var r2;
var r1;
var value2;
let r0 = image != null || video != null;
if (r0) {
value2 = type === MessageEmbedTypes.GIFV;
if (value2) {
r1 = value2;
} else {
r2 = type !== MessageEmbedTypes.RICH && author == null;
r2 = r2 && rawTitle == null;
r1 = r2;
}
r0 = r1;
}
return r0;
}
function isServerShopArticleEmbed(a0) { // fn#39914, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4012, offset: 0x010efda3, size: 88 bytes, params: 2, frame: 14
const type = a0.type;
const ARTICLE = MessageEmbedTypes.ARTICLE;
return type === ARTICLE && a0.url != null && (env0_11.test(a0.url) || env0_10.test(a0.url));
}
function isCollectiblesShopArticleEmbed(a0) { // fn#39915, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4154, offset: 0x010efdfb, size: 63 bytes, params: 2, frame: 13
const type = a0.type;
const ARTICLE = MessageEmbedTypes.ARTICLE;
return type === ARTICLE && a0.url != null && env0_12.test(a0.url);
}
function isSocialLayerStorefrontArticleEmbed(a0) { // fn#39916, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4290, offset: 0x010efe3a, size: 110 bytes, params: 2, frame: 15
var r1;
var binding;
const type = a0.type;
const ARTICLE = MessageEmbedTypes.ARTICLE;
let r0 = type === ARTICLE && a0.url != null;
if (r0) {
binding = env0_14;
r1 = binding.test(a0.url) || env0_13.test(a0.url);
r1 = !r1 ? env0_15.test(a0.url) : r1;
r0 = r1;
}
return r0;
}
function canEmbedLinks(a0, a1) { // fn#39918, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4693, offset: 0x010eff0a, size: 61 bytes, params: 3, frame: 13
return a0.isPrivate() ? !a0.isManaged() : a1.can(Permissions.EMBED_LINKS, a0);
}
function shouldStripEmbeds(a0) { // fn#39919, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4801, offset: 0x010eff47, size: 45 bytes, params: 2, frame: 12
return a0.content !== '' || a0.messageSnapshots.some(function(a0) {
return a0.message.content !== '' || a0.message.attachments.length > 0;
});
}
}
function _fun39920(a0) { // fn#39920, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4819:4878, offset: 0x010eff74, size: 48 bytes, params: 2, frame: 3
return a0.message.content !== '' || a0.message.attachments.length > 0;
}
global.__d(_fun39903, 4641, [661, 4642, 21, 1391, 22, 3738, 673, 4627,
2]) /* metro module 4641, dependencies: [661, 4642, 21, 1391, 22, 3738, 673, 4627, 2] */;