import { defineStore } from 'pinia'
import { ref, watch } from 'vue'
import type { CustomTool } from '@/types'

/**
 * 自定义工具 store（localStorage 持久化）
 * 原 web 项目 customTools 仅存本地，无后端
 */
export const useToolsStore = defineStore('tools', () => {
  const STORAGE_KEY = 'customTools'
  const tools = ref<CustomTool[]>(loadFromStorage())

  function loadFromStorage(): CustomTool[] {
    try {
      return JSON.parse(localStorage.getItem(STORAGE_KEY) || '[]')
    } catch {
      return []
    }
  }

  // 持久化
  watch(
    tools,
    (val) => {
      localStorage.setItem(STORAGE_KEY, JSON.stringify(val))
    },
    { deep: true },
  )

  function addTool(tool: CustomTool) {
    tools.value.push(tool)
  }

  function updateTool(id: string, data: Partial<CustomTool>) {
    const idx = tools.value.findIndex((t) => t.id === id)
    if (idx !== -1) tools.value[idx] = { ...tools.value[idx], ...data }
  }

  function removeTool(id: string) {
    tools.value = tools.value.filter((t) => t.id !== id)
  }

  function getTool(id: string): CustomTool | undefined {
    return tools.value.find((t) => t.id === id)
  }

  return { tools, addTool, updateTool, removeTool, getTool }
})
