|
//
// ScanQRViewModel.swift
// PaiAi
//
// Created by ffib on 2018/12/18.
// Copyright © 2018 yb. All rights reserved.
//
import Foundation
protocol ScanQRViewModelDelegate {
func navigateTo()
}
public final class ScanQRViewModel {
fileprivate var groupResource: Resource<GroupItem>?
fileprivate var sessionResource: Resource<GroupItem>?
public init() {
groupResource = Resource<GroupItem>(url: .joinGroup, param: ["user_id": SharedUserInfo.userId as AnyObject,
"nickname": SharedUserInfo.name as AnyObject],
parse: parse)
sessionResource = Resource<GroupItem>(url: .joinSession, param: ["user_id": SharedUserInfo.userId as AnyObject,
"nickname": SharedUserInfo.name as AnyObject],
parse: parse)
}
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 }
joinSession(session_id: session_id, lensman_id: lensman_id)
case "g":
let group_id = params
joinGroup(group_id: group_id)
default:
return
}
}
fileprivate func joinGroup(group_id: String) {
groupResource?.parameter["group_id"] = group_id as AnyObject
NetworkApi.share.post(resource: groupResource!) { (result) in
}
}
fileprivate func joinSession(session_id: String, lensman_id: String) {
sessionResource?.parameter["session_id"] = session_id as AnyObject
sessionResource?.parameter["lensman_id"] = lensman_id as AnyObject
NetworkApi.share.post(resource: sessionResource!) { (result) in
}
}
}
|