Skip to content

Commit c6f80bd

Browse files
committed
updates: skip duplicates
1 parent 85fad63 commit c6f80bd

File tree

1 file changed

+20
-8
lines changed

1 file changed

+20
-8
lines changed

UnityLauncherPro/GetUnityUpdates.cs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,27 +44,39 @@ public static async Task<string> Scan()
4444
return result;
4545
}
4646

47-
public static Updates[] Parse(string items)// object sender, DownloadStringCompletedEventArgs e)
47+
public static Updates[] Parse(string items)
4848
{
4949
isDownloadingUnityList = false;
5050
//SetStatus("Downloading list of Unity versions ... done");
5151
var receivedList = items.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
5252
if (receivedList == null && receivedList.Length < 1) return null;
5353
Array.Reverse(receivedList);
54-
var updates = new List<Updates>();
55-
// parse into data, TODO remove duplicates
54+
var releases = new Dictionary<string, Updates>();
55+
// parse into data
56+
string prevVersion = null;
5657
for (int i = 0, len = receivedList.Length; i < len; i++)
5758
{
5859
var row = receivedList[i].Split(',');
5960
var versionTemp = row[6].Trim('"');
61+
6062
if (versionTemp.Length < 1) continue;
61-
var u = new Updates();
62-
u.ReleaseDate = DateTime.ParseExact(row[3], "MM/dd/yyyy", CultureInfo.InvariantCulture);
63-
u.Version = versionTemp;
64-
updates.Add(u);
63+
if (prevVersion == versionTemp) continue;
64+
65+
if (releases.ContainsKey(versionTemp) == false)
66+
{
67+
var u = new Updates();
68+
u.ReleaseDate = DateTime.ParseExact(row[3], "MM/dd/yyyy", CultureInfo.InvariantCulture);
69+
u.Version = versionTemp;
70+
releases.Add(versionTemp, u);
71+
}
72+
73+
prevVersion = versionTemp;
6574
}
6675

67-
return updates.ToArray();
76+
// convert to array
77+
var results = new Updates[releases.Count];
78+
releases.Values.CopyTo(results, 0);
79+
return results;
6880
}
6981

7082
}

0 commit comments

Comments
 (0)