Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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>();
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 8
0
        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);
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
            }
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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));
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
                }
            }
        }
Exemplo n.º 16
0
        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");
        }
Exemplo n.º 17
0
        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);
        }
Exemplo n.º 18
0
 private FileDescription GetFile(ClientGuard client, FileId fileId)
 {
     var room = client.Rooms[parentRoom.Name];
       return room.Files.Find(f => f.Id == fileId);
 }
Exemplo n.º 19
0
        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");
        }
Exemplo n.º 20
0
        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");
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
 private bool GetClientStatus(ClientGuard client)
 {
     return(client.Chat.User.Id == _userId);
 }
Exemplo n.º 23
0
        private WPFColor GetColor(ClientGuard client)
        {
            var user = client.Chat.GetUser(_userId);

            return(WPFColor.FromRgb(user.NickColor.R, user.NickColor.G, user.NickColor.B));
        }
Exemplo n.º 24
0
        private FileDescription GetFile(ClientGuard client, FileId fileId)
        {
            var room = client.Rooms[parentRoom.Name];

            return(room.Files.Find(f => f.Id == fileId));
        }
Exemplo n.º 25
0
        private FileDescription GetFile(ClientGuard client, FileId fileId)
        {
            var room = client.Chat.GetRoom(_parentRoom.Name);

            return(room.TryGetFile(fileId));
        }