mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-11-03 23:03:29 +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);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,11 @@ class GitHub implements AppSource {
 | 
			
		||||
    return creds != null && creds.isNotEmpty ? '$creds@' : '';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) {
 | 
			
		||||
    return '$standardUrl/releases';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -18,6 +18,9 @@ class GitLab implements AppSource {
 | 
			
		||||
    return url.substring(0, match.end);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,9 @@ class IzzyOnDroid implements AppSource {
 | 
			
		||||
    return url.substring(0, match.end);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,9 @@ class Mullvad implements AppSource {
 | 
			
		||||
    return url.substring(0, match.end);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,6 +12,9 @@ class Signal implements AppSource {
 | 
			
		||||
    return 'https://$host';
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      String standardUrl, List<String> additionalData) async {
 | 
			
		||||
 
 | 
			
		||||
@@ -17,6 +17,9 @@ class SourceForge implements AppSource {
 | 
			
		||||
    return url.substring(0, match.end);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl) => null;
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  Future<APKDetails> getLatestAPKDetails(
 | 
			
		||||
      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/providers/apps_provider.dart';
 | 
			
		||||
import 'package:obtainium/providers/settings_provider.dart';
 | 
			
		||||
import 'package:obtainium/providers/source_provider.dart';
 | 
			
		||||
import 'package:provider/provider.dart';
 | 
			
		||||
import 'package:share_plus/share_plus.dart';
 | 
			
		||||
import 'package:url_launcher/url_launcher_string.dart';
 | 
			
		||||
 | 
			
		||||
class AppsPage extends StatefulWidget {
 | 
			
		||||
  const AppsPage({super.key});
 | 
			
		||||
@@ -172,7 +174,43 @@ class AppsPageState extends State<AppsPage> {
 | 
			
		||||
                    : (sortedApps[index].app.installedVersion != null &&
 | 
			
		||||
                            sortedApps[index].app.installedVersion !=
 | 
			
		||||
                                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 ??
 | 
			
		||||
                            'Not Installed')),
 | 
			
		||||
                onTap: () {
 | 
			
		||||
 
 | 
			
		||||
@@ -136,6 +136,7 @@ abstract class AppSource {
 | 
			
		||||
  late List<List<GeneratedFormItem>> additionalDataFormItems;
 | 
			
		||||
  late List<String> additionalDataDefaults;
 | 
			
		||||
  late List<GeneratedFormItem> moreSourceSettingsFormItems;
 | 
			
		||||
  String? changeLogPageFromStandardUrl(String standardUrl);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
abstract class MassAppSource {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user