暂无描述

ScanQRViewModel.swift 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // ScanQRViewModel.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by FFIB on 2018/12/18.
  6. // Copyright © 2018 FFIB. All rights reserved.
  7. //
  8. import Foundation
  9. import RxSwift
  10. public protocol ScanQRViewModelDelegate: class {
  11. func navigateToGroupFromScanQR(_ item: GroupItem)
  12. }
  13. public final class ScanQRViewModel {
  14. public weak var delegate: ScanQRViewModelDelegate?
  15. var repository: PhotoGroupRepository
  16. var disposeBag = DisposeBag()
  17. public init() {
  18. repository = PhotoGroupRepository()
  19. }
  20. public func join(code: String) {
  21. let strs = code.components(separatedBy: "/")
  22. guard strs.count > 2, let params = strs.last else { return }
  23. let flag = strs[strs.count - 2]
  24. switch flag {
  25. case "s":
  26. guard let lensmanId = params.components(separatedBy: "=").last,
  27. let sessionId = params.components(separatedBy: "?").first else { return }
  28. repository.join(type: .session,
  29. parameter: ["session_id": sessionId, "lensman_id": lensmanId])
  30. .subscribe(onSuccess: { item in
  31. self.delegate?.navigateToGroupFromScanQR(item)
  32. }).disposed(by: disposeBag)
  33. case "g":
  34. repository.join(type: .group,
  35. parameter: ["group_id": params])
  36. .subscribe(onSuccess: { item in
  37. self.delegate?.navigateToGroupFromScanQR(item)
  38. }).disposed(by: disposeBag)
  39. default:
  40. return
  41. }
  42. }
  43. }