import {t} from "../lang";

function errorToString(msg: any) {
    if (typeof msg === "string") {
        return msg;
    }
    if (msg?.response?.data) {
        try {
            return JSON.stringify(msg.response.data);
        } catch {
            return String(msg.response.data);
        }
    }
    if (msg?.message) {
        return String(msg.message);
    }
    return String(msg);
}

export function mapError(msg: any) {
    msg = errorToString(msg);

    if (msg.includes("AccountOverdueError") || msg.includes("overdue balance")) {
        return "阿里云百炼账号已欠费，请充值或更换可用的 API Key";
    }
    if (msg.includes("Model access denied")) {
        return "当前 API Key 没有该语音模型权限，请在阿里云百炼开通 qwen3-tts-flash 权限或更换 API Key";
    }
    if (msg.includes("Forbidden") || msg.includes("Request failed: 403")) {
        return "模型服务拒绝访问，请检查 API Key、账号余额和模型权限";
    }

    const map = {
        FileAlreadyExists: t("文件已存在"),
        FileNotFound: t("文件未找到"),
        ProcessTimeout: t("处理超时"),
        RequestError: t("请求错误"),
        ServerNotRunning: t("模型服务未运行"),
    };
    for (let key in map) {
        if (msg.includes(key)) {
            let error = map[key];
            // regex PluginReleaseDocFormatError:-11
            const regex = new RegExp(`${key}:(-?\\d+)`);
            const match = msg.match(regex);
            if (match) {
                error += `(${match[1]})`;
            }
            return error;
        }
    }
    return msg;
}
