// Service Worker - 后台脚本

// 扩展安装时执行
chrome.runtime.onInstalled.addListener((details) => {
  console.log('扩展已安装', details.reason);
  
  // 初始化存储
  chrome.storage.local.set({
    visitCount: 0,
    installedAt: Date.now()
  });
});

// 监听来自其他脚本的消息
chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
  console.log('收到消息:', request, '来自:', sender);
  
  if (request.action === 'getData') {
    // 处理获取数据的请求
    chrome.storage.local.get(null, (data) => {
      sendResponse({ success: true, data });
    });
    return true; // 保持消息通道开启以支持异步响应
  }
  
  if (request.action === 'saveData') {
    // 处理保存数据的请求
    chrome.storage.local.set(request.data, () => {
      sendResponse({ success: true });
    });
    return true;
  }
  
  sendResponse({ success: false, error: '未知操作' });
});

// 监听标签页更新
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  if (changeInfo.status === 'complete' && tab.url) {
    console.log('页面加载完成:', tab.url);
  }
});

// ==================== 书签事件监听 ====================

// 书签创建
chrome.bookmarks.onCreated.addListener((id, bookmark) => {
  console.log('📌 书签已创建:', bookmark);
  // bookmark 包含: id, parentId, index, url, title, dateAdded
  notifyBookmarkEvent('created', bookmark);
});

// 书签删除
chrome.bookmarks.onRemoved.addListener((id, removeInfo) => {
  console.log('🗑️ 书签已删除:', removeInfo);
  // removeInfo 包含: parentId, index, node (被删除的书签信息)
  notifyBookmarkEvent('removed', removeInfo.node);
});

// 书签修改（标题或URL）
chrome.bookmarks.onChanged.addListener((id, changeInfo) => {
  console.log('✏️ 书签已修改:', id, changeInfo);
  // changeInfo 包含: title, url
  notifyBookmarkEvent('changed', { id, ...changeInfo });
});

// 书签移动
chrome.bookmarks.onMoved.addListener((id, moveInfo) => {
  console.log('📁 书签已移动:', id, moveInfo);
  // moveInfo 包含: parentId, index, oldParentId, oldIndex
  notifyBookmarkEvent('moved', { id, ...moveInfo });
});

// 通知书签事件（可选：存储到本地或发送通知）
async function notifyBookmarkEvent(type, data) {
  // 获取现有的事件记录
  const result = await chrome.storage.local.get(['bookmarkEvents']);
  const events = result.bookmarkEvents || [];
  
  // 添加新事件（保留最近50条）
  events.unshift({
    type,
    data,
    timestamp: Date.now()
  });
  
  if (events.length > 50) {
    events.pop();
  }
  
  await chrome.storage.local.set({ bookmarkEvents: events });
  console.log(`书签事件已记录: ${type}`);
}

// ==================== 变通方案：监控导航来源 ====================

// 虽然无法直接监控书签点击，但可以通过 webNavigation 监控导航
// 结合书签列表进行匹配判断
chrome.webNavigation.onCommitted.addListener(async (details) => {
  // 只处理主框架导航
  if (details.frameId !== 0) return;
  
  // transitionType 可能的值：
  // - "link" - 点击链接
  // - "typed" - 地址栏输入
  // - "auto_bookmark" - 从书签打开（但这个值很少出现）
  // - "generated" - 其他方式
  
  if (details.transitionType === 'auto_bookmark') {
    console.log('🔖 可能从书签打开:', details.url);
  }
  
  // 另一种方式：检查URL是否在书签中
  if (details.transitionType === 'typed' || details.transitionType === 'generated') {
    try {
      const bookmarks = await chrome.bookmarks.search({ url: details.url });
      if (bookmarks.length > 0) {
        console.log('📖 访问了已收藏的网址:', details.url, bookmarks[0].title);
      }
    } catch (e) {
      // 忽略错误
    }
  }
});

