mirror of
https://github.com/captbaritone/webamp.git
synced 2026-07-21 00:59:29 +00:00
Improve user uploads
This commit is contained in:
parent
6fb4deb19c
commit
90eb057f86
1 changed files with 26 additions and 2 deletions
|
|
@ -4,30 +4,50 @@ import { addSkinFromBuffer } from "../addSkin";
|
|||
import { EventHandler } from "./app";
|
||||
|
||||
async function* reportedUploads() {
|
||||
const upload = await Skins.getReportedUpload();
|
||||
if (upload != null) {
|
||||
const seen = new Set();
|
||||
while (true) {
|
||||
const upload = await Skins.getReportedUpload();
|
||||
if (upload == null) {
|
||||
return;
|
||||
}
|
||||
if (seen.has(upload.id)) {
|
||||
await Skins.recordUserUploadErrored(upload.id);
|
||||
console.error("Saw the same upload twice. It didn't get handled?");
|
||||
return;
|
||||
}
|
||||
seen.add(upload.id);
|
||||
yield upload;
|
||||
}
|
||||
}
|
||||
|
||||
let processing = false;
|
||||
|
||||
function log(...args: any[]) {
|
||||
console.log(...args);
|
||||
}
|
||||
|
||||
export async function processUserUploads(eventHandler: EventHandler) {
|
||||
log("process user uploads");
|
||||
// Ensure we only have one worker processing requests.
|
||||
if (processing) {
|
||||
return;
|
||||
}
|
||||
processing = true;
|
||||
const uploads = reportedUploads();
|
||||
log("Uploads to process: ", uploads);
|
||||
for await (const upload of uploads) {
|
||||
log("Going to try: ", upload);
|
||||
try {
|
||||
const buffer = await S3.getUploadedSkin(upload.id);
|
||||
log("Got buffer: ", upload);
|
||||
const result = await addSkinFromBuffer(
|
||||
buffer,
|
||||
upload.filename,
|
||||
"Web API"
|
||||
);
|
||||
log("Added skin from buffer: ", upload, result);
|
||||
await Skins.recordUserUploadArchived(upload.id);
|
||||
log("Recorded upload archived: ", upload);
|
||||
if (result.status === "ADDED") {
|
||||
const action = {
|
||||
type:
|
||||
|
|
@ -36,10 +56,14 @@ export async function processUserUploads(eventHandler: EventHandler) {
|
|||
: "MODERN_SKIN_UPLOADED",
|
||||
md5: result.md5,
|
||||
} as const;
|
||||
log("Skin was added, sending action:", action);
|
||||
eventHandler(action);
|
||||
log("Action sent:", action);
|
||||
}
|
||||
} catch (e) {
|
||||
log("Upload errored, going to report it:", upload);
|
||||
await Skins.recordUserUploadErrored(upload.id);
|
||||
log("Recorded upload errored:", upload);
|
||||
const action = {
|
||||
type: "SKIN_UPLOAD_ERROR",
|
||||
uploadId: upload.id,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue