package com.jishisongfu.duobibi.ui

import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.hapticfeedback.HapticFeedback
import androidx.compose.ui.hapticfeedback.HapticFeedbackType
import androidx.compose.ui.platform.LocalHapticFeedback

/**
 * 触觉反馈薄包装 —— 提供"toggle / confirm / reject"三种语义,屏蔽 Compose 版本差异。
 *
 * 为什么自己包一层:
 *  - HapticFeedbackType 在 Compose 1.7+ 才有 Confirm/Reject/GestureEnd 等丰富语义,
 *    旧版本只有 LongPress / TextHandleMove,我们用 LongPress 作为通用 fallback。
 *  - 调用点写 `haptics.toggle()` 比写 `LocalHapticFeedback.current.performHapticFeedback(...)`
 *    短一截,也避免每个调用点都 import HapticFeedbackType。
 *
 * 用法:
 * ```
 * val haptics = rememberHaptics()
 * Button(onClick = { haptics.toggle(); onSomething() }) { ... }
 * ```
 */
class DbbHaptics(private val raw: HapticFeedback) {
    /** 轻量"开关切换"反馈 —— ❤️ 收藏 / 今日新品 toggle / Tab 切换 / chip 选中。 */
    fun toggle() {
        raw.performHapticFeedback(HapticFeedbackType.LongPress)
    }

    /** "确认主动作"反馈 —— AI 评估 / 开始比价 / 加入降价雷达 等主 CTA。 */
    fun confirm() {
        raw.performHapticFeedback(HapticFeedbackType.LongPress)
    }
}

@Composable
fun rememberHaptics(): DbbHaptics {
    val raw = LocalHapticFeedback.current
    return remember(raw) { DbbHaptics(raw) }
}
