//
//  NoPassRNBridgeRemoveAccountiOS.swift
//  SdkTest
//
//  Created by Artsiom Shmaenkov on 7.07.21.
//

import Foundation
import NoPassSDKReact
import React

@objc(NoPassRNBridgeRemoveAccountServiceiOS)
public class NoPassRNBridgeRemoveAccountServiceiOS: NSObject, RCTBridgeModule {
    
    public static func moduleName() -> String! {
        return "NoPassRNBridgeRemoveAccountServiceiOS"
    }
    
    public static func requiresMainQueueSetup() -> Bool {
        return true
    }
    
    @objc public static var shared = NoPassRNBridgeRemoveAccountServiceiOS()
    
    private override init() {
        super.init()
    }
    
    @objc public func deleteDevice(_ userCode: String, fcmToken: String, biometricType: String, isScreenLock: Bool, resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
        DispatchQueue.main.async {
            guard let account = NoPassAccountService.shared.fetchAccount(userCode: userCode) else {
                rejecter("404", NoPassRNBridgeError.userNotFound.rawValue, nil)
                return
            }
            
            guard let type = BiometricType(rawValue: biometricType) else {
                rejecter("404", NoPassRNBridgeError.biometricTypeNotFound.rawValue, nil)
                return
            }
            
            NoPassRemoveAccountService.shared.deleteDevice(account:account, session: fcmToken, enabled2FaMethod: type, isScreenLock: isScreenLock) { (error) in
                if let error = error {
                    rejecter(String((error as NSError).code), error.localizedDescription, error)
                } else {
                    resolver(true)
                }
            }
        }
    }
}
