private static string CalculateTopFolder(IList<Change> changes)
{
if (changes == null || changes.Count == 0)
throw new ArgumentNullException("changes");
string topFolder = null;
if (changes.Count == 1 &&
(changes[0].ChangeType.HasFlag(ChangeType.Edit)
&& !changes[0].ChangeType.HasFlag(ChangeType.Add)
&& !changes[0].ChangeType.HasFlag(ChangeType.Branch)))
{
topFolder = changes[0].Item.ServerItem;
}
else
{
foreach (var change in changes)
{
// if (SkipChange(change.ChangeType, change.Item))
// continue;
// if (topFolder != null)
// {
// if (!IsNeedCalculateTopFolder(change.ChangeType, change.Item) change.Item.ServerItem.Contains(topFolder) && change.Item.ServerItem != topFolder)
// continue;
// }
var changeFolder = ExtractFolder(change.ChangeType, change.Item);
if (changeFolder != topFolder)
topFolder = FindShareFolder(topFolder, changeFolder);
}
}
if (topFolder != null && topFolder.EndsWith("/"))
{
topFolder = topFolder.Substring(0, topFolder.Length - 1);
}
return topFolder;
}