public async Task RefreshMessages() { if (BusyStart != null) { BusyStart(); } List <Message> messages; var query = new MessageQuery { Oldest = _latest }; if (ChannelId.StartsWith("D")) { messages = await _slackClient.GetImMessages(ChannelId, query); } else { messages = await _slackClient.GetChannelMessages(ChannelId, query); } // update dates on older ones if this isn't the first load if (!_firstLoad && Messages.Any()) { foreach (var m in Messages) { // remove NEW msg from older ones (temporary hack)... if (m.Title.StartsWith("[NEW!] ")) { m.Title = m.Title.Replace("[NEW!] ", ""); } // re-Humanize the time stamp var dt = JavascriptDateTimeConverter.JsonToDate(m.Ts).ToLocalTime(); m.SubTitle = dt.Humanize(false); } } if (messages.Any()) { _latest = messages[0].ts + 1; messages.RemoveAll(m => m.hidden); messages.Reverse(); var members = await _slackClient.GetMembers(); foreach (var message in messages) { var userId = message.user; var member = members.FirstOrDefault(mem => mem.id == userId) ?? new Member { real_name = message.username, profile = new Profile { title = "" } }; var title = "{0}{1}".FormatWith(_firstLoad ? "" : "[NEW!] ", member.real_name); var dt = JavascriptDateTimeConverter.JsonToDate(message.ts).ToLocalTime(); Messages.Insert(0, new SlackItem { Ts = message.ts, Title = title, SubTitle = dt.Humanize(false), Content = message.text }); } } _firstLoad = false; if (BusyStop != null) { BusyStop(); } }