//
//  VibratorHandler.swift
//  ylgamehall
//
//  H5 → Native handler「vibrator」（契约 §3.1 ［10］：单次振动）。
//  Phase 1.15 仅实现这一项作为最小垂直闭环验证标的；
//  `repeatvibrator` / `canclevibrator` 放到 Phase 2.2 一并补齐。
//

import AudioToolbox

/// 单次振动 handler 注册器。
///
/// 设计为无状态 enum：震动调用是无状态的 C API，不需要持有任何资源；
/// 同时避免误把 handler 注册器实例化保留，造成"注册多份"。
public enum VibratorHandler {

    /// 在 `bridge` 上注册 `vibrator` handler。
    ///
    /// 契约（`docs/H5-Native-Contract.md` §3.1 ［10］）：
    /// - 入参：被忽略（参考原 msext `RootVC.m:1816-1818` 入参 `time` 实际不读取）
    /// - 副作用：`AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)`
    /// - responseCallback：字符串 `"vibrator"`
    ///
    /// 模拟器无振动硬件，调用会被静默忽略（不抛异常），真机才能感知。
    public static func register(on bridge: any BridgeProtocol) {
        bridge.register("vibrator") { _, callback in
            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
            callback?(.string("vibrator"))
        }
    }
}
