//
//  EventEmitter.swift
//  MadStripeSdk
//
//  Created by Sergio Herrera on 11/9/21.
//  Copyright © 2021 Facebook. All rights reserved.
//

class EventEmitter{

    /// Shared Instance.
    public static var sharedInstance = EventEmitter()

    // ReactNativeEventEmitter is instantiated by React Native with the bridge.
    private static var eventEmitter: ReactNativeEventEmitter!

    private init() {}

    // When React Native instantiates the emitter is registered here.
    func registerEventEmitter(eventEmitter: ReactNativeEventEmitter) {
        EventEmitter.eventEmitter = eventEmitter
    }

    func dispatch(name: String, body: Any?) {
        EventEmitter.eventEmitter.sendEvent(withName: name, body: body)
    }

    /// All Events which must be supported by React Native.
    lazy var allEvents: [String] = {
        var allEventNames: [String] = [
            "log",
            "didReportUnexpectedReaderDisconnect",
            "requestConnectionToken",
            "readerDiscoveryCompletion",
            "didStartInstallingUpdate",
            "didFinishInstallingUpdate",
            "didReportReaderSoftwareUpdateProgress",
            "didChangeConnectionStatus",
            "didRequestReaderInput",
            "didRequestReaderDisplayMessage",
            "didReportAvailableUpdate",
            ];

        return allEventNames
    }()

}

