示例#1
0
        private void HandleUserInput()
        {
            while (true)
            {
                var userInput = Console.ReadLine().Trim();
                if (String.IsNullOrEmpty(userInput))
                {
                    continue;
                }

                if (commandMaster.IsCommand(userInput))
                {
                    var commandMessage = commandMaster.FormCommand(userInput);
                    if (commandMessage != null)
                    {
                        MessageEntered?.Invoke(JObject.FromObject(commandMessage));
                    }
                    continue;
                }

                if (Convert.ToString(userInput.Take(2)) == "//")
                {
                    userInput = userInput.Remove(0, 1);
                }
                var message = new ChatMessageFromClient(userInput);
                MessageEntered?.Invoke(JObject.FromObject(message));
            }
        }
示例#2
0
        public ViewModel(string username)
        {
            // Set visible username
            CUsername = username;

            // Initialize empty chats
            UserChats = new ObservableCollection <Chat>();

            // Commands initialization
            Logout         = new Logout(this);
            MessageEntered = new MessageEntered(this);
            SearchUsername = new SearchUsername(this);

            ChatMessages = new ObservableCollection <string>();

            // Create locks for accessing across threads
            UserChatsLock = new object();
            BindingOperations.EnableCollectionSynchronization(UserChats, UserChatsLock);

            ChatMessagesLock = new object();
            BindingOperations.EnableCollectionSynchronization(ChatMessages, ChatMessagesLock);

            // Get existing chats from server
            IRequest request = new GetChats();

            Session.SendRequest(request);
        }