Панель видит моды Build 42 и названия больших сборок
В Build 42 mod.info лежит не в корне мода, а в папке версии: common, 42, 42.16. Сканер смотрел только в корень, и такие моды выглядели нескачанными с неизвестным Mod ID — включить их через панель было нельзя. На реальной мастерской находилось 237 модов из 399. Названия из мастерской фронтенд запрашивал одним списком, а эндпоинт не принимает больше двухсот идентификаторов за раз. У сборки на 284 пакета запрос падал целиком, ошибка молча проглатывалась, и вместо названий оставались одни номера. Теперь запрос идёт партиями, а полная неудача больше не остаётся незамеченной. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+28
-5
@@ -1267,13 +1267,36 @@ function renderMods() {
|
||||
.join("") || `<li class="muted">${t("mods.empty")}</li>`;
|
||||
}
|
||||
|
||||
// LOOKUP_BATCH — сколько идентификаторов уходит в Steam за раз. Сервер не
|
||||
// принимает больше двух сотен, а у крупной сборки их втрое больше: одним
|
||||
// запросом список названий не пришёл бы вовсе.
|
||||
const LOOKUP_BATCH = 100;
|
||||
|
||||
async function lookupWorkshopTitles() {
|
||||
if (!mods.workshop.length) return;
|
||||
const data = await post("/api/mods/lookup", { ids: mods.workshop });
|
||||
(data.items || []).forEach((item) => {
|
||||
mods.details[item.id] = item;
|
||||
});
|
||||
renderMods();
|
||||
|
||||
let failure = null;
|
||||
let received = 0;
|
||||
for (let from = 0; from < mods.workshop.length; from += LOOKUP_BATCH) {
|
||||
const ids = mods.workshop.slice(from, from + LOOKUP_BATCH);
|
||||
try {
|
||||
const data = await post("/api/mods/lookup", { ids });
|
||||
(data.items || []).forEach((item) => {
|
||||
mods.details[item.id] = item;
|
||||
received++;
|
||||
});
|
||||
// Рисуем по мере ответов: у сотен модов ожидание заметно.
|
||||
renderMods();
|
||||
} catch (error) {
|
||||
failure = error;
|
||||
}
|
||||
}
|
||||
|
||||
// Без интернета названий не будет, и это не ошибка панели — но молчать тоже
|
||||
// нельзя: иначе непонятно, почему вместо названий одни номера.
|
||||
if (failure && received === 0) {
|
||||
toast(t("mods.titlesFailed", { reason: failure.message }), "err");
|
||||
}
|
||||
}
|
||||
|
||||
// moveEnabled двигает мод в списке загрузки на delta позиций.
|
||||
|
||||
Reference in New Issue
Block a user