using PE.Plugins.PubnubChat.Models; using PubnubApi; using System; namespace PE.Plugins.PubnubChat { public enum ChatState { None, Waiting, Typing, InCall } public class ChatService : IChatService, IDisposable { #region Events public event InitializationChangedEventHandler InitializedChanged; public event EventHandler ConnectedChanged; public event EventHandler<MessageEventArgs> MessageReceived; public event EventHandler<PresenceEventArgs> ChannelJoined; public event EventHandler<PresenceEventArgs> ChannelLeft; public event EventHandler<PresenceEventArgs> ChannelTimeout; public event EventHandler<PresenceEventArgs> ChannelState; public event EventHandler<MessageEventArgs> PublishComplete; #endregion Events #region Fields private Pubnub _Pubnub; private readonly string _PublishKey = string.Empty; private readonly string _SubscribeKey = string.Empty; private SubscribeCallbackExt _ListenerSubscribeCallack; private string _UserId = string.Empty; private string _AuthKey = string.Empty; private bool _Disposed = false; private int _FailCount = 0; private string _PushData = string.Empty; #endregion Fields #region Constructors public ChatService(ChatConfiguration configuration) { _PublishKey = configuration.PublishKey; _SubscribeKey = configuration.SubscribeKey; } ~ChatService() { Dispose(); } #endregion Constructors #region Properties public bool Connected { get; private set; } public bool Initialized { get; private set; } = false; #endregion Properties #region Init public void Initialize(string userId, string authKey = null, bool reset = true, string push = "") {
public ChatService(ChatConfiguration configuration) { _PublishKey = configuration.PublishKey; _SubscribeKey = configuration.SubscribeKey; }