//
//  ScanQRViewModel.swift
//  PaiaiDataKit
//
//  Created by FFIB on 2018/12/18.
//  Copyright © 2018 FFIB. All rights reserved.
//

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