// // InviteJoinVC.swift // QuickLocation // // Created by 八条 on 2026/6/1. // import UIKit import ObjectMapper import RxSwift import RxCocoa import Kingfisher class InviteJoinVC: BaseViewController { fileprivate var rootView: InviteJoinView! override func loadView() { rootView = InviteJoinView(frame: UIScreen.main.bounds) view = rootView } private let groupInModel: GroupInfoModel? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // 分享 rootView.shareAppBtn.rx.tap.subscribe(onNext: { _ in SharePopView.show() }).disposed(by: disposeBag) // 分享邀请码 rootView.shareCodeBtn.rx.tap.subscribe(onNext: { [weak self] in guard let self = self else { return } guard let config = AppContextManager.shared.systemConfig, let shareConfig = config.shareConfig else { return } DLToast.showLoading() let fallbackImage = UIImage(named: "Common/logo108") let imageURL: URL? = { if shareConfig.image.isEmpty { return nil } return URL(string: shareConfig.image) }() let sendMessage: (UIImage?) -> Void = { [weak self] thumbImage in guard let self = self else { return } DLToast.dismiss() guard let screenshot = self.rootView.inviteInfoView.takeScreenshot(), let imageData = screenshot.pngData() else { DLToast.showError(text: "分享失败") return } let message = WXMediaMessage() message.title = "邀请加入圈子" message.description = shareConfig.content if let thumb = thumbImage { message.setThumbImage(thumb) } let imageObject = WXImageObject() imageObject.imageData = imageData message.mediaObject = imageObject let req = SendMessageToWXReq() req.bText = false req.message = message req.scene = 0 WXApi.send(req) } if let url = imageURL { KingfisherManager.shared.retrieveImage(with: url) { result in switch result { case .success(let value): sendMessage(value.image) case .failure: sendMessage(fallbackImage) } } } else { sendMessage(fallbackImage) } }).disposed(by: disposeBag) guard let model = groupInModel else { return } rootView.groupIcon.image = model.groupIcon rootView.groupNameLab.text = model.name requestOperateGroup(key: model.group_key) } // MARK: - API private func requestOperateGroup(key: String) { DLToast.showLoading() GroupService.operate(opType: "share", requestData: ["group_key" : key]).subscribe(onNext: { [weak self] response in guard let self = self, let data = response.data, let code = data["share_code"] as? String else { return } self.rootView.inviteCodeLab.text = code self.rootView.qrCodeImgView.image = code.createQRCode(size: self.rootView.qrCodeImgView.dl.size) }, onError: { (error) in DLToast.show(text: "获取错误,请重试") { AppRouter.shared.popOrDismiss() } }).disposed(by: disposeBag) } // MARK: - Init init(groupInfo: [String: Any]) { self.groupInModel = GroupInfoModel.init(JSON: groupInfo) super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } }