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