import { cli, Strategy } from '@jackwener/opencli/registry';
/**
 * 点赞即刻帖子
 *
 * 即刻帖子详情页的操作栏是 div 元素（非 button），
 * 点赞按钮可通过 class 前缀 _likeButton_ 定位。
 */
cli({
    site: 'jike',
    name: 'like',
    access: 'write',
    description: '点赞即刻帖子',
    domain: 'web.okjike.com',
    strategy: Strategy.UI,
    browser: true,
    args: [
        { name: 'id', type: 'string', required: true, positional: true, help: '帖子 ID' },
    ],
    columns: ['status', 'message'],
    func: async (page, kwargs) => {
        // 1. 导航到帖子详情页
        await page.goto(`https://web.okjike.com/originalPost/${kwargs.id}`);
        // 2. 找到点赞按钮并点击
        const result = await page.evaluate(`(async () => {
      try {
        // 点赞按钮：class 包含 _likeButton_，在 _actions_ 容器内
        const likeBtn = document.querySelector('[class*="_likeButton_"]');
        if (!likeBtn) {
          return { ok: false, message: '未找到点赞按钮' };
        }

        // 检查是否已点赞（已赞按钮带有 _liked_ 类）
        const cls = likeBtn.className || '';
        if (cls.includes('_liked')) {
          return { ok: true, message: '该帖子已赞过' };
        }

        // 记录点击前的类名
        const beforeCls = likeBtn.className;

        likeBtn.click();
        await new Promise(r => setTimeout(r, 1500));

        // 验证：类名变化表示点赞成功
        const afterCls = likeBtn.className;
        if (afterCls !== beforeCls) {
          return { ok: true, message: '点赞成功' };
        }

        // 类名未变化，无法确认点赞是否成功
        return { ok: false, message: '点赞状态未确认，请手动检查' };
      } catch (e) {
        return { ok: false, message: e.toString() };
      }
    })()`);
        return [{
                status: result.ok ? 'success' : 'failed',
                message: result.message,
            }];
    },
});
