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(); } }