/* 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] */;