No Description

ScanQRViewModel.swift 2.0KB

    // // ScanQRViewModel.swift // PaiAi // // Created by ffib on 2018/12/18. // Copyright © 2018 yb. All rights reserved. // import Foundation protocol ScanQRViewModelDelegate: class { func navigateToGroupPage(item: GroupItem) } public enum QRType { case group case session } public final class ScanQRViewModel: Resource, Parsable { var path: Interfaces var parameter: Parameter = [:] weak var delegate: ScanQRViewModelDelegate? public init(type: QRType) { switch type { case .group: path = .joinGroup // parameter = ["user_id": SharedUserInfo.userId, // "nickname": SharedUserInfo.name] case .session: path = .joinSession // parameter = ["user_id": SharedUserInfo.userId, // "nickname": SharedUserInfo.name] } } public func parse(_ json: [String: AnyObject]) -> GroupItem? { guard let data = json["data"] as? [String: AnyObject], let groupInfo = data["group"] as? [String: AnyObject] else { return nil } return GroupItem(value: groupInfo) } public func join(code: String) { let strs = code.components(separatedBy: "/") guard strs.count > 2, let params = strs.last else { return } let flag = strs[strs.count - 2] switch flag { case "s": guard let lensman_id = params.components(separatedBy: "=").last, let session_id = params.components(separatedBy: "?").first else { return } parameter["session_id"] = session_id parameter["lensman_id"] = lensman_id case "g": let group_id = params parameter["group_id"] = group_id default: return } join() } fileprivate func join() { NetworkApi.share.post(resource: self) { (result) in guard case let .success(item) = result else { return } self.delegate?.navigateToGroupPage(item: item) } } }