import { defineStore } from 'pinia'
import { useGeolocation } from '~/composables/useGeolocation'
import { requestUserUpdateLocation } from '~/api/apiTools'
import { ApiCallback } from '~/api/apiCallback'
import { useLoginStore } from '~/stores/LoginStore'

export const useLocationStore = defineStore('location', () => {
  // 每 30 秒更新一次地理位置 (可以根據需求調整)
  const { latitude, longitude, error, lastUpdated } = useGeolocation({ interval: 30000 })
  const loginStore = useLoginStore()
  const { isLogin } = storeToRefs(loginStore)

  const _updateLocationApi = () => {
    if (!isLogin.value || latitude.value === null || longitude.value === null) return

    requestUserUpdateLocation(
      latitude.value.toString(),
      longitude.value.toString(),
      new ApiCallback({
        successCallback: () => {
          // console.log('地理位置已成功上傳');
        },
        failCallback: () => {
          // console.error('地理位置上傳失敗');
        },
      }),
    )
  }

  // 監聽經緯度變化，當位置改變時立刻同步至後端
  watch([latitude, longitude], () => {
    _updateLocationApi()
  })

  return {
    latitude,
    longitude,
    error,
    lastUpdated,
    updateLocationApi: _updateLocationApi,
  }
})
