/**
 * 路由历史记录服务
 * 用于跟踪和管理用户的导航历史
 */

import { ref, watch } from 'vue'
import { useRouter } from 'vue-router'

// 最大历史记录数量
const MAX_HISTORY = 10

// 创建历史记录服务
export function useRouteHistory() {
  // 路由实例
  const router = useRouter()
  
  // 历史记录
  const history = ref([])
  
  // 监听路由变化
  watch(
    () => router.currentRoute.value,
    (route) => {
      // 只记录需要认证的路由
      if (route.meta.requiresAuth) {
        // 添加到历史记录
        addToHistory({
          name: route.name,
          path: route.path,
          title: route.meta.title,
          timestamp: Date.now()
        })
      }
    },
    { immediate: true }
  )
  
  // 添加到历史记录
  function addToHistory(item) {
    // 检查是否已存在相同路径
    const index = history.value.findIndex(h => h.path === item.path)
    
    // 如果已存在，则移除
    if (index !== -1) {
      history.value.splice(index, 1)
    }
    
    // 添加到历史记录开头
    history.value.unshift(item)
    
    // 限制历史记录数量
    if (history.value.length > MAX_HISTORY) {
      history.value = history.value.slice(0, MAX_HISTORY)
    }
    
    // 保存到本地存储
    saveHistory()
  }
  
  // 清除历史记录
  function clearHistory() {
    history.value = []
    saveHistory()
  }
  
  // 保存历史记录到本地存储
  function saveHistory() {
    localStorage.setItem('routeHistory', JSON.stringify(history.value))
  }
  
  // 加载历史记录
  function loadHistory() {
    try {
      const saved = localStorage.getItem('routeHistory')
      if (saved) {
        history.value = JSON.parse(saved)
      }
    } catch (error) {
      console.error('加载历史记录失败:', error)
      clearHistory()
    }
  }
  
  // 初始加载
  loadHistory()
  
  return {
    history,
    clearHistory
  }
}