Removing putty sessions now updates the treelistview as expected

This commit is contained in:
David Sparer
2016-09-20 12:23:55 -06:00
parent 688dbd1ce9
commit 62b1402b43

View File

@@ -18,14 +18,34 @@ namespace mRemoteNG.Config.Putty
public virtual IEnumerable<PuttySessionInfo> GetSessions()
{
foreach (var sessionName in GetSessionNames(true))
var sessionNamesFromProvider = GetSessionNames(true);
foreach (var sessionName in GetSessionNamesToAdd(sessionNamesFromProvider))
{
var sessionInfo = GetSession(sessionName);
AddSession(sessionInfo);
}
foreach (var session in GetSessionToRemove(sessionNamesFromProvider))
{
RemoveSession(session);
}
RootInfo.SortRecursive();
return Sessions;
}
private IEnumerable<string> GetSessionNamesToAdd(IEnumerable<string> sessionNamesFromProvider)
{
var currentlyKnownSessionNames = Sessions.Select(session => session.Name);
var sessionNamesToAdd = sessionNamesFromProvider.Except(currentlyKnownSessionNames);
return sessionNamesToAdd;
}
private IEnumerable<PuttySessionInfo> GetSessionToRemove(IEnumerable<string> sessionNamesFromProvider)
{
var currentlyKnownSessionNames = Sessions.Select(session => session.Name);
var sessionNamesToRemove = currentlyKnownSessionNames.Except(sessionNamesFromProvider);
return Sessions.Where(session => sessionNamesToRemove.Contains(session.Name));
}
protected virtual void AddSession(PuttySessionInfo sessionInfo)
{
if (string.IsNullOrEmpty(sessionInfo?.Name) || Sessions.Any(child => child.Name == sessionInfo.Name))