123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import Foundation
- import RxSwift
- public protocol ScanQRViewModelDelegate: class {
- func navigateToGroupFromScanQR(_ item: GroupItem)
- }
- public final class ScanQRViewModel {
- public weak var delegate: ScanQRViewModelDelegate?
- var repository: PhotoGroupRepository
- var disposeBag = DisposeBag()
- public init() {
- repository = PhotoGroupRepository()
- }
- 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 lensmanId = params.components(separatedBy: "=").last,
- let sessionId = params.components(separatedBy: "?").first else { return }
- repository.join(type: .session,
- parameter: ["session_id": sessionId, "lensman_id": lensmanId])
- .subscribe(onSuccess: { item in
- self.delegate?.navigateToGroupFromScanQR(item)
- }).disposed(by: disposeBag)
- case "g":
- repository.join(type: .group,
- parameter: ["group_id": params])
- .subscribe(onSuccess: { item in
- self.delegate?.navigateToGroupFromScanQR(item)
- }).disposed(by: disposeBag)
- default:
- return
- }
- }
- }
|