// // ShareCenter.swift // ylgamehall // // H5 friendsShare 调用入口的协调中心,按 msext gameController.m:575-597 行为: // - sharefriend == "1"(好友/私聊)→ 弹 SharePanel 三选一(微信/QQ/抖音) // - sharefriend == "2"(朋友圈) → 直接 WechatShare(朋友圈 timeline 场景) // // 与 Design §8.2 ShareKit 一致:策略模式 + SharePlatform 协议。 // import Foundation @MainActor public enum ShareCenter { /// 统一分发入口。由 FriendsShareHandler 在 handler 闭包内调用。 /// completion 在分享结果回来后触发;UI 期间 await 暂停闭包但 cb 已先返回(msext 行为)。 public static func dispatch(_ content: ShareContent, completion: @escaping (ShareResult) -> Void) { switch content.sharefriend { case "1": // 好友/私聊 → SharePanel 三选一 SharePanel.show(content: content, completion: completion) case "2": // 朋友圈 → 直接 WechatShare(timeline 场景) Task { @MainActor in let result = await WechatShare.shared.share(content, scene: .timeline) completion(result) } default: // 未知 sharefriend:msext 沿用第二条分支兜底(朋友圈微信) Task { @MainActor in let result = await WechatShare.shared.share(content, scene: .timeline) completion(result) } } } }