// 这个脚本使用 axios 来模拟对 sendDirectMessage API 端点的调用，
// 每10分钟发送一条带有递增序号的FCM消息。
// 运行前请确保已安装 axios: npm install axios

const axios = require("axios"); // 导入 axios 库

// 目标 API 地址
// 请根据您的本地或部署环境修改端口和域名
const API_URL = "http://localhost:3000/api/users/send-message";

// 目标用户 UID
const TARGET_UID = "my-samsumg";

// 消息内容
const MESSAGE_CONTENT = {
  content: "🎉 Every tap births a new universe. 🎉",
  image: "https://color.jccytech.cn/thumbs/v2/page/640/68b7f2bfe5ced54b83ecf8d3.png",
  bigger: true,
};

// 消息序号，从 0 开始
let messageCounter = 9;

/**
 * 异步函数，用于发送带有动态标题的FCM消息。
 */
async function sendFCMMessage() {
  // 每次调用前，序号递增
  messageCounter++;
  const dynamicTitle = `${messageCounter}. ❤️ Time to Relax!`;

  // 准备发送到 API 的完整消息体
  const payload = {
    uid: TARGET_UID,
    title: dynamicTitle,
    ...MESSAGE_CONTENT,
  };

  console.log(`[${new Date().toLocaleString()}] 正在发送第 ${messageCounter} 条消息给 ${TARGET_UID}...`);

  try {
    // 使用 axios 发送 POST 请求
    const response = await axios.post(API_URL, payload);

    // 成功发送，打印响应
    console.log(`[${new Date().toLocaleString()}] 消息发送成功！`);
    console.log("响应数据:", response.data);
  } catch (error) {
    // 发送失败，打印错误信息
    console.error(`[${new Date().toLocaleString()}] 消息发送失败！`);
    // 检查是否有详细的响应错误信息
    if (error.response) {
      // 服务器返回的错误状态码
      console.error("错误状态码:", error.response.status);
      console.error("错误数据:", error.response.data);
    } else if (error.request) {
      // 请求已发出但没有收到响应
      console.error("未收到服务器响应。");
    } else {
      // 其他错误
      console.error("请求配置错误:", error.message);
    }
  }
}

// 立即运行一次脚本，以确保它正常工作
sendFCMMessage();

// 设置定时器，每 10 分钟运行一次
const intervalId = setInterval(sendFCMMessage, 10 * 60 * 1000);

console.log(`脚本已启动。将每隔 10 分钟向用户 ${TARGET_UID} 发送一次 FCM 消息。`);
console.log(`API URL: ${API_URL}`);
console.log(`按下 Ctrl + C 停止脚本。`);

// 在脚本退出时清理定时器，这不是必需的，但这是一个好的习惯
process.on("SIGINT", () => {
  console.log("\n脚本已停止。");
  clearInterval(intervalId);
  process.exit();
});
