mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 21:13:28 +01:00 
			
		
		
		
	Added 'See Changes' button in app list (GitHub only)
This commit is contained in:
		| @@ -23,6 +23,9 @@ class FDroid implements AppSource { | |||||||
|     return url.substring(0, match.end); |     return url.substring(0, match.end); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -29,6 +29,11 @@ class GitHub implements AppSource { | |||||||
|     return creds != null && creds.isNotEmpty ? '$creds@' : ''; |     return creds != null && creds.isNotEmpty ? '$creds@' : ''; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) { | ||||||
|  |     return '$standardUrl/releases'; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -18,6 +18,9 @@ class GitLab implements AppSource { | |||||||
|     return url.substring(0, match.end); |     return url.substring(0, match.end); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -17,6 +17,9 @@ class IzzyOnDroid implements AppSource { | |||||||
|     return url.substring(0, match.end); |     return url.substring(0, match.end); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -17,6 +17,9 @@ class Mullvad implements AppSource { | |||||||
|     return url.substring(0, match.end); |     return url.substring(0, match.end); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -12,6 +12,9 @@ class Signal implements AppSource { | |||||||
|     return 'https://$host'; |     return 'https://$host'; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -17,6 +17,9 @@ class SourceForge implements AppSource { | |||||||
|     return url.substring(0, match.end); |     return url.substring(0, match.end); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  |   @override | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl) => null; | ||||||
|  |  | ||||||
|   @override |   @override | ||||||
|   Future<APKDetails> getLatestAPKDetails( |   Future<APKDetails> getLatestAPKDetails( | ||||||
|       String standardUrl, List<String> additionalData) async { |       String standardUrl, List<String> additionalData) async { | ||||||
|   | |||||||
| @@ -6,8 +6,10 @@ import 'package:obtainium/components/generated_form_modal.dart'; | |||||||
| import 'package:obtainium/pages/app.dart'; | import 'package:obtainium/pages/app.dart'; | ||||||
| import 'package:obtainium/providers/apps_provider.dart'; | import 'package:obtainium/providers/apps_provider.dart'; | ||||||
| import 'package:obtainium/providers/settings_provider.dart'; | import 'package:obtainium/providers/settings_provider.dart'; | ||||||
|  | import 'package:obtainium/providers/source_provider.dart'; | ||||||
| import 'package:provider/provider.dart'; | import 'package:provider/provider.dart'; | ||||||
| import 'package:share_plus/share_plus.dart'; | import 'package:share_plus/share_plus.dart'; | ||||||
|  | import 'package:url_launcher/url_launcher_string.dart'; | ||||||
|  |  | ||||||
| class AppsPage extends StatefulWidget { | class AppsPage extends StatefulWidget { | ||||||
|   const AppsPage({super.key}); |   const AppsPage({super.key}); | ||||||
| @@ -172,7 +174,43 @@ class AppsPageState extends State<AppsPage> { | |||||||
|                     : (sortedApps[index].app.installedVersion != null && |                     : (sortedApps[index].app.installedVersion != null && | ||||||
|                             sortedApps[index].app.installedVersion != |                             sortedApps[index].app.installedVersion != | ||||||
|                                 sortedApps[index].app.latestVersion |                                 sortedApps[index].app.latestVersion | ||||||
|                         ? const Text('Update Available') |                         ? Column( | ||||||
|  |                             mainAxisAlignment: SourceProvider() | ||||||
|  |                                         .getSource(sortedApps[index].app.url) | ||||||
|  |                                         .changeLogPageFromStandardUrl( | ||||||
|  |                                             sortedApps[index].app.url) == | ||||||
|  |                                     null | ||||||
|  |                                 ? MainAxisAlignment.center | ||||||
|  |                                 : MainAxisAlignment.spaceEvenly, | ||||||
|  |                             crossAxisAlignment: CrossAxisAlignment.end, | ||||||
|  |                             children: [ | ||||||
|  |                               const Text('Update Available'), | ||||||
|  |                               SourceProvider() | ||||||
|  |                                           .getSource(sortedApps[index].app.url) | ||||||
|  |                                           .changeLogPageFromStandardUrl( | ||||||
|  |                                               sortedApps[index].app.url) == | ||||||
|  |                                       null | ||||||
|  |                                   ? const SizedBox() | ||||||
|  |                                   : GestureDetector( | ||||||
|  |                                       onTap: () { | ||||||
|  |                                         launchUrlString( | ||||||
|  |                                             SourceProvider() | ||||||
|  |                                                 .getSource( | ||||||
|  |                                                     sortedApps[index].app.url) | ||||||
|  |                                                 .changeLogPageFromStandardUrl( | ||||||
|  |                                                     sortedApps[index].app.url)!, | ||||||
|  |                                             mode: | ||||||
|  |                                                 LaunchMode.externalApplication); | ||||||
|  |                                       }, | ||||||
|  |                                       child: const Text( | ||||||
|  |                                         'See Changes', | ||||||
|  |                                         style: TextStyle( | ||||||
|  |                                             fontStyle: FontStyle.italic, | ||||||
|  |                                             decoration: | ||||||
|  |                                                 TextDecoration.underline), | ||||||
|  |                                       )), | ||||||
|  |                             ], | ||||||
|  |                           ) | ||||||
|                         : Text(sortedApps[index].app.installedVersion ?? |                         : Text(sortedApps[index].app.installedVersion ?? | ||||||
|                             'Not Installed')), |                             'Not Installed')), | ||||||
|                 onTap: () { |                 onTap: () { | ||||||
|   | |||||||
| @@ -136,6 +136,7 @@ abstract class AppSource { | |||||||
|   late List<List<GeneratedFormItem>> additionalDataFormItems; |   late List<List<GeneratedFormItem>> additionalDataFormItems; | ||||||
|   late List<String> additionalDataDefaults; |   late List<String> additionalDataDefaults; | ||||||
|   late List<GeneratedFormItem> moreSourceSettingsFormItems; |   late List<GeneratedFormItem> moreSourceSettingsFormItems; | ||||||
|  |   String? changeLogPageFromStandardUrl(String standardUrl); | ||||||
| } | } | ||||||
|  |  | ||||||
| abstract class MassAppSource { | abstract class MassAppSource { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user