public static ChatUserModel GetUser(this ChatUserEventModel chatUserEvent) { return(new ChatUserModel() { userId = chatUserEvent.id, userName = chatUserEvent.username, userRoles = chatUserEvent.roles }); }
private async Task <UserViewModel> AddUser(ChatUserEventModel chatUserEvent) { return(await this.AddUser(new ChatUserModel() { userId = chatUserEvent.id, userName = chatUserEvent.username, userRoles = chatUserEvent.roles })); }
private async void ChatClient_OnUserLeaveOccurred(object sender, ChatUserEventModel chatUser) { await this.userJoinLeaveEventsSemaphore.WaitAndRelease(() => { this.userLeaveEvents[chatUser.id] = chatUser; return(Task.FromResult(0)); }); }
private async void ChatClient_OnUserJoinOccurred(object sender, ChatUserEventModel e) { UserViewModel user = new UserViewModel(e); await this.AddUser(user); this.OnUserJoinOccurred(sender, user); }
private void ChatClient_OnUserLeaveOccurred(object sender, ChatUserEventModel e) { UserViewModel user = new UserViewModel(e); this.RemoveUser(user); this.OnUserLeaveOccurred(sender, user); }
private void ChatClient_UserLeaveOccurred(object sender, ChatUserEventModel e) { ChatUser user = this.chatUsers.FirstOrDefault(u => u.ID.Equals(e.id)); if (user != null) { this.chatUsers.Remove(user); } }
private async void ChatClient_OnUserLeaveOccurred(object sender, ChatUserEventModel e) { UserViewModel user = await ChannelSession.ChannelUsers.RemoveUser(e.id); if (user != null) { this.OnUserLeaveOccurred(sender, user); } }
private async void ChatClient_OnUserJoinOccurred(object sender, ChatUserEventModel e) { UserViewModel user = await this.AddUser(e); if (user != null) { this.OnUserJoinOccurred(sender, user); } }
private void ChatClient_UserJoinOccurred(object sender, ChatUserEventModel e) { ChatUser user = this.chatUsers.FirstOrDefault(u => u.ID.Equals(e.id)); if (user == null) { this.chatUsers.Add(new ChatUser(e)); } }
private async void ChatClient_OnUserTimeoutOccurred(object sender, ChatUserEventModel e) { UserViewModel user = await ChannelSession.ChannelUsers.GetUser(e.user); if (user != null) { this.OnUserTimeoutOccurred(sender, user); if (ChannelSession.Constellation.CanUserRunEvent(user, EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserTimeout))) { ChannelSession.Constellation.LogUserRunEvent(user, EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserTimeout)); await ChannelSession.Constellation.RunEventCommand(ChannelSession.Constellation.FindMatchingEventCommand(EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserTimeout)), user); } } }
private async Task ChatterJoinLeaveBackground() { await BackgroundTaskWrapper.RunBackgroundTask(this.backgroundThreadCancellationTokenSource, async (tokenSource) => { List <ChatUserEventModel> joinsToProcess = new List <ChatUserEventModel>(); await this.userJoinLeaveEventsSemaphore.WaitAndRelease(() => { for (int i = 0; i < userJoinLeaveEventsTotalToProcess && i < this.userJoinEvents.Count(); i++) { ChatUserEventModel chatUser = this.userJoinEvents.Values.First(); joinsToProcess.Add(chatUser); this.userJoinEvents.Remove(chatUser.id); } return(Task.FromResult(0)); }); if (joinsToProcess.Count > 0) { IEnumerable <UserViewModel> processedUsers = await ChannelSession.ActiveUsers.AddOrUpdateUsers(joinsToProcess.Select(u => u.GetUser())); this.OnUsersJoinOccurred(this, processedUsers); } List <ChatUserEventModel> leavesToProcess = new List <ChatUserEventModel>(); await this.userJoinLeaveEventsSemaphore.WaitAndRelease(() => { for (int i = 0; i < userJoinLeaveEventsTotalToProcess && i < this.userLeaveEvents.Count(); i++) { ChatUserEventModel chatUser = this.userLeaveEvents.Values.First(); leavesToProcess.Add(chatUser); this.userLeaveEvents.Remove(chatUser.id); } return(Task.FromResult(0)); }); if (leavesToProcess.Count > 0) { IEnumerable <UserViewModel> processedUsers = await ChannelSession.ActiveUsers.RemoveUsers(leavesToProcess.Select(u => u.id)); this.OnUsersLeaveOccurred(this, processedUsers); } tokenSource.Token.ThrowIfCancellationRequested(); await Task.Delay(2500, tokenSource.Token); tokenSource.Token.ThrowIfCancellationRequested(); }); }
private async void ChatClient_OnUserUpdateOccurred(object sender, ChatUserEventModel chatUser) { UserViewModel user = await ChannelSession.ActiveUsers.AddOrUpdateUser(chatUser.GetUser()); if (user != null) { this.OnUserUpdateOccurred(sender, user); if (chatUser.roles != null && chatUser.roles.Count() > 0 && chatUser.roles.Where(r => !string.IsNullOrEmpty(r)).Contains(EnumHelper.GetEnumName(MixerRoleEnum.Banned))) { if (ChannelSession.Constellation.CanUserRunEvent(user, EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserBan))) { ChannelSession.Constellation.LogUserRunEvent(user, EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserBan)); await ChannelSession.Constellation.RunEventCommand(ChannelSession.Constellation.FindMatchingEventCommand(EnumHelper.GetEnumName(OtherEventTypeEnum.MixerUserBan)), user); } } } }
private static void ChatClient_OnUserJoinOccurred(object sender, ChatUserEventModel e) { Log($"{e.username}\tjoined"); }
private static void ChatClient_OnUserLeaveOccurred(object sender, ChatUserEventModel e) { System.Console.WriteLine(string.Format("{0} has left chat", e.username)); }
private static void ChatClient_OnUserLeaveOccurred(object sender, ChatUserEventModel e) { Log($"{e.username}\tleft"); }
public UserViewModel(ChatUserEventModel userEvent) : this(userEvent.id, userEvent.username, userEvent.roles) { }
private void ChatClient_UserTimeoutOccurred(object sender, ChatUserEventModel e) { this.viewerCount--; this.CurrentViewersTextBlock.Text = this.viewerCount.ToString(); }
public ChatUser(ChatUserEventModel userEvent) : this(userEvent.id, userEvent.username, userEvent.roles) { }
private void ChatClient_UserTimeoutOccurred(object sender, ChatUserEventModel e) { }
/// <summary> /// Gets information about the specified user. /// </summary> /// <param name="user">The user to get</param> /// <returns>The user's information</returns> public async Task <UserWithChannelModel> GetUser(ChatUserEventModel user) { Validator.ValidateVariable(user, "user"); return(await this.GetUser(user.id)); }
private void ChatClient_UserUpdateOccurred(object sender, ChatUserEventModel e) { }