|
//
// 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)
}
}
}
|