Browse Source

Ind Upgrade: Switch to direct download option (#226)

Neeraj Gupta 1 year ago
parent
commit
7cd5b313de

+ 1 - 1
android/build.gradle

@@ -24,6 +24,6 @@ subprojects {
     project.evaluationDependsOn(':app')
     project.evaluationDependsOn(':app')
 }
 }
 
 
-task clean(type: Delete) {
+tasks.register("clean", Delete) {
     delete rootProject.buildDir
     delete rootProject.buildDir
 }
 }

+ 1 - 1
lib/core/logging/super_logging.dart

@@ -310,7 +310,7 @@ class SuperLogging {
     if (_preferences.containsKey(keyShouldReportErrors)) {
     if (_preferences.containsKey(keyShouldReportErrors)) {
       return _preferences.getBool(keyShouldReportErrors)!;
       return _preferences.getBool(keyShouldReportErrors)!;
     } else {
     } else {
-      return false;
+      return kDebugMode;
     }
     }
   }
   }
 
 

+ 4 - 0
lib/l10n/arb/app_en.arb

@@ -253,6 +253,10 @@
   "privacy": "Privacy",
   "privacy": "Privacy",
   "terms": "Terms",
   "terms": "Terms",
   "checkForUpdates": "Check for updates",
   "checkForUpdates": "Check for updates",
+  "downloadUpdate": "Download",
+  "criticalUpdateAvailable": "Critical update available",
+  "updateAvailable": "Update available",
+  "update": "Update",
   "checking": "Checking...",
   "checking": "Checking...",
   "youAreOnTheLatestVersion": "You are on the latest version",
   "youAreOnTheLatestVersion": "You are on the latest version",
   "warning": "Warning",
   "warning": "Warning",

+ 48 - 31
lib/ui/settings/app_update_dialog.dart

@@ -1,12 +1,15 @@
-
+import 'dart:io';
 
 
 import 'package:ente_auth/core/configuration.dart';
 import 'package:ente_auth/core/configuration.dart';
 import 'package:ente_auth/core/network.dart';
 import 'package:ente_auth/core/network.dart';
 import 'package:ente_auth/ente_theme_data.dart';
 import 'package:ente_auth/ente_theme_data.dart';
+import 'package:ente_auth/l10n/l10n.dart';
 import 'package:ente_auth/services/update_service.dart';
 import 'package:ente_auth/services/update_service.dart';
+import 'package:ente_auth/theme/ente_theme.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:logging/logging.dart';
 import 'package:logging/logging.dart';
 import 'package:open_filex/open_filex.dart';
 import 'package:open_filex/open_filex.dart';
+import 'package:url_launcher/url_launcher_string.dart';
 
 
 class AppUpdateDialog extends StatefulWidget {
 class AppUpdateDialog extends StatefulWidget {
   final LatestVersionInfo? latestVersionInfo;
   final LatestVersionInfo? latestVersionInfo;
@@ -20,6 +23,7 @@ class AppUpdateDialog extends StatefulWidget {
 class _AppUpdateDialogState extends State<AppUpdateDialog> {
 class _AppUpdateDialogState extends State<AppUpdateDialog> {
   @override
   @override
   Widget build(BuildContext context) {
   Widget build(BuildContext context) {
+    final enteTextTheme = getEnteTextTheme(context);
     final List<Widget> changelog = [];
     final List<Widget> changelog = [];
     for (final log in widget.latestVersionInfo!.changelog) {
     for (final log in widget.latestVersionInfo!.changelog) {
       changelog.add(
       changelog.add(
@@ -41,18 +45,19 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
         Text(
         Text(
           widget.latestVersionInfo!.name!,
           widget.latestVersionInfo!.name!,
           style: const TextStyle(
           style: const TextStyle(
-            fontSize: 20,
+            fontSize: 14,
             fontWeight: FontWeight.bold,
             fontWeight: FontWeight.bold,
           ),
           ),
         ),
         ),
         const Padding(padding: EdgeInsets.all(8)),
         const Padding(padding: EdgeInsets.all(8)),
-        const Text(
-          "Changelog",
-          style: TextStyle(
-            fontSize: 18,
+        if (changelog.isNotEmpty)
+          const Text(
+            "Changelog",
+            style: TextStyle(
+              fontSize: 18,
+            ),
           ),
           ),
-        ),
-        const Padding(padding: EdgeInsets.all(4)),
+        if (changelog.isNotEmpty) const Padding(padding: EdgeInsets.all(4)),
         Column(
         Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           crossAxisAlignment: CrossAxisAlignment.start,
           children: changelog,
           children: changelog,
@@ -69,18 +74,12 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
                 },
                 },
               ),
               ),
             ),
             ),
-            onPressed: () async {
-              Navigator.pop(context);
-              showDialog(
-                context: context,
-                builder: (BuildContext context) {
-                  return ApkDownloaderDialog(widget.latestVersionInfo);
-                },
-                barrierDismissible: false,
-              );
-            },
-            child: const Text(
-              "Update",
+            onPressed: () => launchUrlString(
+              widget.latestVersionInfo!.url!,
+              mode: LaunchMode.externalApplication,
+            ),
+            child: Text(
+              context.l10n.downloadUpdate,
             ),
             ),
           ),
           ),
         ),
         ),
@@ -91,8 +90,24 @@ class _AppUpdateDialogState extends State<AppUpdateDialog> {
     return WillPopScope(
     return WillPopScope(
       onWillPop: () async => !shouldForceUpdate,
       onWillPop: () async => !shouldForceUpdate,
       child: AlertDialog(
       child: AlertDialog(
-        title: Text(
-          shouldForceUpdate ? "Critical update available" : "Update available",
+        title: Column(
+          crossAxisAlignment: CrossAxisAlignment.start,
+          children: [
+            Icon(
+              Icons.auto_awesome_outlined,
+              size: 24,
+              color: getEnteColorScheme(context).strokeMuted,
+            ),
+            const SizedBox(
+              height: 16,
+            ),
+            Text(
+              shouldForceUpdate
+                  ? context.l10n.criticalUpdateAvailable
+                  : context.l10n.updateAvailable,
+              style: enteTextTheme.h3Bold,
+            ),
+          ],
         ),
         ),
         content: content,
         content: content,
       ),
       ),
@@ -147,15 +162,17 @@ class _ApkDownloaderDialogState extends State<ApkDownloaderDialog> {
 
 
   Future<void> _downloadApk() async {
   Future<void> _downloadApk() async {
     try {
     try {
-      await Network.instance.getDio().download(
-        widget.versionInfo!.url!,
-        _saveUrl,
-        onReceiveProgress: (count, _) {
-          setState(() {
-            _downloadProgress = count / widget.versionInfo!.size!;
-          });
-        },
-      );
+      if (!File(_saveUrl!).existsSync()) {
+        await Network.instance.getDio().download(
+          widget.versionInfo!.url!,
+          _saveUrl,
+          onReceiveProgress: (count, _) {
+            setState(() {
+              _downloadProgress = count / widget.versionInfo!.size!;
+            });
+          },
+        );
+      }
       Navigator.of(context, rootNavigator: true).pop('dialog');
       Navigator.of(context, rootNavigator: true).pop('dialog');
       OpenFilex.open(_saveUrl);
       OpenFilex.open(_saveUrl);
     } catch (e) {
     } catch (e) {