import { defineStore } from 'pinia'

export const useCommonStore = defineStore('common', () => {

	/* 提示类公共函数-后期替换为跳转应用或下载链接 */
	const download = () => uni.showToast({ title: 'downloadapp', icon: 'none' })
	const openapp = () => uni.showToast({ title: '打开APP', icon: 'none' })

	// 点赞数一类的数量格式工具函数
	const formatCount = n =>
		n >= 1_000_000 ? Math.floor(n / 100_000) / 10 + 'm+' :
			n >= 1_000 ? Math.floor(n / 100) / 10 + 'k+' : n;

	/* 富文本 评论@高亮 */
	/**
	 * 把单个 atUsers 数组转成富文本节点
	 * @param {string[]} atUsers
	 * @returns {Array} rich-text nodes
	 */
	function atUsersToNodes(atUsers = []) {
		return atUsers.map(name => ({
			type: 'node',
			name: 'span',
			attrs: { style: 'color:#0969DA;', 'data-name': name },
			children: [{ type: 'text', text: `@${name} ` }]
		}))
	}

	/* 日期处理函数 */
	/**
	 * 格式化日期，如果年份是当年则不显示年份
	 * @param {string|Date} date - 日期字符串或Date对象
	 * @returns {string} 格式化后的日期字符串
	 */
	function formatDate(date) {
		const inputDate = new Date(date);
		const currentYear = new Date().getFullYear();
		const inputYear = inputDate.getFullYear();

		if (inputYear === currentYear) {
			// 当年：显示月份和日期
			return `${inputDate.getMonth() + 1}-${inputDate.getDate()}`;
		} else {
			// 非当年：显示完整年月日
			return `${inputYear}-${inputDate.getMonth() + 1}-${inputDate.getDate()}`;
		}
	}

	return { download, openapp, formatCount, atUsersToNodes, formatDate }
})