@@ -44,27 +44,39 @@ public static async Task<string> Scan()
44
44
return result ;
45
45
}
46
46
47
- public static Updates [ ] Parse ( string items ) // object sender, DownloadStringCompletedEventArgs e)
47
+ public static Updates [ ] Parse ( string items )
48
48
{
49
49
isDownloadingUnityList = false ;
50
50
//SetStatus("Downloading list of Unity versions ... done");
51
51
var receivedList = items . Split ( new [ ] { Environment . NewLine } , StringSplitOptions . None ) ;
52
52
if ( receivedList == null && receivedList . Length < 1 ) return null ;
53
53
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 ;
56
57
for ( int i = 0 , len = receivedList . Length ; i < len ; i ++ )
57
58
{
58
59
var row = receivedList [ i ] . Split ( ',' ) ;
59
60
var versionTemp = row [ 6 ] . Trim ( '"' ) ;
61
+
60
62
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 ;
65
74
}
66
75
67
- return updates . ToArray ( ) ;
76
+ // convert to array
77
+ var results = new Updates [ releases . Count ] ;
78
+ releases . Values . CopyTo ( results , 0 ) ;
79
+ return results ;
68
80
}
69
81
70
82
}
0 commit comments