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

194 lines
5.6 KiB
TypeScript

// Metro module 4723 (f4724).
import { getClipCreatedAt, getClipParticipantIds, getClipEventsTimeline } from "../modules/clips/clipPayloadUtils";
import { UploadPlatform } from "../lib/uploader/Upload";
let c2881_2 = [{
reName: /\.jpe?g$/i,
name: (a0) => `image${a0}.jpg`,
type: "image/jpeg"
}, {
reName: /\.jfif$/i,
name: (a0) => `image${a0}.jpg`,
type: "image/jpeg"
}, {
reName: /\.png$/i,
name: (a0) => `image${a0}.png`,
type: "image/png"
}, {
reName: /\.gif$/i,
name: (a0) => `image${a0}.gif`,
type: "image/gif"
}, {
reName: /\.webp$/i,
name: (a0) => `image${a0}.webp`,
type: "image/webp"
}, {
reName: /\.avif$/i,
name: (a0) => `image${a0}.avif`,
type: "image/avif"
}, {
reName: /\.heic$/i,
name: (a0) => `image${a0}.heic`,
type: "image/heic"
}, {
reName: /\.heif$/i,
name: (a0) => `image${a0}.heif`,
type: "image/heif"
}, {
reName: /\.dng$/i,
name: (a0) => `image${a0}.dng`,
type: "image/x-adobe-dng"
}, {
reName: /\.mov$/i,
name: (a0) => `video${a0}.mov`,
type: "video/quicktime"
}, {
reName: /\.qt$/i,
name: (a0) => `video${a0}.qt`,
type: "video/quicktime"
}, {
reName: /\.avi$/i,
name: (a0) => `video${a0}.avi`,
type: "video/x-msvideo"
}, {
reName: /\.mp4$/i,
name: (a0) => `video${a0}.mp4`,
type: "video/mp4"
}, {
reName: /\.webm$/i,
name: (a0) => `video${a0}.webm`,
type: "image/webm"
}];
export const MAX_TOTAL_ATTACHMENT_SIZE = 524288000;
export const MAX_TOTAL_ATTACHMENT_SIZE_MB = 500;
export function getAttachmentPayload(a0, r5 = null) {
let id = r5 == null ? void 0 : r5.toString();
if (id == null) {
id = a0.id;
}
const r13 = {
id
};
if (a0.description != null) {
r13.description = a0.description;
}
let filename = arguments[2];
if (filename == null) {
filename = a0.filename;
}
r13.filename = filename;
r13.uploaded_filename = a0.uploadedFilename;
if (a0.spoiler) {
r13.is_spoiler = true;
}
if ("durationSecs" in a0 && a0.durationSecs != null) {
r13.duration_secs = a0.durationSecs;
}
if ("waveform" in a0 && a0.waveform != null) {
r13.waveform = a0.waveform;
}
if ("isThumbnail" in a0 && a0.isThumbnail === true) {
r13.is_thumbnail = a0.isThumbnail;
}
if ("clip" in a0 && a0.clip != null) {
r13.is_clip = true;
r13.title = a0.clip.name;
r13.application_id = a0.clip.applicationId;
r13.clip_created_at = getClipCreatedAt(a0.clip.createdAt);
r13.clip_participant_ids = getClipParticipantIds(a0.clip.users);
r13.clip_remote_id = a0.clip.remoteClipId;
r13.clip_events_timeline = getClipEventsTimeline(a0.clip);
}
if ("item" in a0 && a0.item != null && a0.item.platform === UploadPlatform.WEB && "mimeType" in a0 && a0.mimeType != null) {
r13.original_content_type = a0.mimeType;
}
return r13;
}
export function getFileData(c14402_0) {
let c14402_1 = new XMLHttpRequest();
return new Promise((c25265_0, c25265_1) => {
c14402_1.open("GET", c14402_0, true);
c14402_1.responseType = "blob";
c14402_1.onabort = (a0) => c25265_1(a0);
c14402_1.onerror = (a0) => c25265_1(a0);
c14402_1.ontimeout = (a0) => c25265_1(a0);
c14402_1.onload = () => c25265_0(c14402_1 == null ? void 0 : c14402_1.response?.data);
c14402_1.send();
});
}
export function getFileContentLength(c14403_0) {
return new Promise((c25266_0, reject) => {
const xMLHttpRequest = new XMLHttpRequest();
let c25266_2 = xMLHttpRequest;
xMLHttpRequest.open("HEAD", c14403_0, true);
xMLHttpRequest.onload = () => {
L7: {
if (c25266_2.status >= 200 && c25266_2.status < 300) {
const responseHeader = c25266_2.getResponseHeader("Content-Length");
if (responseHeader != null && responseHeader !== "") {
c25266_0(parseInt(responseHeader, 10));
break L7;
}
reject(new Error("Content-Length header is missing"));
} else {
reject(new Error(`HTTP request failed with status code ${c25266_2.status}`));
}
}
};
xMLHttpRequest.onerror = reject;
xMLHttpRequest.onabort = reject;
xMLHttpRequest.ontimeout = reject;
xMLHttpRequest.send();
});
}
export function getFile(a0) {
let filename;
const { uri, i: r9, overrideFilename } = a0;
let overrideType = a0.overrideType;
const r17 = uri.split("/");
const r11 = r17[r17.length - 1];
let c14404_1 = r11;
const r22 = r11.split("?");
const r1 = r22 == null;
let r23 = void 0;
if (!r1) {
const r24 = r22[0];
r23 = r24 == null ? void 0 : r24.toLowerCase();
}
if (r23 == null) {
r23 = "";
}
c14404_1 = r23;
const r31 = c2881_2.find((item) => item.reName.test(c14404_1));
const r33 = r31 == null && overrideFilename != null ? c2881_2.find((item) => item.reName.test(overrideFilename)) : r31;
if (r33 != null && overrideFilename != null) {
const r14 = r33.name(r9).split(".").pop();
const r12 = overrideFilename.lastIndexOf(".");
filename = r12 !== -1 ? `${overrideFilename.substr(0, r12)}.${r14}` : `${overrideFilename}.${r14}`;
} else {
filename = r33 != null ? r33.name(r9) : overrideFilename == null ? "unknown" : overrideFilename;
}
let type = overrideType == null ? r33?.type : overrideType;
if (type == null) {
type = "unknown";
}
let r61 = overrideType == null ? r33 == null ? void 0 : r33.name(r9) : overrideType;
if (r61 == null) {
r61 = "";
}
const r57 = {
uri,
filename,
type,
isVideo: r61.indexOf("video") !== -1,
isImage: null
};
if (overrideType == null) {
overrideType = r33 == null ? void 0 : r33.name(r9);
}
if (overrideType == null) {
overrideType = "";
}
r57.isImage = overrideType.indexOf("image") !== -1;
return r57;
}