Skip to content

Commit

Permalink
Merge pull request #1755 from ImranR98/dev
Browse files Browse the repository at this point in the history
Update GitLab for new uploads URL scheme (#1742), Ability to share selective exports (#1752)
  • Loading branch information
ImranR98 authored Jul 28, 2024
2 parents 656e147 + 15ae98d commit e4187c8
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 36 deletions.
14 changes: 13 additions & 1 deletion lib/app_sources/gitlab.dart
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,18 @@ class GitLab extends AppSource {

bool trackOnly = additionalSettings['trackOnly'] == true;

// Get project ID
Response res0 = await sourceRequest(
'https://${hosts[0]}/api/v4/projects/${names.author}%2F${names.name}?$optionalAuth',
additionalSettings);
if (res0.statusCode != 200) {
throw getObtainiumHttpError(res0);
}
int? projectId = jsonDecode(res0.body)['id'];
if (projectId == null) {
throw NoReleasesError();
}

// Request data from REST API
Response res = await sourceRequest(
'https://${hosts[0]}/api/v4/projects/${names.author}%2F${names.name}/${trackOnly ? 'repository/tags' : 'releases'}?$optionalAuth',
Expand All @@ -157,7 +169,7 @@ class GitLab extends AppSource {
.join('.apk\n')
.split('\n')
.where((s) => s.startsWith('/uploads/') && s.endsWith('apk'))
.map((s) => '$standardUrl$s')
.map((s) => 'https://${hosts[0]}/-/project/$projectId$s')
.toList();
var apkUrlsSet = apkUrlsFromAssets.toSet();
apkUrlsSet.addAll(uploadedAPKsFromDescription);
Expand Down
21 changes: 21 additions & 0 deletions lib/pages/apps.dart
Original file line number Diff line number Diff line change
Expand Up @@ -917,6 +917,27 @@ class AppsPageState extends State<AppsPage> {
},
child: Text(tr('shareAppConfigLinks'))),
const Divider(),
TextButton(
onPressed: selectedAppIds.isEmpty
? null
: () {
var exportJSON = jsonEncode(
appsProvider.generateExportJSON(
appIds: selectedApps
.map((e) => e.id)
.toList(),
overrideExportSettings: false));
XFile f = XFile.fromData(
Uint8List.fromList(
utf8.encode(exportJSON)),
mimeType: 'application/json',
name:
'${tr('obtainiumExportHyphenatedLowercase')}-${selectedApps.length}-${DateTime.now().millisecondsSinceEpoch}');
Share.shareXFiles([f]);
},
child: Text(
'${tr('share')} - ${tr('obtainiumExport')}')),
const Divider(),
TextButton(
onPressed: () {
appsProvider
Expand Down
40 changes: 29 additions & 11 deletions lib/providers/apps_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1501,6 +1501,34 @@ class AppsProvider with ChangeNotifier {
return updateAppIds;
}

Map<String, dynamic> generateExportJSON(
{List<String>? appIds, bool? overrideExportSettings}) {
Map<String, dynamic> finalExport = {};
finalExport['apps'] = apps.values
.where((e) {
if (appIds == null) {
return true;
} else {
return appIds.contains(e.app.id);
}
})
.map((e) => e.app.toJson())
.toList();
bool shouldExportSettings = settingsProvider.exportSettings;
if (overrideExportSettings != null) {
shouldExportSettings = overrideExportSettings;
}
if (shouldExportSettings) {
finalExport['settings'] = Map<String, Object?>.fromEntries(
(settingsProvider.prefs
?.getKeys()
.map((key) => MapEntry(key, settingsProvider.prefs?.get(key)))
.toList()) ??
[]);
}
return finalExport;
}

Future<String?> export(
{bool pickOnly = false, isAuto = false, SettingsProvider? sp}) async {
SettingsProvider settingsProvider = sp ?? this.settingsProvider;
Expand Down Expand Up @@ -1531,17 +1559,7 @@ class AppsProvider with ChangeNotifier {
}
String? returnPath;
if (!pickOnly) {
Map<String, dynamic> finalExport = {};
finalExport['apps'] = apps.values.map((e) => e.app.toJson()).toList();
if (settingsProvider.exportSettings) {
finalExport['settings'] = Map<String, Object?>.fromEntries(
(settingsProvider.prefs
?.getKeys()
.map((key) =>
MapEntry(key, settingsProvider.prefs?.get(key)))
.toList()) ??
[]);
}
Map<String, dynamic> finalExport = generateExportJSON();
var result = await saf.createFile(exportDir,
displayName:
'${tr('obtainiumExportHyphenatedLowercase')}-${DateTime.now().toIso8601String().replaceAll(':', '-')}${isAuto ? '-auto' : ''}.json',
Expand Down
44 changes: 22 additions & 22 deletions pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -311,10 +311,10 @@ packages:
dependency: transitive
description:
name: flex_seed_scheme
sha256: cb5b7ec4ba525d9846d8992858a1c6cfc88f9466d96b8850e2a061aa5f682539
sha256: cc08c81879ecfd2ab840664ce4770980da0b8a319e35f51bcf763849b7f7596b
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.1.2"
flutter:
dependency: "direct main"
description: flutter
Expand Down Expand Up @@ -441,10 +441,10 @@ packages:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
sha256: c6b0b4c05c458e1c01ad9bcc14041dd7b1f6783d487be4386f793f47a8a4d03e
sha256: "9d98bd47ef9d34e803d438f17fd32b116d31009f534a6fa5ce3a1167f189a6de"
url: "https://pub.dev"
source: hosted
version: "2.0.20"
version: "2.0.21"
flutter_test:
dependency: "direct dev"
description: flutter
Expand Down Expand Up @@ -507,10 +507,10 @@ packages:
dependency: "direct main"
description:
name: http
sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
url: "https://pub.dev"
source: hosted
version: "1.2.1"
version: "1.2.2"
http_parser:
dependency: transitive
description:
Expand Down Expand Up @@ -651,10 +651,10 @@ packages:
dependency: transitive
description:
name: path_provider_android
sha256: "30c5aa827a6ae95ce2853cdc5fe3971daaac00f6f081c419c013f7f57bff2f5e"
sha256: e84c8a53fe1510ef4582f118c7b4bdf15b03002b51d7c2b66983c65843d61193
url: "https://pub.dev"
source: hosted
version: "2.2.7"
version: "2.2.8"
path_provider_foundation:
dependency: transitive
description:
Expand Down Expand Up @@ -715,10 +715,10 @@ packages:
dependency: transitive
description:
name: permission_handler_html
sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d"
sha256: "6cac773d389e045a8d4f85418d07ad58ef9e42a56e063629ce14c4c26344de24"
url: "https://pub.dev"
source: hosted
version: "0.1.1"
version: "0.1.2"
permission_handler_platform_interface:
dependency: transitive
description:
Expand Down Expand Up @@ -827,10 +827,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_android
sha256: "93d0ec9dd902d85f326068e6a899487d1f65ffcd5798721a95330b26c8131577"
sha256: "3d4571b3c5eb58ce52a419d86e655493d0bc3020672da79f72fa0c16ca3a8ec1"
url: "https://pub.dev"
source: hosted
version: "2.2.3"
version: "2.2.4"
shared_preferences_foundation:
dependency: transitive
description:
Expand All @@ -851,10 +851,10 @@ packages:
dependency: transitive
description:
name: shared_preferences_platform_interface
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
sha256: "034650b71e73629ca08a0bd789fd1d83cc63c2d1e405946f7cef7bc37432f93a"
url: "https://pub.dev"
source: hosted
version: "2.3.2"
version: "2.4.0"
shared_preferences_web:
dependency: transitive
description:
Expand Down Expand Up @@ -1001,10 +1001,10 @@ packages:
dependency: transitive
description:
name: url_launcher_android
sha256: ceb2625f0c24ade6ef6778d1de0b2e44f2db71fded235eb52295247feba8c5cf
sha256: c24484594a8dea685610569ab0f2547de9c7a1907500a9bc5e37e4c9a3cbfb23
url: "https://pub.dev"
source: hosted
version: "6.3.3"
version: "6.3.6"
url_launcher_ios:
dependency: transitive
description:
Expand Down Expand Up @@ -1049,10 +1049,10 @@ packages:
dependency: transitive
description:
name: url_launcher_windows
sha256: ecf9725510600aa2bb6d7ddabe16357691b6d2805f66216a97d1b881e21beff7
sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185"
url: "https://pub.dev"
source: hosted
version: "3.1.1"
version: "3.1.2"
uuid:
dependency: transitive
description:
Expand Down Expand Up @@ -1097,10 +1097,10 @@ packages:
dependency: transitive
description:
name: webview_flutter_android
sha256: f42447ca49523f11d8f70abea55ea211b3cafe172dd7a0e7ac007bb35dd356dc
sha256: "060e1a621add859dc822f3e4c59b01468e8515ea78cfc5ac4c6b28bc903b5f74"
url: "https://pub.dev"
source: hosted
version: "3.16.4"
version: "3.16.5"
webview_flutter_platform_interface:
dependency: transitive
description:
Expand Down Expand Up @@ -1129,10 +1129,10 @@ packages:
dependency: transitive
description:
name: win32_registry
sha256: "10589e0d7f4e053f2c61023a31c9ce01146656a70b7b7f0828c0b46d7da2a9bb"
sha256: "723b7f851e5724c55409bb3d5a32b203b3afe8587eaf5dafb93a5fed8ecda0d6"
url: "https://pub.dev"
source: hosted
version: "1.1.3"
version: "1.1.4"
xdg_directories:
dependency: transitive
description:
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 1.1.14+2271
version: 1.1.15+2272

environment:
sdk: '>=3.0.0 <4.0.0'
Expand Down

0 comments on commit e4187c8

Please sign in to comment.