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)); } }
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); }