Files
WebDrop/web/src/core-bridge/errors.ts
T

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 : '操作失败,请重试。';
}