21 lines
1.4 KiB
TypeScript
21 lines
1.4 KiB
TypeScript
const messages: Record<string, string> = {
|
|
not_found: '内容不存在或已过期。', gone: '内容已删除、下载次数已用完或续传已失效。',
|
|
seats_full: '频道席位已满,请联系所有者。', not_joined: '你已被移出此频道。',
|
|
visitors_full: '分享的访客名额已满。', unauthorized: '链接权限无效,请使用完整链接重新打开。',
|
|
forbidden: '此链接没有执行此操作的权限。', sealed: '分享已封存,无法再修改。',
|
|
too_large: '内容超过服务端容量或条目数量限制。', rate_limited: '请求过于频繁,请稍后重试。',
|
|
captcha_required: '验证码未通过或已失效,请重新创建。',
|
|
captcha_unavailable: '验证码服务暂时不可用,请稍后重试。',
|
|
api_contract_mismatch: '服务端 API 有破坏性更新,请刷新或更新前端后再试。',
|
|
mode_mismatch: '频道加密模式与链接不符,已拒绝访问。', conflict: '上传内容发生冲突,已停止发送。',
|
|
};
|
|
|
|
export function errorMessage(error: unknown): string {
|
|
if (!(error instanceof Error)) return '操作失败,请重试。';
|
|
const mapped = messages[error.message];
|
|
if (mapped) return mapped;
|
|
// 不回显来自服务端或解析器的原始错误,它们可能包含密钥或明文。
|
|
return /[\u4e00-\u9fff]/.test(error.message) && error.message.length < 100
|
|
? error.message : '操作失败,请重试。';
|
|
}
|