import { watch } from 'vue'
import { useStatYear } from '@/stores/statYear'

/**
 * 弹框年份单向跟随全局统计年份：
 * - 全局年变化 → 写入 query.statYear
 * - 弹框内改年份不影响全局
 *
 * @param {{ statYear: number|string|undefined }} query 弹框查询对象（需含 statYear）
 * @param {{ visible?: import('vue').Ref<boolean>, onSynced?: () => void }} [options]
 * @returns {{ syncDialogYearFromGlobal: () => void }}
 */
export function useDialogStatYearSync(query, options = {}) {
  const { visible, onSynced } = options
  const { statYear } = useStatYear()

  function parseGlobalYear() {
    const y = Number(statYear.value)
    return Number.isFinite(y) ? y : undefined
  }

  /** 将当前全局统计年写入弹框年份 */
  function syncDialogYearFromGlobal() {
    query.statYear = parseGlobalYear()
  }

  watch(
    () => statYear.value,
    () => {
      syncDialogYearFromGlobal()
      if (visible?.value && typeof onSynced === 'function') {
        onSynced()
      }
    }
  )

  return { syncDialogYearFromGlobal }
}
