//
//  VideoRoomHandlers.swift
//  ylgamehall
//
//  H5 → Native handler stub：声网视频房间 3 件套（createRoom / getVideoinfo / exitRoom）。
//  契约：docs/H5-Native-Contract.md §3.1 ［19］［20］［21］
//
//  当前业务不使用视频功能（运营确认下线 / 暂未启用），此处仅注册空 handler 维持
//  桥契约：H5 子游戏页若误调不会触发 "bridge handler not found" 错误分支。
//  当未来重新接入 Agora 时（Phase 8 完整实现），把每个 handler 的实现展开即可，
//  注册位点不变。
//
//  注：契约 §3.2 ［13］的 Native → H5 反向 `getVideoinfo(uid 字符串)` 在 Agora SDK
//  didDecodedRemoteVideo 时由 SDK 适配层触发，与本文件 stub 无关。
//
//  ⚠️ 仅注册到 SubGameViewController；大厅 WebContainerViewController 不注册
//  （msext NewRootVC 也不注册，沿用 msext 行为）。
//

import Foundation

public enum VideoRoomHandlers {

    public static func register(on bridge: any BridgeProtocol) {
        // 【19】createRoom — 创建/加入音视频房间
        //   入参：pmw / pmh / top / left / width / height / playerid / roomid
        //   完整实现：md5(agentinfo+gameinfo+roomid) 算频道名 + Agora joinChannel + 本地画像
        bridge.register("createRoom") { _, callback in
            callback?(.string("createRoom"))
        }

        // 【20】getVideoinfo（H5→Native 方向）— 添加/排版远端视频窗
        //   入参与 createRoom 几乎相同，缺 roomid（已在房间内）
        //   完整实现：Agora setupRemoteVideo + 把 view 放到 H5 指定坐标
        bridge.register("getVideoinfo") { _, callback in
            callback?(.string("getVideoinfo"))
        }

        // 【21】exitRoom — 离开房间
        //   完整实现：Agora leaveChannel + 清理本地/远端 view
        bridge.register("exitRoom") { _, callback in
            callback?(.string("exitRoom"))
        }
    }
}
