Backfill missing nitros into the Gamedata bundle on import
After each single import, batch import and batch-regen, copy every .nitro file that is missing from /var/www/Gamedata/bundled/furniture so the emulator can render all imported furniture even when the mirror write was skipped. Reports the copied files in the API/SSE response.
This commit is contained in:
1 parent
99e77d9872
commit
bcd24bfca4
4 files changed
+77
-1
No files matched your search
@@ -11,7 +11,12 @@ import {
|
||||
buildFurniEntry,
|
||||
readFurniData,
|
||||
} from "@/lib/services/furni-data";
|
||||
import { downloadFile, ensureDirectories } from "@/lib/services/furni-import";
|
||||
import {
|
||||
downloadFile,
|
||||
ensureDirectories,
|
||||
ensureFurniOwnership,
|
||||
syncNitrosToGamedataBundle,
|
||||
} from "@/lib/services/furni-import";
|
||||
import { getOfficialHabboFurnidata } from "@/lib/services/habbo-furnidata-cache";
|
||||
import { rcon } from "@/lib/services/rcon";
|
||||
import { convertSwfToNitro } from "@/lib/services/swf-to-nitro";
|
||||
@@ -254,12 +259,20 @@ export const POST = withAdmin(
|
||||
/* non-fatal */
|
||||
}
|
||||
|
||||
// Keep regenerated assets readable by the web server
|
||||
const ownership = await ensureFurniOwnership();
|
||||
|
||||
// Backfill any missing nitros into the emulator's Gamedata bundle
|
||||
const nitrosSynced = await syncNitrosToGamedataBundle();
|
||||
|
||||
send({
|
||||
type: "regen_complete",
|
||||
succeeded,
|
||||
failed,
|
||||
skipped,
|
||||
furniDataAdded: furniDataEntries.length,
|
||||
ownershipFixed: ownership.fixed,
|
||||
nitrosSynced: nitrosSynced.copied,
|
||||
duration: Date.now() - startTime,
|
||||
});
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
ensureFurniOwnership,
|
||||
importSingleFurni,
|
||||
reconcileImportedOfferIds,
|
||||
syncNitrosToGamedataBundle,
|
||||
} from "@/lib/services/furni-import";
|
||||
import { rcon } from "@/lib/services/rcon";
|
||||
import type { ImportSingleResult } from "@/types/furni";
|
||||
@@ -216,9 +217,11 @@ export const POST = withAdmin(
|
||||
// Reconcile offer_id and fix asset ownership across the whole tree
|
||||
let offerIdsFixed = 0;
|
||||
let ownershipFixed: string[] = [];
|
||||
let nitrosSynced: string[] = [];
|
||||
try {
|
||||
offerIdsFixed = (await reconcileImportedOfferIds()).fixed;
|
||||
ownershipFixed = (await ensureFurniOwnership()).fixed;
|
||||
nitrosSynced = (await syncNitrosToGamedataBundle()).copied;
|
||||
} catch (err) {
|
||||
console.warn(
|
||||
"[import-furni] Post-import reconcile/ownership failed:",
|
||||
@@ -233,6 +236,7 @@ export const POST = withAdmin(
|
||||
warnings: withWarnings,
|
||||
offerIdsFixed,
|
||||
ownershipFixed,
|
||||
nitrosSynced,
|
||||
duration: Date.now() - startTime,
|
||||
});
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ import {
|
||||
importSingleFurni,
|
||||
reconcileImportedOfferIds,
|
||||
resetCatalogPageCache,
|
||||
syncNitrosToGamedataBundle,
|
||||
} from "@/lib/services/furni-import";
|
||||
import { getOfficialHabboFurnidata } from "@/lib/services/habbo-furnidata-cache";
|
||||
import { listFurniture } from "@/lib/services/habbofurni";
|
||||
@@ -411,6 +412,9 @@ export const POST = withAdmin(
|
||||
// Keep asset + furnidata folders readable by the web server
|
||||
const ownership = await ensureFurniOwnership();
|
||||
|
||||
// Backfill any missing nitros into the emulator's Gamedata bundle
|
||||
const nitrosSynced = await syncNitrosToGamedataBundle();
|
||||
|
||||
const succeeded = results.filter((r) => r.ok).length;
|
||||
const failed = results.filter((r) => !r.ok).length;
|
||||
|
||||
@@ -421,6 +425,7 @@ export const POST = withAdmin(
|
||||
results,
|
||||
offerIdsFixed: reconciled.fixed,
|
||||
ownershipFixed: ownership.fixed,
|
||||
nitrosSynced: nitrosSynced.copied,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -476,6 +481,9 @@ export const POST = withAdmin(
|
||||
// Keep asset + furnidata folders readable by the web server
|
||||
const ownership = await ensureFurniOwnership();
|
||||
|
||||
// Backfill any missing nitros into the emulator's Gamedata bundle
|
||||
const nitrosSynced = await syncNitrosToGamedataBundle();
|
||||
|
||||
logAudit({
|
||||
userId: ctx.session.user.id,
|
||||
action: "furni_import",
|
||||
@@ -498,6 +506,7 @@ export const POST = withAdmin(
|
||||
catalogItemId: result.catalogItemId,
|
||||
offerIdsFixed: reconciled.fixed,
|
||||
ownershipFixed: ownership.fixed,
|
||||
nitrosSynced: nitrosSynced.copied,
|
||||
spriteCount: result.spriteCount,
|
||||
warnings: result.warnings,
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user