import { defineStore } from 'pinia'
import { requestFavoriteLoverList } from '~/api/apiTools'
import { ApiCallback } from '~/api/apiCallback'
import { ref } from 'vue'

export const useLoverStore = defineStore('lover_visa_lovers', () => {
  // 儲存伴友標籤 (iconLabel: '', 'redHeart', 'blackHeart')
  const loverLabels = ref<Record<string, string>>({})
  // 儲存伴友備註 (note content)
  const loverNotes = ref<Record<string, string>>({})
  // 儲存已加入「批量邀約」名單的伴友 ID
  const batchLoverIds = ref<Set<string>>(new Set())

  const setLabel = (id: string, label: string) => {
    loverLabels.value[id] = label
  }

  const setNote = (id: string, note: string) => {
    loverNotes.value[id] = note
  }

  const setInBatch = (id: string, inBatch: boolean) => {
    if (inBatch) {
      batchLoverIds.value.add(id)
    } else {
      batchLoverIds.value.delete(id)
    }
  }

  const syncBatchIds = (ids: string[]) => {
    batchLoverIds.value = new Set(ids)
  }

  /**
   * 同步伴友數據到 Store (當從 API 取得清單或詳情時)
   */
  const syncLoverData = (lovers: any[]) => {
    lovers.forEach((lover) => {
      if (!lover || !lover.id) return

      // 處理標籤
      const iconLabel = lover.label?.iconLabel
      if (iconLabel !== undefined) {
        loverLabels.value[lover.id] = iconLabel
      }

      // 處理備註 (不同接口返回的路徑可能不同)
      const note = lover.note?.note || lover.loverOption?.loverNote?.note
      if (note !== undefined) {
        loverNotes.value[lover.id] = note
      }
    })
  }

  const fetchBatchIds = () => {
    requestFavoriteLoverList(
      '批量邀約',
      new ApiCallback({
        successCallback: (data) => {
          const ids = data.data.map((item: any) => item.id)
          syncBatchIds(ids)
        },
      }),
    )
  }

  return {
    loverLabels,
    loverNotes,
    batchLoverIds,
    setLabel,
    setNote,
    setInBatch,
    syncBatchIds,
    syncLoverData,
    fetchBatchIds,
  }
})
