decord/source/modules/forums/ForumPostMediaUtils.tsx

1104 lines
43 KiB
TypeScript
Raw Normal View History

2026-08-24 06:08:38 +00:00
// Module ID: 8554
// Function ID: 8555
2026-07-29 08:29:29 +00:00
// Name: isMediaAttachment
2026-08-24 06:08:38 +00:00
// Dependencies: [19, 7309, 1391, 4999, 1922, 676, 4816, 4069, 1403, 1487, 1370, 4810, 1954, 4815, 11, 2]
2026-07-29 08:29:29 +00:00
// Exports: getEmbedColor, isValidImageAttachment, isValidVideoAttachment, messageContainsGifOrVideo, shouldShowAddMediaToOriginalPostModal, useFindFirstMediaProperties, useFirstMediaIsEmbed, useForumPostComponentsMedia, useForumPostMediaThumbnail
2026-07-20 16:05:17 +00:00
2026-08-24 06:08:38 +00:00
// Module 8554 (isMediaAttachment)
import DISCORD_EPOCHDefault from "DISCORD_EPOCH" /* 11 */;
import isDiscordFrontendDevelopment from "isDiscordFrontendDevelopment" /* 1370 */;
import explicitContentFromProto from "explicitContentFromProto" /* 4069 */;
import urlMatchesFileExtension from "urlMatchesFileExtension" /* 4816 */;
import closure_3 from "noop" /* 19 */;
import closure_4 from "updateState" /* 7309 */;
import closure_5 from "ensureGuildLoaded" /* 1391 */;
import closure_6 from "reinjectEphemerals" /* 4999 */;
import closure_7 from "mergeGuildAvatar" /* 1922 */;
import ME from "ME" /* 676 */;
2026-07-23 10:11:24 +00:00
2026-08-24 06:08:38 +00:00
require = arg1;
2026-07-29 08:29:29 +00:00
function isMediaAttachment(filename) {
let flag = false;
if (null != filename) {
2026-07-20 16:05:17 +00:00
({ height, width } = filename);
2026-08-24 06:08:38 +00:00
let tmp3 = urlMatchesFileExtension.isImageFile(filename.filename) && null != height;
2026-07-20 16:05:17 +00:00
if (tmp3) {
tmp3 = height > 0;
}
if (tmp3) {
tmp3 = null != width;
}
if (tmp3) {
tmp3 = width > 0;
}
2026-07-29 08:29:29 +00:00
flag = tmp3;
2026-08-24 06:08:38 +00:00
obj = urlMatchesFileExtension;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (!flag) {
let tmp4 = null != filename;
if (tmp4) {
let isVideoFileResult = null != filename;
if (isVideoFileResult) {
2026-08-24 06:08:38 +00:00
isVideoFileResult = urlMatchesFileExtension.isVideoFile(filename.filename);
const obj2 = urlMatchesFileExtension;
2026-07-29 08:29:29 +00:00
}
if (isVideoFileResult) {
isVideoFileResult = null != filename.proxy_url;
}
tmp4 = isVideoFileResult;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
flag = tmp4;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
return flag;
2026-07-20 16:05:17 +00:00
}
function getForumPostMedia(attachments, InlineAttachmentMedia) {
let setting = InlineAttachmentMedia;
if (InlineAttachmentMedia === undefined) {
2026-08-24 06:08:38 +00:00
InlineAttachmentMedia = explicitContentFromProto.InlineAttachmentMedia;
2026-07-20 16:05:17 +00:00
setting = InlineAttachmentMedia.getSetting();
}
if (setting) {
let moderatorReport;
2026-07-29 08:29:29 +00:00
if (attachments != null) {
2026-07-20 16:05:17 +00:00
const first = attachments.messageSnapshots[0];
2026-07-29 08:29:29 +00:00
if (first != null) {
2026-07-20 16:05:17 +00:00
moderatorReport = first.moderatorReport;
}
}
if (null != moderatorReport) {
attachments = undefined;
2026-07-29 08:29:29 +00:00
if (attachments != null) {
2026-07-20 16:05:17 +00:00
const first1 = attachments.messageSnapshots[0];
2026-07-29 08:29:29 +00:00
if (first1 != null) {
2026-07-20 16:05:17 +00:00
attachments = first1.message.attachments;
}
}
let attachments1 = attachments;
2026-07-29 08:29:29 +00:00
} else if (attachments != null) {
2026-07-20 16:05:17 +00:00
attachments1 = attachments.attachments;
}
if (null != attachments) {
if (null != attachments1) {
const found = attachments1.filter(isMediaAttachment);
2026-07-29 08:29:29 +00:00
const mapped = found.map((flags) => {
({ proxy_url, flags, width, height } = flags);
2026-07-20 16:05:17 +00:00
if (null != width) {
if (null != height) {
2026-07-29 08:29:29 +00:00
const isVideoFileResult = callback(table[6]).isVideoFile(tmp3);
2026-07-20 16:05:17 +00:00
let hasFlagResult = null != flags.flags;
if (hasFlagResult) {
2026-07-29 08:29:29 +00:00
let tmp12Result = tmp12(tmp13[8]);
hasFlagResult = tmp12Result.hasFlag(flags.flags, constants.IS_THUMBNAIL);
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
let str = proxy_url;
if (proxy_url == null) {
str = tmp;
2026-07-20 16:05:17 +00:00
}
if (isVideoFileResult) {
2026-07-29 08:29:29 +00:00
str = callback2(tmp13[9]).toURLSafe(proxy_url);
2026-07-20 16:05:17 +00:00
if (null == str) {
return null;
} else {
const searchParams = str.searchParams;
searchParams.append("format", "webp");
2026-07-29 08:29:29 +00:00
str = str.toString();
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
const obj2 = callback2(tmp13[9]);
}
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, width: null, height: null, spoiler: null, flags: null, contentScanVersion: null, alt: null, isVideo: null, isThumbnail: null, attachmentId: null, mediaIndex: null, srcIsAnimated: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants2.ATTACHMENT;
obj[1] = str;
obj[2] = width;
obj[3] = height;
tmp12Result = tmp12(tmp13[8]);
let num = flags;
if (flags == null) {
num = 0;
}
obj[4] = tmp12Result.hasFlag(num, constants.IS_SPOILER);
obj[5] = flags;
obj[6] = tmp4;
obj[7] = tmp2;
obj[8] = isVideoFileResult;
obj[9] = hasFlagResult;
obj[10] = flags.id;
obj[11] = arg1;
const obj6 = callback(table[6]);
const tmp11 = constants;
let num2 = flags.flags;
if (num2 == null) {
num2 = 0;
}
obj[12] = callback(table[8]).hasFlag(num2, tmp11.IS_ANIMATED);
2026-07-20 16:05:17 +00:00
return obj;
}
}
return null;
});
2026-08-24 06:08:38 +00:00
let found1 = mapped.filter(isDiscordFrontendDevelopment.isNotNullish);
2026-07-20 16:05:17 +00:00
}
return found1;
}
found1 = [];
} else {
return [];
}
}
2026-08-04 08:36:32 +00:00
function useForumPostEmbeds(embeds, flag) {
const _require = flag;
2026-08-24 06:08:38 +00:00
const InlineEmbedMedia = _require(4069).InlineEmbedMedia;
2026-07-20 16:05:17 +00:00
const setting = InlineEmbedMedia.useSetting();
2026-08-24 06:08:38 +00:00
const RenderEmbeds = _require(4069).RenderEmbeds;
2026-07-20 16:05:17 +00:00
if (null == embeds) {
return [];
} else {
const first = embeds.messageSnapshots[0];
let moderatorReport;
2026-07-29 08:29:29 +00:00
if (first != null) {
2026-07-20 16:05:17 +00:00
moderatorReport = first.moderatorReport;
}
if (null != moderatorReport) {
const first1 = embeds.messageSnapshots[0];
embeds = undefined;
2026-07-29 08:29:29 +00:00
if (first1 != null) {
2026-07-20 16:05:17 +00:00
embeds = first1.message.embeds;
}
let embeds1 = embeds;
} else {
embeds1 = embeds.embeds;
}
if (setting) {
2026-07-29 08:29:29 +00:00
if (tmp4) {
2026-07-20 16:05:17 +00:00
if (null != embeds1) {
2026-07-29 08:29:29 +00:00
const mapped = embeds1.map((image) => {
2026-07-20 16:05:17 +00:00
let thumbnail = image.image;
2026-07-29 08:29:29 +00:00
if (thumbnail == null) {
2026-07-20 16:05:17 +00:00
thumbnail = image.thumbnail;
}
if (tmp) {
thumbnail = image.images[0];
}
if (null != thumbnail) {
if (null != thumbnail.url) {
({ proxyURL, url, flags } = thumbnail);
let isVideoUrlResult = null != proxyURL;
({ height, width } = thumbnail);
if (isVideoUrlResult) {
2026-08-24 06:08:38 +00:00
obj = callback(closure_1_2[6]);
2026-07-20 16:05:17 +00:00
isVideoUrlResult = obj.isVideoUrl(proxyURL);
}
2026-07-29 08:29:29 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, flags: null, contentScanVersion: null, isVideo: null, mediaIndex: null, srcIsAnimated: null };
2026-08-24 06:08:38 +00:00
obj[0] = closure_1_11.EMBED;
2026-07-20 16:05:17 +00:00
let tmp6 = url;
if (null != proxyURL) {
tmp6 = url;
if ("" !== proxyURL) {
tmp6 = proxyURL;
}
}
2026-07-29 08:29:29 +00:00
obj[1] = tmp6;
obj[2] = height;
obj[3] = width;
2026-08-04 08:36:32 +00:00
obj[4] = callback;
2026-07-29 08:29:29 +00:00
({ flags: obj2[5], contentScanVersion: obj2[6] } = image);
obj[7] = isVideoUrlResult;
obj[8] = arg1;
if (flags == null) {
flags = 0;
2026-07-20 16:05:17 +00:00
}
2026-08-24 06:08:38 +00:00
obj[9] = callback(closure_1_2[8]).hasFlag(flags, closure_1_9.IS_ANIMATED);
2026-07-20 16:05:17 +00:00
return obj;
}
}
});
2026-08-11 06:20:06 +00:00
let found = mapped.filter(_require(1370).isNotNullish);
2026-07-20 16:05:17 +00:00
}
return found;
}
}
found = [];
}
}
2026-07-29 08:29:29 +00:00
function useForumPostMediaProperties(firstResult, flag) {
2026-08-24 06:08:38 +00:00
const InlineAttachmentMedia = explicitContentFromProto.InlineAttachmentMedia;
2026-07-29 08:29:29 +00:00
const items = [...getForumPostMedia(firstResult, InlineAttachmentMedia.useSetting()), ...useForumPostEmbeds(firstResult, flag)];
2026-08-24 06:08:38 +00:00
const InlineEmbedMedia = explicitContentFromProto.InlineEmbedMedia;
2026-07-29 08:29:29 +00:00
if (null == firstResult) {
let items1 = [];
2026-07-20 16:05:17 +00:00
} else {
2026-07-29 08:29:29 +00:00
const components = firstResult.components;
if (tmp4) {
2026-07-20 16:05:17 +00:00
if (null != components) {
const _Array = Array;
2026-08-24 06:08:38 +00:00
const tmpResult = tmp(4810);
const flattenComponentsResult = tmp(4810).flattenComponents(components);
const arr = Array.from(tmp(4810).flattenComponents(components).values());
items1 = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-20 16:05:17 +00:00
type = type.type;
2026-07-29 08:29:29 +00:00
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
2026-07-20 16:05:17 +00:00
const items = type.items;
2026-07-29 08:29:29 +00:00
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
return tmp4;
2026-07-20 16:05:17 +00:00
});
} else {
return null;
}
2026-08-11 06:20:06 +00:00
}).filter(tmp(1370).isNotNullish);
2026-08-24 06:08:38 +00:00
const flatMapResult = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-20 16:05:17 +00:00
type = type.type;
2026-07-29 08:29:29 +00:00
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
2026-07-20 16:05:17 +00:00
const items = type.items;
2026-07-29 08:29:29 +00:00
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
2026-07-20 16:05:17 +00:00
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
2026-07-20 16:05:17 +00:00
});
} else {
return null;
}
});
}
}
2026-07-29 08:29:29 +00:00
items1 = [];
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
HermesBuiltin.arraySpread(items1, tmp3);
2026-07-20 16:05:17 +00:00
return items;
}
2026-08-24 06:08:38 +00:00
({ MessageAttachmentFlags: closure_8, MessageEmbedMediaFlags: c9 } = ME);
2026-07-23 10:11:24 +00:00
let obj = { EMBED: "embed", ATTACHMENT: "attachment", COMPONENT: "component" };
2026-08-24 06:08:38 +00:00
const result = require("set").fileFinishedImporting("modules/forums/ForumPostMediaUtils.tsx");
2026-07-20 16:05:17 +00:00
2026-07-29 08:29:29 +00:00
export const getEmbedColor = function getEmbedColor(firstResult, flag) {
2026-07-20 16:05:17 +00:00
if (null != firstResult) {
if (null != firstResult.embeds[0]) {
if (null == firstResult.embeds[0].color) {
2026-07-29 08:29:29 +00:00
if (!flag) {
2026-07-20 16:05:17 +00:00
const tmp = str;
}
}
return tmp;
}
}
};
2026-07-29 08:29:29 +00:00
export const isValidImageAttachment = function isValidImageAttachment(filename) {
if (null == filename) {
return false;
} else {
({ height, width } = filename);
2026-08-24 06:08:38 +00:00
let tmp3 = urlMatchesFileExtension.isImageFile(filename.filename) && null != height;
2026-07-29 08:29:29 +00:00
if (tmp3) {
tmp3 = height > 0;
}
if (tmp3) {
tmp3 = null != width;
}
if (tmp3) {
tmp3 = width > 0;
}
return tmp3;
}
};
export const isValidVideoAttachment = function isValidVideoAttachment(filename) {
let tmp = null != filename;
if (tmp) {
let isVideoFileResult = null != filename;
if (isVideoFileResult) {
2026-08-24 06:08:38 +00:00
isVideoFileResult = urlMatchesFileExtension.isVideoFile(filename.filename);
obj = urlMatchesFileExtension;
2026-07-29 08:29:29 +00:00
}
if (isVideoFileResult) {
isVideoFileResult = null != filename.proxy_url;
}
tmp = isVideoFileResult;
}
return tmp;
};
2026-07-20 16:05:17 +00:00
export { isMediaAttachment };
export const ForumPostMediaTypes = obj;
export { getForumPostMedia };
2026-07-29 08:29:29 +00:00
export const useForumPostComponentsMedia = function useForumPostComponentsMedia(components) {
2026-08-24 06:08:38 +00:00
const InlineEmbedMedia = explicitContentFromProto.InlineEmbedMedia;
2026-07-29 08:29:29 +00:00
if (null == components) {
return [];
} else {
components = components.components;
if (tmp3) {
if (null != components) {
const _Array = Array;
2026-08-24 06:08:38 +00:00
const tmpResult = tmp(4810);
const flattenComponentsResult = tmp(4810).flattenComponents(components);
const arr = Array.from(tmp(4810).flattenComponents(components).values());
let found = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
2026-08-11 06:20:06 +00:00
}).filter(tmp(1370).isNotNullish);
2026-08-24 06:08:38 +00:00
const flatMapResult = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
});
}
return found;
}
found = [];
}
};
2026-07-20 16:05:17 +00:00
export const useForumPostMediaThumbnail = function useForumPostMediaThumbnail(firstMessage, stateFromStores1, hasSpoilerEmbeds) {
2026-08-24 06:08:38 +00:00
closure_0 = stateFromStores1;
2026-07-29 08:29:29 +00:00
let flag = hasSpoilerEmbeds;
2026-07-20 16:05:17 +00:00
if (hasSpoilerEmbeds === undefined) {
flag = false;
}
2026-08-24 06:08:38 +00:00
closure_1 = undefined;
2026-07-20 16:05:17 +00:00
const tmp = useForumPostMediaProperties(firstMessage, flag);
2026-08-24 06:08:38 +00:00
closure_1 = tmp;
2026-07-23 10:11:24 +00:00
let items = [stateFromStores1, tmp];
2026-07-20 16:05:17 +00:00
return React.useMemo(() => {
2026-07-29 08:29:29 +00:00
if (null == closure_0) {
2026-07-20 16:05:17 +00:00
return [];
2026-07-29 08:29:29 +00:00
} else {
2026-08-24 06:08:38 +00:00
let arr = closure_1;
2026-07-29 08:29:29 +00:00
if (obj.isMediaChannel()) {
const found = arr.find((isThumbnail) => isThumbnail.isThumbnail);
if (null != found) {
const items = [found];
arr = items;
}
return arr;
2026-07-20 16:05:17 +00:00
} else {
2026-07-29 08:29:29 +00:00
return arr;
2026-07-20 16:05:17 +00:00
}
}
2026-07-29 08:29:29 +00:00
obj = closure_0;
2026-07-20 16:05:17 +00:00
}, items);
};
export { useForumPostMediaProperties };
export const useFindFirstMediaProperties = function useFindFirstMediaProperties(firstMessage, hasSpoilerEmbeds) {
2026-08-24 06:08:38 +00:00
const InlineAttachmentMedia = explicitContentFromProto.InlineAttachmentMedia;
2026-07-29 08:29:29 +00:00
const tmp3 = getForumPostMedia(firstMessage, InlineAttachmentMedia.useSetting());
2026-08-24 06:08:38 +00:00
const InlineEmbedMedia = explicitContentFromProto.InlineEmbedMedia;
2026-07-29 08:29:29 +00:00
if (null == firstMessage) {
let items = [];
} else {
const components = firstMessage.components;
if (tmp5) {
if (null != components) {
const _Array = Array;
2026-08-24 06:08:38 +00:00
const tmpResult = tmp(4810);
const flattenComponentsResult = tmp(4810).flattenComponents(components);
const arr = Array.from(tmp(4810).flattenComponents(components).values());
items = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
2026-08-11 06:20:06 +00:00
}).filter(tmp(1370).isNotNullish);
2026-08-24 06:08:38 +00:00
const flatMapResult = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
});
}
}
items = [];
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
let first = tmp3[0];
if (first == null) {
first = tmp4[0];
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (first == null) {
first = items[0];
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (first == null) {
first = null;
}
return first;
2026-07-20 16:05:17 +00:00
};
export const useFirstMediaIsEmbed = function useFirstMediaIsEmbed(firstMessage, hasSpoilerEmbeds) {
2026-08-24 06:08:38 +00:00
const InlineAttachmentMedia = explicitContentFromProto.InlineAttachmentMedia;
2026-07-29 08:29:29 +00:00
const tmp3 = getForumPostMedia(firstMessage, InlineAttachmentMedia.useSetting());
2026-08-24 06:08:38 +00:00
const InlineEmbedMedia = explicitContentFromProto.InlineEmbedMedia;
2026-07-29 08:29:29 +00:00
if (null == firstMessage) {
let items = [];
} else {
const components = firstMessage.components;
if (tmp5) {
if (null != components) {
const _Array = Array;
2026-08-24 06:08:38 +00:00
let tmpResult = tmp(4810);
const flattenComponentsResult = tmp(4810).flattenComponents(components);
const arr = Array.from(tmp(4810).flattenComponents(components).values());
items = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
2026-08-11 06:20:06 +00:00
}).filter(tmp(1370).isNotNullish);
2026-08-24 06:08:38 +00:00
const flatMapResult = Array.from(tmp(4810).flattenComponents(components).values()).flatMap((type) => {
2026-07-29 08:29:29 +00:00
type = type.type;
if (callback(table[12]).ComponentType.THUMBNAIL === type) {
({ media, spoiler } = type);
if (spoiler == null) {
spoiler = false;
}
let tmpResult = tmp(tmp2[13]);
let unfurledMediaItemType = tmpResult.getUnfurledMediaItemType(media);
let tmp6 = null;
if ("INVALID" !== unfurledMediaItemType) {
2026-08-24 06:08:38 +00:00
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
2026-07-29 08:29:29 +00:00
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
let contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
tmpResult = tmp(tmp2[8]);
obj[7] = tmpResult.hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp6 = obj;
}
return tmp6;
} else if (tmp(tmp2[12]).ComponentType.MEDIA_GALLERY === type) {
const items = type.items;
return items.map((arg0) => {
({ media, spoiler } = arg0);
if (spoiler == null) {
spoiler = false;
}
2026-08-24 06:08:38 +00:00
obj = callback(table[13]);
2026-07-29 08:29:29 +00:00
const unfurledMediaItemType = obj.getUnfurledMediaItemType(media);
let tmp4 = null;
if ("INVALID" !== unfurledMediaItemType) {
obj = { type: null, src: null, height: null, width: null, spoiler: null, contentScanVersion: null, flags: 0, srcIsAnimated: null, isVideo: null, mediaIndex: 0, srcUnfurledMediaItem: null };
obj[0] = constants.COMPONENT;
({ proxyUrl: obj3[1], height } = media);
if (height == null) {
height = 0;
}
obj[2] = height;
let num = media.width;
if (num == null) {
num = 0;
}
obj[3] = num;
obj[4] = spoiler;
const contentScanMetadata = media.contentScanMetadata;
let version;
if (contentScanMetadata != null) {
version = contentScanMetadata.version;
}
obj[5] = version;
obj[7] = tmp(tmp2[8]).hasFlag(media.flags, tmp(tmp2[13]).UnfurledMediaItemFlags.IS_ANIMATED);
obj[8] = "VIDEO" === unfurledMediaItemType;
obj[10] = media;
tmp4 = obj;
const tmpResult = tmp(tmp2[8]);
}
return tmp4;
});
} else {
return null;
}
});
}
}
items = [];
}
let tmp4 = useForumPostEmbeds(firstMessage, hasSpoilerEmbeds);
return null == tmp3[0] && null == items[0] && null != useForumPostEmbeds(firstMessage, hasSpoilerEmbeds)[0];
2026-07-20 16:05:17 +00:00
};
export const shouldShowAddMediaToOriginalPostModal = function shouldShowAddMediaToOriginalPostModal(uploads, id) {
2026-07-23 10:11:24 +00:00
channel = channel.getChannel(id);
2026-07-20 16:05:17 +00:00
if (null == channel) {
return false;
} else {
2026-08-24 06:08:38 +00:00
message = message.getMessage(channel.id, DISCORD_EPOCHDefault.castChannelIdAsMessageId(channel.id));
2026-07-29 08:29:29 +00:00
let tmp8 = null != message;
if (tmp8) {
let tmp2 = uploads.length > 0 && null != uploads.find((isImage) => isImage.isImage || isImage.isVideo) && channel.isForumPost();
if (tmp2) {
2026-07-23 10:11:24 +00:00
currentUser = currentUser.getCurrentUser();
2026-07-20 16:05:17 +00:00
id = undefined;
2026-07-29 08:29:29 +00:00
if (currentUser != null) {
2026-07-20 16:05:17 +00:00
id = currentUser.id;
}
2026-07-29 08:29:29 +00:00
tmp2 = channel.ownerId === id;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (tmp2) {
tmp2 = 0 === count.getCount(channel.id);
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
if (tmp2) {
let tmp7 = 0 === message.attachments.length;
if (!tmp7) {
2026-07-20 16:05:17 +00:00
const attachments = message.attachments;
2026-07-29 08:29:29 +00:00
tmp7 = null == attachments.find((filename) => {
let flag = false;
if (null != filename) {
({ height, width } = filename);
2026-08-24 06:08:38 +00:00
let tmp3 = callback(4816).isImageFile(filename.filename) && null != height;
2026-07-29 08:29:29 +00:00
if (tmp3) {
tmp3 = height > 0;
}
if (tmp3) {
tmp3 = null != width;
}
if (tmp3) {
tmp3 = width > 0;
}
flag = tmp3;
2026-08-24 06:08:38 +00:00
obj = callback(4816);
2026-07-29 08:29:29 +00:00
}
if (!flag) {
let tmp4 = null != filename;
if (tmp4) {
let isVideoFileResult = null != filename;
if (isVideoFileResult) {
2026-08-24 06:08:38 +00:00
isVideoFileResult = callback(4816).isVideoFile(filename.filename);
const obj2 = callback(4816);
2026-07-29 08:29:29 +00:00
}
if (isVideoFileResult) {
isVideoFileResult = null != filename.proxy_url;
}
tmp4 = isVideoFileResult;
}
flag = tmp4;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
return flag;
2026-07-20 16:05:17 +00:00
});
}
2026-07-29 08:29:29 +00:00
tmp2 = tmp7;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
tmp8 = tmp2;
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
return tmp8;
2026-07-20 16:05:17 +00:00
}
};
export const messageContainsGifOrVideo = function messageContainsGifOrVideo(media) {
return media.reduce((containsVideo, isVideo) => {
2026-08-24 06:08:38 +00:00
obj = { containsVideo: containsVideo.containsVideo || isVideo.isVideo, containsGif: null };
2026-07-20 16:05:17 +00:00
let containsGif = containsVideo.containsGif;
if (!containsGif) {
2026-07-29 08:29:29 +00:00
containsGif = callback(table[6]).isAnimatedImageUrl(isVideo.src);
const obj2 = callback(table[6]);
2026-07-20 16:05:17 +00:00
}
2026-07-29 08:29:29 +00:00
obj[1] = containsGif;
2026-07-20 16:05:17 +00:00
return obj;
2026-07-23 10:11:24 +00:00
}, { containsVideo: false, containsGif: false });
2026-07-20 16:05:17 +00:00
};