diff --git a/src/app/api/admin/catalog/suggest/route.ts b/src/app/api/admin/catalog/suggest/route.ts index f2d57f71..6707e1ef 100644 --- a/src/app/api/admin/catalog/suggest/route.ts +++ b/src/app/api/admin/catalog/suggest/route.ts @@ -1,7 +1,7 @@ import { withAdmin } from "@/lib/api-handler"; import { apiOk } from "@/lib/api-response"; -import { getHabboGamedataHotel } from "@/lib/habbo-gamedata-hotel"; import { PERMS } from "@/lib/permissions"; +import { getHabboGamedataHotel } from "@/lib/services/habbo-gamedata-hotel"; import { batchLookupByClassnames } from "@/lib/services/habbofurni"; export const GET = withAdmin( diff --git a/src/lib/habbo-gamedata-hotel.ts b/src/lib/habbo-gamedata-hotel.ts index 10e8b6af..604e7448 100644 --- a/src/lib/habbo-gamedata-hotel.ts +++ b/src/lib/habbo-gamedata-hotel.ts @@ -1,3 +1,8 @@ +/** + * Client-safe Habbo gamedata hotel helpers (no Node/DB imports). + * Server-only reader: `@/lib/services/habbo-gamedata-hotel`. + */ + /** Official Habbo hotel TLDs used for gamedata (furnidata / external texts). */ export const HABBO_GAMEDATA_HOTELS = [ { value: "it", label: "Italy (habbo.it)" }, @@ -46,12 +51,3 @@ export function habboExternalTextsUrl(hotel: string): string { const h = normalizeHabboGamedataHotel(hotel); return `https://www.habbo.${h}/gamedata/external_flash_texts/1`; } - -export async function getHabboGamedataHotel(): Promise { - const { siteSettings } = await import("@/lib/services/site-settings"); - const raw = await siteSettings.get( - HABBO_GAMEDATA_HOTEL_SETTING_KEY, - DEFAULT_HABBO_GAMEDATA_HOTEL, - ); - return normalizeHabboGamedataHotel(raw); -} diff --git a/src/lib/services/catalog-items-loader.ts b/src/lib/services/catalog-items-loader.ts index 75caf6b6..0462ce4a 100644 --- a/src/lib/services/catalog-items-loader.ts +++ b/src/lib/services/catalog-items-loader.ts @@ -1,8 +1,8 @@ import { promises as fs } from "node:fs"; import { Prisma } from "@/generated/prisma/client"; -import { getHabboGamedataHotel } from "@/lib/habbo-gamedata-hotel"; import { prisma } from "@/lib/prisma"; import { getFurnitureDataPath } from "@/lib/services/furni-data"; +import { getHabboGamedataHotel } from "@/lib/services/habbo-gamedata-hotel"; // Cache FurnitureData.json in memory with TTL to avoid repeated disk I/O let furniDataCache: { diff --git a/src/lib/services/habbo-furnidata-cache.ts b/src/lib/services/habbo-furnidata-cache.ts index 3644e56b..c162f02b 100644 --- a/src/lib/services/habbo-furnidata-cache.ts +++ b/src/lib/services/habbo-furnidata-cache.ts @@ -7,10 +7,10 @@ export type { HabboItFurniEntry } from "@/types/furni"; import type { HabboItFurniEntry } from "@/types/furni"; import { - getHabboGamedataHotel, habboFurnidataUrl, type HabboGamedataHotel, } from "@/lib/habbo-gamedata-hotel"; +import { getHabboGamedataHotel } from "@/lib/services/habbo-gamedata-hotel"; const CACHE_TTL = 30 * 60 * 1000; // 30 minutes diff --git a/src/lib/services/habbo-gamedata-hotel.ts b/src/lib/services/habbo-gamedata-hotel.ts new file mode 100644 index 00000000..48bcc2e0 --- /dev/null +++ b/src/lib/services/habbo-gamedata-hotel.ts @@ -0,0 +1,16 @@ +import { + DEFAULT_HABBO_GAMEDATA_HOTEL, + HABBO_GAMEDATA_HOTEL_SETTING_KEY, + type HabboGamedataHotel, + normalizeHabboGamedataHotel, +} from "@/lib/habbo-gamedata-hotel"; +import { siteSettings } from "@/lib/services/site-settings"; + +/** Read configured Habbo hotel TLD from CMS settings (server-only). */ +export async function getHabboGamedataHotel(): Promise { + const raw = await siteSettings.get( + HABBO_GAMEDATA_HOTEL_SETTING_KEY, + DEFAULT_HABBO_GAMEDATA_HOTEL, + ); + return normalizeHabboGamedataHotel(raw); +} diff --git a/src/lib/services/habboassets.ts b/src/lib/services/habboassets.ts index 230c5fa3..e9e890b2 100644 --- a/src/lib/services/habboassets.ts +++ b/src/lib/services/habboassets.ts @@ -9,10 +9,10 @@ export type { HabboAssetBadge } from "@/types/furni"; import type { HabboAssetBadge } from "@/types/furni"; import { - getHabboGamedataHotel, habboExternalTextsUrl, type HabboGamedataHotel, } from "@/lib/habbo-gamedata-hotel"; +import { getHabboGamedataHotel } from "@/lib/services/habbo-gamedata-hotel"; const BADGE_IMAGE_BASE = "https://images.habbo.com/c_images/album1584"; const CACHE_TTL = 30 * 60 * 1000; // 30 minutes