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 lensman_id = params.components(separatedBy: "=").last,
- let session_id = params.components(separatedBy: "?").first else { return }
-
- repository.join(type: .session,
- parameter: ["session_id": session_id, "lensman_id": lensman_id])
- .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
- }
- }
- }
|