sync(theme-2): 同步 main 最新 API/Admin 与玩家端逻辑

从 main 同步站内信手动发送、媒体库选择、列表子路由重构等 API/Admin 改动;玩家端仅合并 ADMIN_CUSTOM 富文本、消息预览与充值截图压缩逻辑,保留 theme-2 样式。
This commit is contained in:
2026-06-22 14:10:54 +08:00
parent fa7b8cff25
commit 27dc9eb3b0
50 changed files with 4653 additions and 1186 deletions

View File

@@ -864,6 +864,41 @@ export const API_ERROR_MESSAGES = {
'en-US': 'Message not found',
'ms-MY': 'Mesej tidak dijumpai',
},
BROADCAST_NOT_FOUND: {
'zh-CN': '发送记录不存在',
'en-US': 'Broadcast record not found',
'ms-MY': 'Rekod siaran tidak dijumpai',
},
BROADCAST_TITLE_REQUIRED: {
'zh-CN': '标题不能为空',
'en-US': 'Title is required',
'ms-MY': 'Tajuk diperlukan',
},
BROADCAST_BODY_REQUIRED: {
'zh-CN': '正文不能为空',
'en-US': 'Body is required',
'ms-MY': 'Kandungan diperlukan',
},
BROADCAST_TITLE_TOO_LONG: {
'zh-CN': '标题过长(最多 256 字符)',
'en-US': 'Title is too long (max 256 characters)',
'ms-MY': 'Tajuk terlalu panjang (maks 256 aksara)',
},
BROADCAST_TARGET_USER_REQUIRED: {
'zh-CN': '请指定玩家账号',
'en-US': 'Target player username is required',
'ms-MY': 'Nama pengguna pemain sasaran diperlukan',
},
BROADCAST_NO_RECIPIENTS: {
'zh-CN': '没有可发送的玩家',
'en-US': 'No eligible recipients',
'ms-MY': 'Tiada penerima yang layak',
},
BROADCAST_CONTENT_REQUIRED: {
'zh-CN': '请至少填写一种语言的标题或正文',
'en-US': 'Provide a title or body in at least one language',
'ms-MY': 'Sila isi tajuk atau kandungan sekurang-kurangnya satu bahasa',
},
CONTENT_ACTIVE_BANNER_INCOMPLETE: {
'zh-CN': '启用 Banner 须至少一种语言配置图片地址',
'en-US': 'ACTIVE banner requires imageUrl in at least one locale',
@@ -1009,6 +1044,21 @@ export const API_ERROR_MESSAGES = {
'en-US': 'This country or region is not supported',
'ms-MY': 'Negara atau wilayah ini tidak disokong',
},
BEFORE_DATE_REQUIRED: {
'zh-CN': '截止日期不能为空',
'en-US': 'Before date is required',
'ms-MY': 'Tarikh akhir diperlukan',
},
INVALID_BEFORE_DATE: {
'zh-CN': '截止日期无效',
'en-US': 'Invalid before date',
'ms-MY': 'Tarikh akhir tidak sah',
},
BEFORE_DATE_CANNOT_BE_FUTURE: {
'zh-CN': '截止日期不能是未来日期',
'en-US': 'Before date cannot be in the future',
'ms-MY': 'Tarikh akhir tidak boleh pada masa hadapan',
},
} as const satisfies Record<string, Record<Locale, string>>;
export type ApiErrorCode = keyof typeof API_ERROR_MESSAGES;