Files
EpicNext-Cms/src/lib/imager.ts
T
Simo 8d37ae9ae0
Remote Build and Deploy / deploy (push) Has been cancelled
style: normalize restored source endings
2026-07-11 21:19:54 +02:00

45 lines
1.2 KiB
TypeScript

/**
* Centralized Habbo avatar imager utility.
* Points to the self-hosted imager API (`/api/imaging/avatar`) which handles
* disk + memory caching and (Phase 2) local rendering from .nitro bundles.
* Override with NEXT_PUBLIC_IMAGER_URL when needed (e.g. CDN in front).
*/
const IMAGER_URL = process.env.NEXT_PUBLIC_IMAGER_URL || '/api/imaging/avatar'
export type { AvatarOptions } from '@/types/admin'
import type { AvatarOptions } from '@/types/admin'
/**
* Build an avatar image URL served by the self-hosted imager.
*
* @example
* getAvatarUrl('hr-893-45.hd-180-1.ch-210-66.lg-270-82')
* getAvatarUrl(look, { size: 'l', headOnly: true })
* getAvatarUrl(look, { size: 'm', gesture: 'sml', direction: 2 })
*/
export function getAvatarUrl(figure: string, options: AvatarOptions = {}): string {
const {
size = 'm',
direction = 2,
headDirection = 3,
headOnly = false,
gesture,
action,
} = options
const params = new URLSearchParams({
figure,
direction: String(direction),
head_direction: String(headDirection),
size,
})
if (headOnly) params.set('headonly', '1')
if (gesture) params.set('gesture', gesture)
if (action) params.set('action', action)
return `${IMAGER_URL}?${params.toString()}`
}