// composables/useColumnCount.js
import {
    ref,
    onMounted,
    onUnmounted,
    watch
} from 'vue'

export function useColumnCount(onChange = () => {}) {
    const columnCount = ref(0)
    const columnSpace = ref(2)


    // const calcColumn = () => {
    //     const width = uni.getSystemInfoSync().windowWidth
    //     console.log(width)
    //     const count = Math.min(5, Math.floor(width / 375) + 1)
    //     if (count !== columnCount.value) {
    //         columnCount.value = count < 2 ? 2 : count
    //     }
    // }
    const calcColumn = () => {
        // 使用新的API替代已废弃的getSystemInfoSync
        let width
        // #ifdef MP-WEIXIN
        const mpSystemInfo = uni.getWindowInfo()
        width = mpSystemInfo.windowWidth
        // #endif
        // #ifndef MP-WEIXIN
        const otherSystemInfo = uni.getSystemInfoSync()
        width = otherSystemInfo.windowWidth
        // #endif

        let count = 2
        // #ifdef H5
        // H5端固定显示2列
        count = 2
        // #endif
        // #ifndef H5
        // 小程序端固定显示1列
        count = 1
        // #endif

        if (count !== columnCount.value) {
            columnCount.value = count
        }

        // 计算间距：count=2 => 1，count=5 => 2，中间线性插值
        const spacing = 2 - (count - 2) * (1 / 3)
        // console.log('列数:', count, '间距:', spacing.toFixed(2))
        columnSpace.value = spacing
    }

    onMounted(() => {
        columnCount.value = 2
        calcColumn()
        // 只在H5环境下添加resize监听器
        // #ifdef H5
        if (typeof window !== 'undefined') {
            window.addEventListener('resize', calcColumn)
        }
        // #endif
    })

    onUnmounted(() => {
        // #ifdef H5
        if (typeof window !== 'undefined') {
            window.removeEventListener('resize', calcColumn)
        }
        // #endif
    })

    // 列数变化时执行回调
    watch(columnCount, (newVal, oldVal) => {
        if (newVal !== oldVal) {
            onChange(newVal)
        }
    })

    return {
        columnCount,
        columnSpace
    }
}