import { ref } from 'vue'
import { createGlobalState, useLocalStorage } from '@vueuse/core'
import axios from 'axios'
import dayjs from 'dayjs'
import utc from 'dayjs/plugin/utc'
import timezone from 'dayjs/plugin/timezone'

export const useStockQuote = createGlobalState(() => {
  const stockQuote = useLocalStorage('stockQuote', {
    "Open": "",
    "Volume": "",
    "DayRange": "",
    "WeekRange": "",
    "MarketCap": "",
    "change": [
      "",
      ""
    ]
  })
  const date = new Date();
const options = {
  year: 'numeric',
  month: 'short',
  day: 'numeric',
  hour: 'numeric',
  minute: '2-digit',
  hour12: true,
  timeZone: 'America/New_York',
  timeZoneName: 'short'
};

dayjs.extend(utc)
dayjs.extend(timezone)
/*
美股的常规发行日（交易日）为周一至周五，遇到法定假日则顺延。
如果你只需要“上一个交易日”（不考虑法定假日）的情况下
获取当前美东时间。
如果今天是周一，则上一个交易日为上周五。
如果今天是周日，则上一个交易日为上周五。
如果今天是周六，则上一个交易日为周五。
其他情况，上一个交易日为昨天。
*/
const getLastTradingDay = () => {
  const now = dayjs().tz('America/New_York')
  let lastTradingDay
  const dayOfWeek = now.day() // 0:周日, 1:周一, ..., 5:周五, 6:周六
  const isBeforeClose = now.hour() < 16 || (now.hour() === 16 && now.minute() === 0 && now.second() === 0)

  if (dayOfWeek === 0) { // 周日
    // 返回本周五16:00
    lastTradingDay = now.day(-2).hour(16).minute(0).second(0).millisecond(0)
  } else if (dayOfWeek === 6) { // 周六
    // 返回本周五16:00
    lastTradingDay = now.day(-1).hour(16).minute(0).second(0).millisecond(0)
  } else if (dayOfWeek === 1 && isBeforeClose) { // 周一16:00前
    // 返回上周五16:00
    lastTradingDay = now.day(-2).hour(16).minute(0).second(0).millisecond(0)
  } else if (isBeforeClose) { // 工作日16:00前
    // 返回前一天16:00
    lastTradingDay = now.subtract(1, 'day').hour(16).minute(0).second(0).millisecond(0)
  } else {
    // 工作日16:00后，返回今天16:00
    lastTradingDay = now.hour(16).minute(0).second(0).millisecond(0)
  }
  return lastTradingDay.format('MMM D, YYYY, h:mm A [EDT]')
}

const formatted = ref(getLastTradingDay())
const getStockQuate= async()=>{
  // const res = await axios.get('https://saas-test.szjixun.cn/api/fiee/chart/forward/test')
    const res = await axios.get('https://common.szjixun.cn/api/stock/company/data')
    // console.error(res)
    if(res.status === 200){
      if(res.data.status === 0){
        stockQuote.value=res.data.data
        // console.error(stockQuote.value)
      }
    }
}
  return {
    formatted,
    getStockQuate,
    stockQuote
  }
})
