internal static UnifiedBubbleGroup CreateUnifiedInternal(List <BubbleGroup> groups, BubbleGroup primaryGroup, string id = null) { var service = ServiceManager.GetUnified(); if (service == null) { return(null); } var newBubble = new NewBubble(Time.GetNowUnixTimestamp(), Bubble.BubbleDirection.Incoming, Guid.NewGuid() + "@unified", null, false, service); var unified = new UnifiedBubbleGroup(groups, primaryGroup, newBubble, id); if (id == null) { var unread = groups.FirstOrDefault(BubbleGroupSettingsManager.GetUnread) != null; BubbleGroupSettingsManager.SetUnread(unified, unread); } foreach (var group in groups) { @group.RegisterUnified(unified); } var associatedPartiallyLoadedGroups = groups.Where(x => x.PartiallyLoaded).ToList(); if (associatedPartiallyLoadedGroups.Any()) { VisualBubble latest = null; foreach (var innerGroup in unified.Groups) { var current = innerGroup.Bubbles.Last(); if (latest == null || current.Time > latest.Time) { latest = current; } } if (latest != null) { unified.Bubbles.Clear(); unified.Bubbles.Add(latest); } return(unified); } Populate(unified); return(unified); }