public ChatUseCase(IChatPresenter presenter, IChatClient chatClient) { _presenter = presenter; _chatClient = chatClient; _presenter.OnConnectButtonClick .Where(x => !string.IsNullOrEmpty(x.Name) && !string.IsNullOrEmpty(x.Uri)) .Subscribe(async x => { await chatClient.Connect(x.Name, x.Uri); _presenter.OnConnectSuccess(); }); _presenter.OnCloseButtonClick .Subscribe(async _ => { await _chatClient.Close(); presenter.OnDisconnect(); }); _presenter.OnMessageSendRequest .Subscribe(x => chatClient.Send(x)); _chatClient.OnReceived .ObserveOnMainThread() .Subscribe(x => presenter.OnMessageReceived(x.Name, x.Message)); _presenter.OnDestroy .Subscribe(_ => { _chatClient.Dispose(); }); }
private static async Task Main(string[] args) { var httpClient = new HttpClient(); httpClient.BaseAddress = new Uri("http://localhost:5000/api/"); _chatClient = new ChatClient(new ChatApiClient(httpClient), new UserApiClient(httpClient)); WelcomeMessage(); var key = Console.ReadKey(); CheckLoginSelection(key); IntroduceLoginData(); await LoginOrCreateUserAsync(key); _chatClient.OverwriteLastLine += (sender, _) => { Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop - 1); }; _chatClient.NewMessageRecived += (sender, s) => { Console.WriteLine(s); }; _chatClient.Connect(); var message = ""; Console.Clear(); while (true) { message = Console.ReadLine(); if (message == "exit") { break; } await _chatClient.SendMessageAsync(message); } _chatClient.Dispose(); }
public void Dispose() { _chatClient?.Dispose(); }
public void Dispose() { Stop(); _client.Dispose(); }
public void Dispose() { client.Dispose(); pubSubClient.Dispose(); }