fix: use configured furni source and catalog assets
This commit is contained in:
1 parent
aed70db81f
commit
c78f8812ad
25 files changed
+368
-129
No files matched your search
@@ -1,16 +1,11 @@
|
||||
import { promises as fs } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { withAdmin } from "@/lib/api-handler";
|
||||
import { apiOk } from "@/lib/api-response";
|
||||
import { PERMS } from "@/lib/permissions";
|
||||
|
||||
const CATALOGUE_DIR = path.join(
|
||||
/*turbopackIgnore: true*/ process.cwd(),
|
||||
"public",
|
||||
"swf",
|
||||
"c_images",
|
||||
"catalogue",
|
||||
);
|
||||
import {
|
||||
catalogueAssetDirectories,
|
||||
readCatalogueAssetFiles,
|
||||
} from "@/lib/services/catalog-assets";
|
||||
import { getGamedataRoot } from "@/lib/services/furni-asset-dirs";
|
||||
|
||||
export const GET = withAdmin(
|
||||
{ permission: PERMS.CATALOG_VIEW },
|
||||
@@ -23,18 +18,14 @@ export const GET = withAdmin(
|
||||
const offset = Math.max(Number(sp.get("offset") || 0) || 0, 0);
|
||||
const search = (sp.get("search") || "").trim().toLowerCase();
|
||||
|
||||
let icons: number[] = [];
|
||||
try {
|
||||
const files = await fs.readdir(CATALOGUE_DIR);
|
||||
icons = files
|
||||
.map((f) => /^icon_(\d+)\.(?:png|gif)$/i.exec(f))
|
||||
.filter((m): m is RegExpExecArray => Boolean(m))
|
||||
.map((m) => Number(m[1]))
|
||||
.filter((n) => Number.isFinite(n))
|
||||
.sort((a, b) => a - b);
|
||||
} catch {
|
||||
icons = [];
|
||||
}
|
||||
const directories = catalogueAssetDirectories(await getGamedataRoot());
|
||||
const files = await readCatalogueAssetFiles(directories);
|
||||
let icons = files
|
||||
.map((f) => /^icon_(\d+)\.(?:png|gif)$/i.exec(f))
|
||||
.filter((m): m is RegExpExecArray => Boolean(m))
|
||||
.map((m) => Number(m[1]))
|
||||
.filter((n) => Number.isFinite(n))
|
||||
.sort((a, b) => a - b);
|
||||
|
||||
if (search) {
|
||||
icons = icons.filter((id) => String(id).includes(search));
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
import { promises as fs } from "node:fs";
|
||||
import path from "node:path";
|
||||
import { withAdmin } from "@/lib/api-handler";
|
||||
import { apiOk } from "@/lib/api-response";
|
||||
import { PERMS } from "@/lib/permissions";
|
||||
|
||||
const CATALOGUE_DIR = path.join(
|
||||
/*turbopackIgnore: true*/ process.cwd(),
|
||||
"public",
|
||||
"swf",
|
||||
"c_images",
|
||||
"catalogue",
|
||||
);
|
||||
import {
|
||||
catalogueAssetDirectories,
|
||||
readCatalogueAssetFiles,
|
||||
} from "@/lib/services/catalog-assets";
|
||||
import { getGamedataRoot } from "@/lib/services/furni-asset-dirs";
|
||||
|
||||
export const GET = withAdmin(
|
||||
{ permission: PERMS.CATALOG_VIEW },
|
||||
@@ -25,20 +20,17 @@ export const GET = withAdmin(
|
||||
const type = sp.get("type") || "all";
|
||||
|
||||
let names: string[] = [];
|
||||
try {
|
||||
const files = await fs.readdir(CATALOGUE_DIR);
|
||||
const seen = new Set<string>();
|
||||
for (const file of files) {
|
||||
if (/^icon_\d+\./i.test(file)) continue;
|
||||
const base = file.replace(/\.(png|gif|jpg|jpeg|webp)$/i, "");
|
||||
if (!base || seen.has(base)) continue;
|
||||
seen.add(base);
|
||||
names.push(base);
|
||||
}
|
||||
names.sort((a, b) => a.localeCompare(b));
|
||||
} catch {
|
||||
names = [];
|
||||
const directories = catalogueAssetDirectories(await getGamedataRoot());
|
||||
const files = await readCatalogueAssetFiles(directories);
|
||||
const seen = new Set<string>();
|
||||
for (const file of files) {
|
||||
if (/^icon_\d+\./i.test(file)) continue;
|
||||
const base = file.replace(/\.(png|gif|jpg|jpeg|webp)$/i, "");
|
||||
if (!base || seen.has(base)) continue;
|
||||
seen.add(base);
|
||||
names.push(base);
|
||||
}
|
||||
names.sort((a, b) => a.localeCompare(b));
|
||||
|
||||
if (type === "header") {
|
||||
names = names.filter((n) => /header/i.test(n));
|
||||
|
||||
Reference in new issue
Block a user