//
//  RegisterInteractor.swift
//  AirbridgeReactNative
//
//  Created by WOF on 7/24/24.
//

import React
import Airbridge

@objc(RegisterInteractor)
class RegisterInteractor: NSObject {
    @objc(setUserID:)
    func setUserID(_ id: String) {
        Airbridge.setUserID(id)
    }
    
    @objc(clearUserID)
    func clearUserID() {
        Airbridge.clearUserID()
    }
    
    @objc(setUserEmail:)
    func setUserEmail(_ email: String) {
        Airbridge.setUserEmail(email)
    }
    
    @objc(clearUserEmail)
    func clearUserEmail() {
        Airbridge.clearUserEmail()
    }
    
    @objc(setUserPhone:)
    func setUserPhone(_ phone: String) {
        Airbridge.setUserPhone(phone)
    }
    
    @objc(clearUserPhone)
    func clearUserPhone() {
        Airbridge.clearUserPhone()
    }
    
    @objc(setUserAttribute:)
    func setUserAttribute(_ option: [AnyHashable: Any]) {
        if
            let key = option["key"] as? String,
            let value = option["value"]
        {
            Airbridge.setUserAttribute(key: key, value: value)
        }
    }
    
    @objc(removeUserAttribute:)
    func removeUserAttribute(_ key: String) {
        Airbridge.removeUserAttribute(key: key)
    }
    
    @objc(clearUserAttributes)
    func clearUserAttributes() {
        Airbridge.clearUserAttributes()
    }
    
    @objc(setUserAlias:value:)
    func setUserAlias(_ key: String, _ value: String) {
        Airbridge.setUserAlias(key: key, value: value)
    }
    
    @objc(removeUserAlias:)
    func removeUserAlias(_ key: String) {
        Airbridge.removeUserAlias(key: key)
    }
    
    @objc(clearUserAlias)
    func clearUserAlias() {
        Airbridge.clearUserAlias()
    }
    
    @objc(clearUser)
    func clearUser() {
        Airbridge.clearUser()
    }
    
    @objc(setDeviceAlias:value:)
    func setDeviceAlias(_ key: String, _ value: String) {
        Airbridge.setDeviceAlias(key: key, value: value)
    }
    
    @objc(removeDeviceAlias:)
    func removeDeviceAlias(_ key: String) {
        Airbridge.removeDeviceAlias(key: key)
    }
    
    @objc(clearDeviceAlias)
    func clearDeviceAlias() {
        Airbridge.clearDeviceAlias()
    }
    
    @objc(registerPushToken:)
    func registerPushToken(_ token: String) {
        if let data = Data(hex: token) {
            Airbridge.registerPushToken(data)
        }
    }
}
