import {
	defineStore
} from 'pinia'
import {
	ref,
	computed
} from 'vue'

export const useTimeStore = defineStore('time', () => {
	// 状态
	const greeting = ref('')
	const currentTime = ref('')
	const iconClass = ref('')
	const themeColor = ref('')
	const backgroundClass = ref('')
	const timerId = ref(null)

	// 计算属性 - 组合完整问候语
	const fullGreeting = computed(() => {
		return `${greeting.value} 当前时间是 ${currentTime.value}`
	})

	// 方法 - 更新问候语和时间状态
	const updateGreeting = () => {
		const now = new Date()
		const hour = now.getHours()

		// 更新当前时间显示
		currentTime.value = now.toLocaleTimeString('zh-CN', {
			hour: '2-digit',
			minute: '2-digit',
			second: '2-digit'
		})

		// 根据小时设置不同的问候语和样式
		if (hour >= 5 && hour < 12) {
			// 早上 (5:00 - 11:59)
			greeting.value = "早上好，"
			iconClass.value = "fa fa-sun-o"
			themeColor.value = "#FBBF24"
			backgroundClass.value =
				"bg-gradient-to-br from-yellow-50 to-orange-50 transition-colors duration-1000"
		} else if (hour >= 12 && hour < 18) {
			// 下午 (12:00 - 17:59)
			greeting.value = "下午好，"
			iconClass.value = "fa fa-cloud"
			themeColor.value = "#F97316"
			backgroundClass.value =
				"bg-gradient-to-br from-orange-50 to-red-50 transition-colors duration-1000"
		} else if (hour >= 18 && hour < 22) {
			// 晚上 (18:00 - 21:59)
			greeting.value = "晚上好，"
			iconClass.value = "fa fa-moon-o"
			themeColor.value = "#7C3AED"
			backgroundClass.value =
				"bg-gradient-to-br from-purple-50 to-indigo-50 transition-colors duration-1000"
		} else {
			// 深夜 (22:00 - 4:59)
			greeting.value = "夜深了，早点休息哦，"
			iconClass.value = "fa fa-star-o"
			themeColor.value = "#1E293B"
			backgroundClass.value =
				"bg-gradient-to-br from-gray-900/5 to-gray-800/10 transition-colors duration-1000"
		}
	}

	// 方法 - 启动定时器
	const startTimer = () => {
		// 先更新一次
		updateGreeting()

		// 每秒更新一次
		timerId.value = setInterval(updateGreeting, 1000)
	}

	// 方法 - 停止定时器
	const stopTimer = () => {
		if (timerId.value) {
			clearInterval(timerId.value)
			timerId.value = null
		}
	}
	updateGreeting()

	// 暴露状态和方法
	return {
		greeting,
		currentTime,
		iconClass,
		themeColor,
		backgroundClass,
		fullGreeting,
		startTimer,
		stopTimer
	}
})