public static void Delete(BubbleGroup group) { lock (BubbleGroupDatabase.OperationLock) { var unifiedGroup = @group as UnifiedBubbleGroup; if (unifiedGroup != null) { DeleteUnified(unifiedGroup); return; } var file = BubbleGroupDatabase.GetLocation(@group); if (File.Exists(file)) { File.Delete(file); } BubbleGroupSync.RemoveFromSync(@group); BubbleGroupSync.DeleteBubbleGroupIfHasAgent(@group); BubbleGroupManager.BubbleGroupsRemove(@group); } }
public static UnifiedBubbleGroup CreateUnified(List <BubbleGroup> groups, BubbleGroup primaryGroup) { lock (BubbleGroupDatabase.OperationLock) { var unifiedGroupsToKill = new HashSet <UnifiedBubbleGroup>(); foreach (var group in groups) { if (group.IsUnified) { unifiedGroupsToKill.Add(group.Unified); @group.DeregisterUnified(); } } foreach (var unifiedGroup in unifiedGroupsToKill) { BubbleGroupManager.BubbleGroupsRemove(unifiedGroup); } BubbleGroupIndex.RemoveUnified(unifiedGroupsToKill.Select(x => x.ID).ToArray()); var unified = CreateUnifiedInternal(groups, primaryGroup); BubbleGroupIndex.AddUnified(unified); BubbleGroupManager.BubbleGroupsAdd(unified); BubbleGroupSettingsManager.SetUnreadIndicatorGuid(unified, unified.LastBubbleSafe().ID, false); return(unified); } }
public static UnifiedBubbleGroup CreateUnified(List <BubbleGroup> groups, BubbleGroup primaryGroup) { lock (BubbleGroupDatabase.OperationLock) { var unifiedGroupsToKill = new HashSet <UnifiedBubbleGroup>(); foreach (var group in groups) { if (group.IsUnified) { unifiedGroupsToKill.Add(group.Unified); @group.DeregisterUnified(); } } foreach (var unifiedGroup in unifiedGroupsToKill) { BubbleGroupManager.BubbleGroupsRemove(unifiedGroup); } UnifiedBubbleGroupsDatabase.Remove(unifiedGroupsToKill); var unified = CreateUnifiedInternal(groups, primaryGroup); UnifiedBubbleGroupsDatabase.Add(unified, new DisaUnifiedBubbleGroupEntry(unified.ID, unified.Groups.Select(innerGroup => innerGroup.ID) .ToArray(), primaryGroup.ID, primaryGroup.ID)); BubbleGroupManager.BubbleGroupsAdd(unified); return(unified); } }
public static List <BubbleGroup> DeleteUnified(UnifiedBubbleGroup unifiedGroup, bool deleteInnerGroups = true) { lock (BubbleGroupDatabase.OperationLock) { foreach (var group in unifiedGroup.Groups) { @group.DeregisterUnified(); if (deleteInnerGroups) { Delete(@group); } } BubbleGroupManager.BubbleGroupsRemove(unifiedGroup); BubbleGroupIndex.RemoveUnified(unifiedGroup.ID); return(deleteInnerGroups ? null : unifiedGroup.Groups); } }