private async Task RefreshImChannels(bool force = false) { if (!force && ImChannels.Any()) { return; } if (BusyStart != null) { BusyStart(); } ImChannels.Clear(); var members = await _slackClient.GetMembers(); var ims = await _slackClient.GetImChannels(); var imsVm = new List <SlackItem>(); // todo move isDeleted flag to slack client foreach (var c in ims.Where(im => !im.is_user_deleted)) { var m = members.FirstOrDefault(mem => mem.id == c.user) ?? new Member { real_name = c.user, profile = new Profile { image_48 = "Assets/MediumGray.png", title = "" } }; imsVm.Add(new SlackItem(c.id, m.real_name, m.profile.title, m.real_name, null, m.profile.image_48)); } foreach (var item in imsVm.OrderBy(c => c.Title)) { ImChannels.Add(item); } if (BusyStop != null) { BusyStop(); } }
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(); } }