items.ts 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // 상점 소모품 아이템 (백엔드 ItemKind enum — JSON 은 문자열로 직렬화)
  2. export type ItemKind =
  3. 'ChatBanLift'
  4. | 'PostReset'
  5. | 'NotePass'
  6. | 'ExpBooster'
  7. | 'ProfileImageChange'
  8. | 'TaglineChange'
  9. | 'NicknameChange';
  10. export interface MemberItemRow {
  11. id: number;
  12. productID: number;
  13. productName: string;
  14. thumbnail: string|null;
  15. kind: ItemKind;
  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: ItemKind;
  26. message: string;
  27. }
  28. export const ITEM_KIND_LABEL: Record<ItemKind, string> = {
  29. ChatBanLift: '채팅 밴 해제권',
  30. PostReset: '예전 글 초기화권',
  31. NotePass: '쪽지권',
  32. ExpBooster: '경험치 2배 모래시계',
  33. ProfileImageChange: '프로필 이미지 변경권',
  34. TaglineChange: '오늘의 한마디 변경권',
  35. NicknameChange: '닉네임 변경권'
  36. };
  37. export const ITEM_KIND_DESC: Record<ItemKind, string> = {
  38. ChatBanLift: '현재 적용 중인 채팅 제재를 즉시 해제합니다.',
  39. PostReset: '신고·댓글이 없는 예전 게시글을 일괄 삭제합니다.',
  40. NotePass: '쪽지 보내기에서 일일 한도를 넘겨 보내거나 무작위 회원에게 보낼 때 자동으로 사용됩니다.',
  41. ExpBooster: '사용 후 기간 동안 획득 경험치가 2배가 됩니다.',
  42. ProfileImageChange: '변경 주기 제한 없이 프로필 이미지를 즉시 변경할 때 자동으로 사용됩니다.',
  43. TaglineChange: '변경 주기 제한 없이 오늘의 한마디를 즉시 변경할 때 자동으로 사용됩니다.',
  44. NicknameChange: '변경 주기 제한 없이 닉네임을 즉시 변경할 때 자동으로 사용됩니다.'
  45. };
  46. // 보관함에서 직접 "사용하기" 가능한 종류 (나머지는 해당 기능 이용 시 자동 소모)
  47. export const DIRECT_USE_KINDS: ItemKind[] = ['ChatBanLift', 'PostReset', 'ExpBooster'];