@@ -163,29 +163,39 @@ class GitLab extends AppSource {
163
163
apkDetailsList = json.map ((e) {
164
164
var apkUrlsFromAssets = (e['assets' ]? ['links' ] as List <dynamic >? ?? [])
165
165
.map ((e) {
166
- return (e['direct_asset_url' ] ?? e['url' ] ?? '' ) as String ;
166
+ var url = (e['direct_asset_url' ] ?? e['url' ] ?? '' ) as String ;
167
+ var parsedUrl = url.isNotEmpty ? Uri .parse (url) : null ;
168
+ return MapEntry (
169
+ (e['name' ] ??
170
+ (parsedUrl != null && parsedUrl.pathSegments.isNotEmpty
171
+ ? parsedUrl.pathSegments.last
172
+ : 'unknown' )) as String ,
173
+ (e['direct_asset_url' ] ?? e['url' ] ?? '' ) as String );
167
174
})
168
- .where ((s) => s.isNotEmpty)
175
+ .where ((s) => s.key. isNotEmpty)
169
176
.toList ();
170
- List <String > uploadedAPKsFromDescription =
171
- ((e['description' ] ?? '' ) as String )
172
- .split ('](' )
173
- .join ('\n ' )
174
- .split ('.apk)' )
175
- .join ('.apk\n ' )
176
- .split ('\n ' )
177
- .where ((s) => s.startsWith ('/uploads/' ) && s.endsWith ('apk' ))
178
- .map ((s) => 'https://${hosts [0 ]}/-/project/$projectId $s ' )
179
- .toList ();
180
- var apkUrlsSet = apkUrlsFromAssets.toSet ();
181
- apkUrlsSet.addAll (uploadedAPKsFromDescription);
177
+ var uploadedAPKsFromDescription = ((e['description' ] ?? '' ) as String )
178
+ .split ('](' )
179
+ .join ('\n ' )
180
+ .split ('.apk)' )
181
+ .join ('.apk\n ' )
182
+ .split ('\n ' )
183
+ .where ((s) => s.startsWith ('/uploads/' ) && s.endsWith ('apk' ))
184
+ .map ((s) => 'https://${hosts [0 ]}/-/project/$projectId $s ' )
185
+ .map ((l) => MapEntry (Uri .parse (l).pathSegments.last, l))
186
+ .toList ();
187
+ Map <String , String > apkUrls = {};
188
+ for (var entry in apkUrlsFromAssets) {
189
+ apkUrls[entry.key] = entry.value;
190
+ }
191
+ for (var entry in uploadedAPKsFromDescription) {
192
+ apkUrls[entry.key] = entry.value;
193
+ }
182
194
var releaseDateString =
183
195
e['released_at' ] ?? e['created_at' ] ?? e['commit' ]? ['created_at' ];
184
196
DateTime ? releaseDate =
185
197
releaseDateString != null ? DateTime .parse (releaseDateString) : null ;
186
- return APKDetails (
187
- e['tag_name' ] ?? e['name' ],
188
- getApkUrlsFromUrls (apkUrlsSet.toList ()),
198
+ return APKDetails (e['tag_name' ] ?? e['name' ], apkUrls.entries.toList (),
189
199
AppNames (names.author, names.name.split ('/' ).last),
190
200
releaseDate: releaseDate);
191
201
});
0 commit comments