private UserCheckStatus GetCheckStatus(ClientGuard client) { if (_userId == client.Chat.User.Id) { return(UserCheckStatus.Checked); } var user = client.Chat.GetUser(_userId); var certificateStatus = Connection.GetCertificateValidationStatus(user.Certificate, ClientModel.TrustedCertificates); switch (certificateStatus) { case CertificateStatus.Trusted: var commonName = user.Certificate.GetNameInfo(X509NameType.SimpleName, false); var prefix = GenerateCertificateDialog.TcpChatNickPrefix; var certificateNick = commonName.StartsWith(prefix) ? commonName.Substring(prefix.Length) : commonName; return(certificateNick.Equals(_userId.Nick) ? UserCheckStatus.Checked : UserCheckStatus.CheckedNotMatch); case CertificateStatus.SelfSigned: case CertificateStatus.Untrusted: case CertificateStatus.Unknown: return(UserCheckStatus.NotChecked); } return(UserCheckStatus.NotChecked); }
private void RefreshMessages(ClientGuard client, RoomRefreshedEventArgs e) { var room = client.Chat.GetRoom(Name); if (e.RemovedMessages != null && e.RemovedMessages.Count > 0) { for (int i = Messages.Count - 1; i >= 0; i--) { var message = Messages[i]; if (e.RemovedMessages.Contains(message.MessageId)) { Messages.RemoveAt(i); } message.Dispose(); } } if (e.AddedMessages != null && e.AddedMessages.Count > 0) { foreach (var messageId in e.AddedMessages) { var message = room.GetMessage(messageId); AddMessage(message.Id, message.Time, message.Owner, message.Text); } } }
private void RefreshReceivers(ClientGuard client) { recivers.Clear(); var selectedReceiverNick = selectedReceiver == allInRoom ? null : selectedReceiver.Nick; var newReciver = (UserViewModel)null; foreach (var user in client.Chat.GetUsers()) { if (user.Nick == client.Chat.User.Nick) { continue; } var receiver = new UserViewModel(user.Nick, this); recivers.Add(receiver); if (user.Nick == selectedReceiverNick) { newReciver = receiver; } } OnPropertyChanged("Receivers"); selectedReceiver = newReciver == null ? allInRoom : newReciver; OnPropertyChanged("SelectedReceiver"); }
private void RefreshReceivers(ClientGuard client) { _recivers.Clear(); LightUserViewModel newReciver = null; var selectedReceiverId = _selectedReceiver == _allInRoomReceiver ? UserId.Empty : _selectedReceiver.UserId; foreach (var user in client.Chat.GetUsers()) { if (user.Id == client.Chat.User.Id) { continue; } var receiver = new LightUserViewModel(user.Id, this); _recivers.Add(receiver); if (user.Id == selectedReceiverId) { newReciver = receiver; } } SelectedReceiver = newReciver == null ? _allInRoomReceiver : newReciver; OnPropertyChanged(nameof(Receivers)); }
public PostedFileRoomViewModel(ClientGuard client, string roomName, PostedFilesViewModel parent) : base(parent, false) { this._parent = parent; RoomName = roomName; PostedFiles = new ObservableCollection <PostedFileViewModel>(); }
public PostedFileRoomViewModel(ClientGuard client, string roomName, PostedFilesViewModel parent) : base(parent, false) { this.parent = parent; RoomName = roomName; PostedFiles = new ObservableCollection<PostedFileViewModel>(); }
public PostedFileViewModel(ClientGuard client, PostedFile postedFile, PostedFileRoomViewModel parent) : base(parent, false) { this._parent = parent; FileId = postedFile.File.Id; FileName = postedFile.File.Name; RemoveCommand = new Command(Remove, _ => ClientModel.Api != null); }
private void FillMessages(ClientGuard client) { var room = client.Chat.GetRoom(Name); var ordered = room.Messages.OrderBy(m => m.Time); foreach (var msg in ordered) { AddMessage(msg.Id, msg.Time, msg.Owner, msg.Text); } }
private FileDescription GetFile(ClientGuard client, FileId fileId) { var room = client.Chat.GetRoom(parentRoom.Name); var file = room.TryGetFile(fileId); if (file == null) { throw new InvalidOperationException("File not found"); } return(file); }
private static void UpdateRoomFiles(ClientGuard client, Room currentRoom, Room prevRoom) { var removed = new HashSet <FileId>(prevRoom.Files.Select(f => f.Id)); foreach (var file in currentRoom.Files) { removed.Remove(file.Id); } foreach (var fileId in removed) { ClientModel.Api.ClosePostedFile(client, currentRoom.Name, fileId); } }
private void FillMessages(ClientGuard client) { Room room; if (!client.Rooms.TryGetValue(Name, out room)) { throw new ArgumentException("e.RoomName"); } var ordered = room.Messages.OrderBy(m => m.Time); foreach (var msg in ordered) { AddMessage(msg.Id, msg.Time, msg.Owner, msg.Text); } }
private VoiceRoom GetVoiceRoom(ClientGuard client, string name) { Room room; if (!client.Rooms.TryGetValue(name, out room)) { throw new ArgumentException("Room does not exist"); } var voiceRoom = room as VoiceRoom; if (voiceRoom == null) { throw new ArgumentException("This room not voice"); } return(voiceRoom); }
private void RefreshUsers(ClientGuard client) { foreach (var user in Users) { user.Dispose(); } Users.Clear(); var room = client.Chat.GetRoom(Name); foreach (var user in room.Users) { Users.Add(new UserViewModel(user, this)); } OnPropertyChanged(nameof(Name)); OnPropertyChanged(nameof(Users)); }
public void ClosePostedFile(ClientGuard client, string roomName, FileId fileId) { // Remove file from room Room room; if (client.Rooms.TryGetValue(roomName, out room)) { room.Files.RemoveAll(f => f.Id == fileId); } // Remove downloading files var closing = new List <DownloadingFile>(); client.DownloadingFiles.RemoveAll(f => { if (f.File.Id == fileId) { closing.Add(f); return(true); } return(false); }); foreach (var file in closing) { file.Dispose(); } // Notify var downloadEventArgs = new FileDownloadEventArgs { RoomName = roomName, FileId = fileId, Progress = 0 }; ClientModel.Notifier.PostedFileDeleted(downloadEventArgs); }
private static void UpdateRoomUsers(ClientGuard client, Room currentRoom, Room prevRoom) { var removed = new HashSet <string>(prevRoom.Users); var added = new HashSet <string>(currentRoom.Users); foreach (var nick in prevRoom.Users) { added.Remove(nick); } foreach (var nick in currentRoom.Users) { removed.Remove(nick); } if (currentRoom.Name == ServerModel.MainRoomName) { foreach (var nick in removed) { client.Users.Remove(nick); } } // TODO: Maybe use OOP. But room is common entity for server and client. // And this is only client operation. // So it would be strange to add it to the common entity. if (currentRoom.Enabled && currentRoom.Type == RoomType.Voice) { foreach (var nick in added) { ClientModel.Api.AddInterlocutor(nick); } foreach (var nick in removed) { ClientModel.Api.RemoveInterlocutor(nick); } } }
private void RefreshUsers(ClientGuard client) { foreach (var user in Users) { user.Dispose(); } Users.Clear(); Room room; if (!client.Rooms.TryGetValue(Name, out room)) { throw new ArgumentException("e.RoomName"); } foreach (var user in room.Users) { Users.Add(new UserViewModel(user, this)); } OnPropertyChanged("Name"); OnPropertyChanged("Admin"); OnPropertyChanged("Users"); }
public PostedFileViewModel(ClientGuard client, PostedFile postedFile, PostedFileRoomViewModel parent) : base(parent, false) { this.parent = parent; FileId = postedFile.File.Id; FileName = postedFile.File.Name; RemoveCommand = new Command(Remove, _ => ClientModel.Api != null); }
private FileDescription GetFile(ClientGuard client, FileId fileId) { var room = client.Rooms[parentRoom.Name]; return room.Files.Find(f => f.Id == fileId); }
private void RefreshUsers(ClientGuard client) { foreach (var user in Users) user.Dispose(); Users.Clear(); Room room; if (!client.Rooms.TryGetValue(Name, out room)) throw new ArgumentException("e.RoomName"); foreach (var user in room.Users) Users.Add(new UserViewModel(user, this)); OnPropertyChanged("Name"); OnPropertyChanged("Admin"); OnPropertyChanged("Users"); }
private void RefreshReceivers(ClientGuard client) { recivers.Clear(); var selectedReceiverNick = selectedReceiver == allInRoom ? null : selectedReceiver.Nick; var newReciver = (UserViewModel) null; foreach (var user in client.Users.Values) { if (user.Nick == client.User.Nick) continue; var receiver = new UserViewModel(user.Nick, this); recivers.Add(receiver); if (user.Nick == selectedReceiverNick) newReciver = receiver; } OnPropertyChanged("Receivers"); selectedReceiver = newReciver == null ? allInRoom : newReciver; OnPropertyChanged("SelectedReceiver"); }
private void FillMessages(ClientGuard client) { Room room; if (!client.Rooms.TryGetValue(Name, out room)) throw new ArgumentException("e.RoomName"); var ordered = room.Messages.OrderBy(m => m.Time); foreach (var msg in ordered) AddMessage(msg.Id, msg.Time, msg.Owner, msg.Text); }
private bool GetClientStatus(ClientGuard client) { return(client.Chat.User.Id == _userId); }
private WPFColor GetColor(ClientGuard client) { var user = client.Chat.GetUser(_userId); return(WPFColor.FromRgb(user.NickColor.R, user.NickColor.G, user.NickColor.B)); }
private FileDescription GetFile(ClientGuard client, FileId fileId) { var room = client.Rooms[parentRoom.Name]; return(room.Files.Find(f => f.Id == fileId)); }
private FileDescription GetFile(ClientGuard client, FileId fileId) { var room = client.Chat.GetRoom(_parentRoom.Name); return(room.TryGetFile(fileId)); }