public IObservable <TD.Message> SendText(TD.Chat chat, TD.InputMessageContent.InputMessageText messageText) { return(Observable.FromAsync(ct => _agent.ExecuteAsync(new TD.SendMessage { ChatId = chat.Id, InputMessageContent = messageText }))); }
public ChatContext( Topic topic, ChatInteractor chatInteractor, MessageSender messageSender ) { _topic = topic; _chatInteractor = chatInteractor; _messageSender = messageSender; _prependSubscription = _chatInteractor .Prepends() .Buffer(TimeSpan.FromSeconds(1), 16) .Where(list => list.Count > 0) .ObserveOn(AvaloniaScheduler.Instance) .Subscribe(ObservePrepends); _appendSubscription = _chatInteractor .Appends() .Buffer(TimeSpan.FromSeconds(1), 16) .Where(list => list.Count > 0) .ObserveOn(AvaloniaScheduler.Instance) .Subscribe(ObserveAppends); _actionSubscription = _chatInteractor .Actions() .ObserveOn(AvaloniaScheduler.Instance) .Subscribe(ObserveActions); SendCommand = ReactiveCommand.Create(() => { var messageText = new TD.InputMessageContent.InputMessageText { Text = new TD.FormattedText { Text = _editorText }, ClearDraft = true }; _messageSender .SendText(topic.Chat, messageText) .Subscribe(ObserveSendResult, ObserveSendError, ObserveSendComplete); }); Entities = new ReactiveList <ChatEntity>(); _chatInteractor .LoadRecent() .ObserveOn(AvaloniaScheduler.Instance) .Subscribe(ObserveLoadRecent); }