Skip to content

Commit 167d0cc

Browse files
committed
Extract GitLab Asset Filenames (#2127)
1 parent 430d1f2 commit 167d0cc

File tree

1 file changed

+27
-17
lines changed

1 file changed

+27
-17
lines changed

lib/app_sources/gitlab.dart

+27-17
Original file line numberDiff line numberDiff line change
@@ -163,29 +163,39 @@ class GitLab extends AppSource {
163163
apkDetailsList = json.map((e) {
164164
var apkUrlsFromAssets = (e['assets']?['links'] as List<dynamic>? ?? [])
165165
.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);
167174
})
168-
.where((s) => s.isNotEmpty)
175+
.where((s) => s.key.isNotEmpty)
169176
.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+
}
182194
var releaseDateString =
183195
e['released_at'] ?? e['created_at'] ?? e['commit']?['created_at'];
184196
DateTime? releaseDate =
185197
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(),
189199
AppNames(names.author, names.name.split('/').last),
190200
releaseDate: releaseDate);
191201
});

0 commit comments

Comments
 (0)