fix(catalog): use avatar icons and repair exports
This commit is contained in:
+10
-5
@@ -9,7 +9,11 @@ import {
|
||||
catalogVersions,
|
||||
catalogWeapons,
|
||||
} from "@/db/schema";
|
||||
import { characterDetailSchema, constellationSnapshot } from "@/lib/catalog/lunaris";
|
||||
import {
|
||||
avatarIconName,
|
||||
characterDetailSchema,
|
||||
constellationSnapshot,
|
||||
} from "@/lib/catalog/lunaris";
|
||||
import { getMediaStorage } from "@/lib/media/storage";
|
||||
|
||||
const VERSION_URL = "https://api.lunaris.moe/data/version.json";
|
||||
@@ -21,7 +25,7 @@ const versionSchema = z.object({
|
||||
});
|
||||
const characterSchema = z.record(z.string(), z.object({
|
||||
enName: z.string(),
|
||||
GachaImg: z.string(),
|
||||
CardImg: z.string(),
|
||||
element: z.string().optional(),
|
||||
qualityType: z.string().optional(),
|
||||
weaponType: z.string().optional(),
|
||||
@@ -120,14 +124,15 @@ export async function processCatalogSyncJob(jobId: string): Promise<void> {
|
||||
const artifactData = artifactSchema.parse(artifactsRaw);
|
||||
|
||||
let characters = await mapConcurrent(
|
||||
Object.entries(characterData).filter(([, value]) => value.enName && value.enName !== "???" && value.GachaImg),
|
||||
Object.entries(characterData).filter(([, value]) => value.enName && value.enName !== "???" && value.CardImg),
|
||||
async ([key, value]) => {
|
||||
const detailRaw = await getOptionalJson(`${API_ROOT}/${version}/en/char/${encodeURIComponent(key)}.json`);
|
||||
const detail = detailRaw ? characterDetailSchema.parse(detailRaw) : null;
|
||||
const avatarIcon = webpName(avatarIconName(value.CardImg));
|
||||
return {
|
||||
version, key, name: value.enName, element: value.element ?? null, rarity: rarity(value.qualityType), weaponType: value.weaponType ?? null,
|
||||
imageKey: `catalog/${version}/characters/${webpName(value.GachaImg)}`,
|
||||
sourceImage: `${API_ROOT}/assets/gachaimg/${encodeURIComponent(webpName(value.GachaImg))}`,
|
||||
imageKey: `catalog/${version}/characters/${avatarIcon}`,
|
||||
sourceImage: `${API_ROOT}/assets/avataricon/${encodeURIComponent(avatarIcon)}`,
|
||||
constellations: detail ? constellationSnapshot(detail, (icon) => `catalog/${version}/constellations/${webpName(icon)}`) : [],
|
||||
};
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user