using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Threading.Tasks; using gehGassi.Dto.Messages; namespace gehGassi.Web.Hubs { /// /// Schnittstellenbeschreibung für einen Hub der verbundene Benutzer verwalten kann /// public interface IAppHubUsers { public ConcurrentDictionary> ConnectedUsers { get; set; } } /// /// Schnittstellenbeschreibung für einen Hub der App-Nachrichten ermöglicht /// public interface IAppHub { /// /// Buchen der Events eines App-Users /// /// ID des App-Users /// Task Task JoinAppUser(string appUserId); /// /// Abbsestellen der Events eines App-Users /// /// ID des App-Users /// Task Task LeaveAppUser(string appUserId); /// /// Buchen der Events einer Konversation für einen Benutzer /// /// Id der Konversation /// ID des App-Users /// Task Task JoinConversation(string conversationId, string appUserId); /// /// Abbsestellen der Events einer Konversation /// /// Id der Konversation /// ID des App-Users /// Task Task LeaveConversation(string conversationId, string appUserId); } /// /// Schnittstellenbeschreibung für einen Service der den Versand von SignalR-Nachrichten /// vom Server an die App ermöglicht. /// public interface IAppHubSender { /// /// Senden eine Nachricht an einen Benutzer /// /// Benutzer - email /// Nachricht /// Task Task MessageForUser(string user, string message); #region App-User /// /// Event wenn sich die Daten eines App-Users geändert haben /// /// Id des App-Users /// Liste Benutzer die ignoriert werden soll /// Task Task AppUserChangedAsync(string appUserId, List ignoreUsers = null); /// /// Gibt zurück ob ein Benutzer verbunden ist /// /// Benutzername /// true wenn verbunden, false sonst Task IsUserConnectedAsync(string userName); /// /// Event wenn sich ein Benutzer ausloggen soll /// /// Id des App-Users /// Task LogoutAsync(string appUserId); #endregion #region Conversations & Messages /// /// Event wenn eine Nachricht für einen Benutzer angekommen ist /// /// /// Task MessageAddedAsync(string appUserId); /// /// Event wenn eine Nachricht für einen Benutzer angekommen ist /// /// /// Task SystemMessageAddedAsync(string appUserId); #endregion #region News & Newscategories /// /// Event wenn sich NewsKategorien geändert haben /// /// Liste Benutzer die ignoriert werden soll /// Task NewsCategoriesChangedAsync(List ignoreUsers = null); #endregion } }