//
//  VibratorHandler.swift
//  ylgamehall
//
//  H5 → Native handler 三件套：vibrator / repeatvibrator / canclevibrator
//  契约：docs/H5-Native-Contract.md §3.1 ［10］［11］［12］
//  原项目：daoqi/msext RootVC.m:1816-1834
//

import AudioToolbox

/// 振动 handler 注册器（无状态 enum）。
public enum VibratorHandler {

    /// 注册三个振动 handler。
    public static func register(on bridge: any BridgeProtocol) {
        // 【10】vibrator — 单次振动
        //   入参忽略；副作用：AudioServicesPlaySystemSound；cb "vibrator"
        bridge.register("vibrator") { _, callback in
            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
            callback?(.string("vibrator"))
        }

        // 【11】repeatvibrator — 重复振动（msext RootVC.m:1820 实际就是单次 vibrate，
        //   不真的循环，沿用历史）
        bridge.register("repeatvibrator") { _, callback in
            AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
            callback?(.string("repeatvibrator"))
        }

        // 【12】canclevibrator — 释放系统振动音
        //   AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate) 对系统常量
        //   意义有限，但 H5 仍会调，必须 noop + cb 维持契约
        bridge.register("canclevibrator") { _, callback in
            AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate)
            callback?(.string("canclevibrator"))
        }
    }
}
