items.ts 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // 상점 소모품 아이템 (백엔드 ItemKind enum)
  2. // ⚠️ Web.Api Program.cs 에 JsonStringEnumConverter 미등록 → enum 은 전부 숫자로 직렬화됨.
  3. // ItemKind 숫자 코드·라벨의 단일 소스는 types/reward.ts (D3). 여기서는 소모품 전용 설명/사용가능 종류만 추가 정의.
  4. import { ItemKind, ITEM_KIND_LABEL } from '@/types/reward';
  5. import type { ItemKindValue } from '@/types/reward';
  6. export { ItemKind, ITEM_KIND_LABEL };
  7. export type { ItemKindValue };
  8. // 소모품 보관함 행 (GET /api/member/me/items — Member/Items/List/Response.Row)
  9. // kind 는 숫자(ItemKindValue). 이 화면은 소모품(5~11)만 다룬다.
  10. export interface MemberItemRow {
  11. id: number;
  12. productID: number;
  13. productName: string;
  14. thumbnail: string|null;
  15. kind: ItemKindValue;
  16. durationDays: number;
  17. acquiredAt: string;
  18. usedAt: string|null;
  19. }
  20. export interface MemberItemsResponse {
  21. total: number;
  22. list: MemberItemRow[];
  23. }
  24. export interface UseItemResult {
  25. kind: ItemKindValue;
  26. message: string;
  27. }
  28. // 소모품 종류별 설명 (소모품 5~11 만)
  29. export const ITEM_KIND_DESC: Partial<Record<ItemKindValue, string>> = {
  30. [ItemKind.ChatBanLift]: '현재 적용 중인 채팅 제재를 즉시 해제합니다.',
  31. [ItemKind.PostReset]: '신고·댓글이 없는 예전 게시글을 일괄 삭제합니다.',
  32. [ItemKind.NotePass]: '쪽지 보내기에서 일일 한도를 넘겨 보내거나 무작위 회원에게 보낼 때 자동으로 사용됩니다.',
  33. [ItemKind.ExpBooster]: '사용 후 기간 동안 획득 경험치가 2배가 됩니다.',
  34. [ItemKind.ProfileImageChange]: '변경 주기 제한 없이 프로필 이미지를 즉시 변경할 때 자동으로 사용됩니다.',
  35. [ItemKind.TaglineChange]: '변경 주기 제한 없이 오늘의 한마디를 즉시 변경할 때 자동으로 사용됩니다.',
  36. [ItemKind.NicknameChange]: '변경 주기 제한 없이 닉네임을 즉시 변경할 때 자동으로 사용됩니다.'
  37. };
  38. // 보관함에서 직접 "사용하기" 가능한 종류 (나머지는 해당 기능 이용 시 자동 소모)
  39. export const DIRECT_USE_KINDS: ItemKindValue[] = [ItemKind.ChatBanLift, ItemKind.PostReset, ItemKind.ExpBooster];