124 lines
3.9 KiB
Swift
124 lines
3.9 KiB
Swift
//
|
|
// 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")
|
|
}
|
|
|
|
}
|