using System; using System.Collections.Generic; using Newtonsoft.Json; namespace WalletConnectSharp.Core.Events { public class EventManager : IEventProvider where TEventArgs : IEvent, new() { private static EventManager _instance; public EventHandlerMap EventTriggers; public static EventManager Instance { get { if (_instance == null) { _instance = new EventManager(); } return _instance; } } private EventManager() { EventTriggers = new EventHandlerMap(CallbackBeforeExecuted); EventFactory.Instance.Register(this); } private void CallbackBeforeExecuted(object sender, TEventArgs e) { } public void PropagateEvent(string topic, string responseJson) { if (EventTriggers.Contains(topic)) { var eventTrigger = EventTriggers[topic]; if (eventTrigger != null) { var response = JsonConvert.DeserializeObject(responseJson); var eventArgs = new TEventArgs(); eventArgs.SetData(response); eventTrigger(this, eventArgs); } } } } }