mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
Removing putty sessions now updates the treelistview as expected
This commit is contained in:
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user