private static async Task RenderUiAndHandleInputAsync(ITcpPeerMessenger messenger, MessageLog messageLog, bool isChatbotMode) { IMessengerCommandHandler commandHandler = new MessengerCommandHandler(messenger, messageLog); IMessengerCommandParser commandParser = new MessengerCommandParser(); int headerHeight = 2; int splitterHeight = 1; int inputHeight = 5; Header header = new Header(isChatbotMode); int logViewHeight = Console.WindowHeight - headerHeight - splitterHeight - inputHeight; int logViewTop = headerHeight; MessageLogView messageLogView = new MessageLogView(logViewTop, logViewHeight, messageLog, messenger.EndPoint); int splitterTop = headerHeight + logViewHeight; HorizontalSplitter splitter = new HorizontalSplitter(splitterTop); int inputTop = headerHeight + splitterHeight + logViewHeight; MessageTextInput messageTextInput = new MessageTextInput(inputTop); messageTextInput.MessageEntered += async(s, input) => { if (input != "") { try { MessengerCommand command = commandParser.Parse(input); await command.AcceptHandlerAsync(commandHandler); } catch (MessengerCommandParserException ex) { messageLog.Add(new SystemMessage(ex.Message)); } catch (Exception e) { messenger.Stop(); throw e; } } }; var components = new List <ConsoleUiComponent> { header, messageLogView, splitter, messageTextInput }; Console.Clear(); while (messenger.IsStarted) { foreach (var c in components) { c.Render(); } await Task.Delay(500); } }
private void InsertMsgLog(string newsIdList, NewsInfoView firstNews) { try { if (!string.IsNullOrEmpty(newsIdList) && firstNews != null) { var msgLogView = new MessageLogView() { NewsIdList = newsIdList, AppId = firstNews.AppId, MsgContentType = (int)Enum.Parse(typeof(WechatMessageLogType), firstNews.NewsCate), }; this._MessageLogService.InsertView(msgLogView); } } catch (Exception ex) { _Logger.Error("an error occured when add send msg log :{0}", ex); } }