summaryrefslogtreecommitdiff
path: root/windows
diff options
context:
space:
mode:
Diffstat (limited to 'windows')
-rw-r--r--windows/WinUI/PeersPage.xaml.cs20
-rw-r--r--windows/WinUI/ZeroTierPeer.cs22
2 files changed, 36 insertions, 6 deletions
diff --git a/windows/WinUI/PeersPage.xaml.cs b/windows/WinUI/PeersPage.xaml.cs
index 2f4bda49..fac22a49 100644
--- a/windows/WinUI/PeersPage.xaml.cs
+++ b/windows/WinUI/PeersPage.xaml.cs
@@ -29,13 +29,25 @@ namespace WinUI
dataGrid.ItemsSource = peersList;
}
- public void SetPeers(List<ZeroTierPeer> peerList)
+ public void SetPeers(List<ZeroTierPeer> list)
{
- if (peerList == null)
+ if (list == null)
return;
- this.peersList = peerList;
- dataGrid.ItemsSource = this.peersList;
+
+ foreach(ZeroTierPeer p in list)
+ {
+ ZeroTierPeer curPeer = peersList.Find(peer => peer.Equals(p));
+ if (curPeer == null)
+ {
+ peersList.Add(p);
+ }
+ else
+ {
+ curPeer.Update(p);
+ }
+ }
+
dataGrid.Items.Refresh();
}
}
diff --git a/windows/WinUI/ZeroTierPeer.cs b/windows/WinUI/ZeroTierPeer.cs
index 06a8896b..1597cf2d 100644
--- a/windows/WinUI/ZeroTierPeer.cs
+++ b/windows/WinUI/ZeroTierPeer.cs
@@ -7,7 +7,7 @@ using Newtonsoft.Json;
namespace WinUI
{
- public class ZeroTierPeer
+ public class ZeroTierPeer : IEquatable<ZeroTierPeer>
{
[JsonProperty("address")]
public string Address { get; set; }
@@ -57,7 +57,7 @@ namespace WinUI
public int VersionMinor { get; set; }
[JsonProperty("versionRev")]
- public int Versionrev { get; set; }
+ public int VersionRev { get; set; }
[JsonProperty("version")]
public string Version { get; set; }
@@ -94,5 +94,23 @@ namespace WinUI
return pathStr;
}
}
+
+ public bool Equals(ZeroTierPeer other)
+ {
+ return this.Address.Equals(other.Address, StringComparison.InvariantCultureIgnoreCase);
+ }
+
+ public void Update(ZeroTierPeer other)
+ {
+ _lastUnicast = other._lastUnicast;
+ _lastMulticast = other._lastMulticast;
+ VersionMajor = other.VersionMajor;
+ VersionMinor = other.VersionMinor;
+ VersionRev = other.VersionRev;
+ Version = other.Version;
+ Latency = other.Latency;
+ Role = other.Role;
+ Paths = other.Paths;
+ }
}
}