Files
discord-decomp/utils/ApplicationAssetUtils.tsx
T
2026-11-01 12:12:55 +02:00

427 lines
12 KiB
TypeScript

// Metro module 7917 (f7918).
import ApplicationAssetsStore from "../modules/applications/ApplicationAssetsStore";
import { Endpoints, PlatformTypes } from "../Constants";
import Module38 from "../_bundle/Module38";
import Logger from "../modules/debug/Logger";
import { HTTP, getAPIBaseURL } from "../_bundle/sendRequest";
import Dispatcher from "../Dispatcher";
import { getBestMediaProxySize } from "../modules/image_upload/ImageLoaderUtils";
function $mk79522() {
return (a0) => (a0 == null ? void 0 : a0.startsWith("http:")) || (a0 == null ? void 0 : a0.startsWith("https:"));
}
function $mk115082($env) {
return function resolveExternalAssets() {
return $env[18].apply(this, arguments);
};
}
function $mk115083($env) {
return () => {
const r5 = $env;
return (0, fetchAssetIds)(r5[0], r5[1], r5[2] - 1);
};
}
let getApplicationAssetsMap, getAssets, updateUrlAssetIds, updateNonUrlAssetIds, fetchAssetIds, c5004_8, c5004_9, c5004_10, c5004_11, c5004_12;
let env5004 = {};
const updateAssets = async function updateAssets(c26061_0) {
let c29863_0 = c26061_0;
let c29863_1 = (await HTTP.get({
url: Endpoints.APPLICATION_ASSETS(c26061_0),
oldFormErrors: true,
rejectWithError: false
})).body;
Dispatcher.dispatch({
type: "APPLICATION_ASSETS_UPDATE",
applicationId: c29863_0,
assets: c29863_1
});
return ApplicationAssetsStore.getApplicationAssets(c29863_0);
};
getApplicationAssetsMap = function getApplicationAssetsMap(a0) {
let r15;
const applicationAssets = ApplicationAssetsStore.getApplicationAssets(a0);
if (applicationAssets != null) {
const lastUpdated = applicationAssets.lastUpdated;
r15 = Date.now() - lastUpdated > 3600000 ? updateAssets(a0) : Promise.resolve(applicationAssets);
} else {
r15 = updateAssets(a0);
}
return r15;
};
getAssets = async function getAssets(c26062_0) {
let c29864_0 = await getApplicationAssetsMap(c26062_0);
return c29864_0?.assets;
};
env5004[18] = function _resolveExternalAssets() {
const r8 = async (c26063_0, c26063_1) => {
let r30;
let c26063_2, c26063_3, c26063_4, c26063_5, c26063_6;
let c26063_7 = 0;
const r9 = env5004;
L15: {
try {
let env29865;
c26063_5 = r9;
const r38 = env29865 = {
$parent: r9
};
c26063_4 = r38;
env29865[0] = void 0;
env29865[1] = void 0;
env29865[2] = void 0;
env29865[3] = void 0;
const urls = c26063_1.filter((item) => item != null && c5004_12.get(item) == null);
if (urls.length !== 0) {
env29865[0] = (await HTTP.post({
url: Endpoints.APPLICATION_EXTERNAL_ASSETS(c26063_0),
body: {
urls
},
oldFormErrors: true,
rejectWithError: false
})).body;
const r69 = env29865[0];
c26063_3 = r69;
const r71 = r69[Symbol.iterator]();
c26063_3 = r71.next;
c26063_2 = r71;
while (true) {
const r73 = c26063_3;
let r74 = c26063_2;
const r75 = r74 === void 0 ? void 0 : (r30 = r73.call(r74)).done ? r74 = void 0 : r30.value;
c26063_2 = r74;
if (r74 === void 0) {
break L15;
}
c26063_7 = 1;
env29865[1] = r75;
env29865[2] = env29865[1].url;
env29865[3] = env29865[1].external_asset_path;
c5004_12.set(env29865[2], env29865[3]);
c26063_7 = 0;
}
}
} catch ($e) {
const r36 = $e;
let r7 = r36;
c26063_6 = r36;
if (c26063_7 !== 0) {
while (true) {
try {
const r93 = c26063_6;
c26063_7 = 0;
const r95 = c26063_2;
if (r95 !== void 0 && typeof r95.return === "function") {
try {
r95.return();
} catch {}
}
throw r93;
} catch (r91) {
r7 = r91;
c26063_6 = r91;
if (c26063_7 === 0) {
break;
}
}
}
}
throw r7;
}
return void 0;
}
};
env5004[18] = r8;
return r8.apply(this, arguments);
};
updateUrlAssetIds = function updateUrlAssetIds(a0, a1) {
let length;
const r21 = a0.filter($mk79522()).length > 0;
let r6 = 0;
if (r21) {
const r8 = 0 < a0.length;
let r1 = 0;
let r2 = 0;
r6 = 0;
if (r8) {
do {
const r18 = a0[r1];
const r25 = r1;
const r3 = r2;
let r0 = r3;
if (r18 != null) {
const r27 = c5004_12.get(r18);
r0 = r3;
if (r27 != null) {
const r31 = c5004_11.mp.serialize(r27);
a1[r25] = r31 ? `mp:${r31.toString()}` : null;
r0 = r3 + 1;
}
}
r1 = r25 + 1;
length = a0.length;
r2 = r0;
r6 = r2;
} while (r1 < length);
}
}
return r6 === a0.length;
};
updateNonUrlAssetIds = function updateNonUrlAssetIds(a0, a1, a2, a3) {
let r1, r6, r20, length;
const r4 = 0 < a0.length;
let r5 = false;
let r0 = 0;
let r8 = false;
if (r4) {
do {
L13: {
const r18 = a0[r0];
r1 = r0;
const r7 = r5;
r20 = r7;
if (r18 != null) {
const r21 = a1[r1];
r20 = r7;
if (r21 == null) {
const r25 = Object.prototype.hasOwnProperty.call(a2, r18) && a2[r18];
L12: {
r6 = r7;
if (!r25) {
if (a3 != null) {
const r10 = a3 <= 0;
r6 = true;
if (!r10) {
break L12;
}
}
a1[r1] = null;
r20 = r7;
break L13;
}
}
a1[r1] = r25.id;
r20 = r6;
}
}
}
r0 = r1 + 1;
length = a0.length;
r5 = r20;
r8 = r5;
} while (r0 < length);
}
return r8;
};
fetchAssetIds = async function fetchAssetIds(c26064_0, c26064_1, c26064_2) {
let r91, r130;
let c26064_3, c26064_4;
L22: {
let env29866;
const r33 = env5004;
c26064_4 = r33;
const r10 = env29866 = {
$parent: r33
};
c26064_3 = r10;
env29866[2] = void 0;
env29866[0] = c26064_0;
env29866[1] = c26064_1;
if (c26064_2 !== void 0) {
env29866[2] = c26064_2;
env29866[3] = void 0;
env29866[4] = void 0;
env29866[5] = void 0;
} else {
env29866[2] = 1;
env29866[3] = void 0;
env29866[4] = void 0;
env29866[5] = void 0;
}
await void 0;
Dispatcher.dispatch({
type: "APPLICATION_ASSETS_FETCH",
applicationId: env29866[0]
});
env29866[3] = [];
env29866[4] = env29866[1].filter((item) => (item == null ? void 0 : item.startsWith("http:")) || (item == null ? void 0 : item.startsWith("https:")));
if (env29866[4].length > 0) {
const r68 = env29866[0];
const r69 = env29866[4];
await $mk115082(env5004)(r68, r69);
}
if ((0, updateUrlAssetIds)(env29866[1], env29866[3])) {
Dispatcher.dispatch({
type: "APPLICATION_ASSETS_FETCH_SUCCESS",
applicationId: env29866[0]
});
r91 = env29866[3];
break L22;
}
env29866[5] = await (0, getAssets)(env29866[0]);
Dispatcher.dispatch({
type: "APPLICATION_ASSETS_UPDATE",
applicationId: env29866[0],
assets: env29866[5]
});
const r122 = (0, updateNonUrlAssetIds)(env29866[1], env29866[3], env29866[5], env29866[2]);
const r123 = c26064_3;
if (r122) {
r130 = (0, updateAssets)(env29866[0]).then($mk115083(r123));
} else {
Dispatcher.dispatch({
type: "APPLICATION_ASSETS_FETCH_SUCCESS",
applicationId: env29866[0]
});
r130 = env29866[3];
}
return r130;
}
return r91;
};
const PlatformTypes2 = PlatformTypes;
c5004_8 = "https://i.scdn.co/image/";
c5004_9 = /https:\/\/static-cdn\.jtvnw\.net\/previews-ttv\/live_user_(.+)-\{width\}x\{height\}.jpg/;
c5004_10 = /https:\/\/i\.ytimg\.com\/vi\/([a-zA-Z0-9_-]+)\/hqdefault_live\.jpg/;
const r39 = {};
r39[PlatformTypes2.SPOTIFY] = {
deserialize: (a0) => `${c5004_8}${encodeURIComponent(a0)}`,
serialize: (a0) => a0.split(c5004_8)[1]
};
r39[PlatformTypes2.TWITCH] = {
deserialize: (a0, a1) => `https://static-cdn.jtvnw.net/previews-ttv/live_user_${encodeURIComponent(a0)}-${a1[0]}x${a1[1]}.jpg`,
serialize: (a0) => {
const r5 = a0.match(c5004_9);
return r5 != null ? r5[1] : null;
}
};
r39[PlatformTypes2.YOUTUBE] = {
deserialize: (a0) => `https://i.ytimg.com/vi/${encodeURIComponent(a0)}/hqdefault_live.jpg`,
serialize: (a0) => {
const r5 = a0.match(c5004_10);
return r5 != null ? r5[1] : null;
}
};
r39.mp = {
deserialize: (a0) => {
let uRL;
Module38(window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT != null, "MEDIA_PROXY_ENDPOINT not configured");
try {
uRL = new URL(a0, location.protocol + window.GLOBAL_ENV.MEDIA_PROXY_ENDPOINT);
} catch ($e) {
new Logger("ApplicationAssetUtils").warn(`getAssetImage: invalid media proxy asset path: ${a0}`);
return void 0;
}
let r36 = a0.toLowerCase().endsWith(".gif");
const r40 = a0.toLowerCase().endsWith(".webp");
const r44 = a0.toLowerCase().endsWith(".avif");
if (r36 ? r36 : r44) {
uRL.searchParams.set("format", "webp");
}
if (!r36) {
r36 = r40;
}
if (!r36) {
r36 = r44;
}
if (r36) {
uRL.searchParams.set("animated", "true");
}
return uRL.toString();
},
serialize: (a0) => a0
};
c5004_11 = r39;
c5004_12 = new Map();
export function getAssetFromImageURL(a0, a1) {
const r8 = c5004_11[a0].serialize(a1);
return r8 ? `${a0}:${r8.toString()}` : null;
}
export function getAssetImage(a0, a1, a2, r18 = "png") {
let r90, r97;
if (a1 != null && a1.includes(":")) {
const [r79, r80] = a1.split(":");
if (r79 === PlatformTypes.TWITCH) {
if (a2 != null && typeof a2 !== "number") {
r97 = c5004_11[PlatformTypes.TWITCH].deserialize(r80, a2);
} else {
new Logger("ApplicationAssetUtils").warn("getAssetImage: size must === [number, number] for Twitch");
r97 = void 0;
}
r90 = r97;
} else {
const hasOwnProperty = Object.prototype.hasOwnProperty;
r90 = hasOwnProperty.call(c5004_11, r79) ? c5004_11[r79].deserialize(r80) : void 0;
}
return r90;
}
if (a0 != null && a1 != null) {
const isArray = Array.isArray(a2);
let r10 = a2;
if (isArray) {
const r11 = Math;
r10 = r11.max.apply(r11, [...a2]);
}
const r15 = typeof r10 === "number" ? `?size=${getBestMediaProxySize(r10)}` : "";
return window.GLOBAL_ENV.CDN_HOST != null ? `${location.protocol}//${window.GLOBAL_ENV.CDN_HOST}/app-assets/${a0}/${a1}.${r18}${r15}` : `${getAPIBaseURL()}/applications/${a0}/app-assets/${a1}.${r18}${r15}`;
}
}
export { getAssets };
export { fetchAssetIds };
export function getAssetIds(a0, a1) {
let length;
const r10 = [];
const r8 = a1.filter($mk79522()).length > 0;
let r5 = 0;
if (r8) {
const r9 = 0 < a1.length;
let r3 = 0;
let r0 = 0;
r5 = 0;
if (r9) {
do {
const r20 = a1[r3];
const r7 = r3;
const r4 = r0;
let r1 = r4;
if (r20 != null) {
const r27 = c5004_12.get(r20);
r1 = r4;
if (r27 != null) {
const r31 = c5004_11.mp.serialize(r27);
r10[r7] = r31 ? `mp:${r31.toString()}` : null;
r1 = r4 + 1;
}
}
r3 = r7 + 1;
length = a1.length;
r0 = r1;
r5 = r0;
} while (r3 < length);
}
}
if (r5 === a1.length) {
return r10;
}
const assets = ApplicationAssetsStore.getApplicationAssets(a0)?.assets;
if (assets != null) {
const r47 = 0 < a1.length;
let r50 = 0;
if (r47) {
do {
const r51 = a1[r50];
const r52 = r50;
if (r51 != null && r10[r52] == null) {
const r58 = Object.prototype.hasOwnProperty.call(assets, r51) && assets[r51];
if (r58) {
r10[r52] = r58.id;
} else {
r10[r52] = null;
}
}
r50 = r52 + 1;
} while (r50 < a1.length);
}
}
return r10;
}