Sfoglia il codice sorgente

Fix log export for android

Neeraj Gupta 1 anno fa
parent
commit
518eb1d942

+ 7 - 2
lib/ui/settings/support_section_widget.dart

@@ -8,6 +8,7 @@ import 'package:ente_auth/ui/settings/common_settings.dart';
 import 'package:ente_auth/ui/settings/faq.dart';
 import 'package:ente_auth/utils/email_util.dart';
 import 'package:flutter/material.dart';
+import 'package:logging/logging.dart';
 import 'package:url_launcher/url_launcher_string.dart';
 
 class SupportSectionWidget extends StatefulWidget {
@@ -90,8 +91,12 @@ class _SupportSectionWidgetState extends State<SupportSectionWidget> {
             await sendLogs(context, l10n.reportBug, "auth@ente.io");
           },
           onDoubleTap: () async {
-            final zipFilePath = await getZippedLogsFile(context);
-            await shareLogs(context, "auth@ente.io", zipFilePath);
+            try {
+              final zipFilePath = await getZippedLogsFile(context);
+              await shareLogs(context, "auth@ente.io", zipFilePath);
+            } catch (e) {
+              Logger("SupportSectionWidget").severe("failed to export logs", e);
+            }
           },
         ),
         sectionOptionSpacing,

+ 19 - 4
lib/utils/email_util.dart

@@ -13,9 +13,11 @@ import 'package:ente_auth/ui/tools/debug/log_file_viewer.dart';
 // import 'package:ente_auth/ui/tools/debug/log_file_viewer.dart';
 import 'package:ente_auth/utils/dialog_util.dart';
 import 'package:ente_auth/utils/toast_util.dart';
+import 'package:file_saver/file_saver.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_email_sender/flutter_email_sender.dart';
+import 'package:intl/intl.dart';
 import 'package:logging/logging.dart';
 // import 'package:open_mail_app/open_mail_app.dart';
 import 'package:package_info_plus/package_info_plus.dart';
@@ -199,10 +201,23 @@ Future<void> shareLogs(
   );
   if (result?.action != null && result!.action == ButtonAction.second) {
     final Size size = MediaQuery.of(context).size;
-    await Share.shareFiles(
-      [zipFilePath],
-      sharePositionOrigin: Rect.fromLTWH(0, 0, size.width, size.height / 2),
-    );
+    if (Platform.isAndroid) {
+      DateTime now = DateTime.now().toUtc();
+      String shortMonthName = DateFormat('MMM').format(now); // Short month name
+      String logFileName =
+          'ente-logs-${now.year}-$shortMonthName-${now.day}-${now.hour}-${now.minute}';
+      await FileSaver.instance.saveAs(
+        name: logFileName,
+        filePath: zipFilePath,
+        mimeType: MimeType.zip,
+        ext: 'zip',
+      );
+    } else {
+      await Share.shareXFiles(
+        [XFile(zipFilePath, mimeType: 'application/zip')],
+        sharePositionOrigin: Rect.fromLTWH(0, 0, size.width, size.height / 2),
+      );
+    }
   }
 }
 

+ 4 - 0
linux/flutter/generated_plugin_registrant.cc

@@ -6,11 +6,15 @@
 
 #include "generated_plugin_registrant.h"
 
+#include <file_saver/file_saver_plugin.h>
 #include <flutter_secure_storage_linux/flutter_secure_storage_linux_plugin.h>
 #include <sentry_flutter/sentry_flutter_plugin.h>
 #include <url_launcher_linux/url_launcher_plugin.h>
 
 void fl_register_plugins(FlPluginRegistry* registry) {
+  g_autoptr(FlPluginRegistrar) file_saver_registrar =
+      fl_plugin_registry_get_registrar_for_plugin(registry, "FileSaverPlugin");
+  file_saver_plugin_register_with_registrar(file_saver_registrar);
   g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar =
       fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin");
   flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar);

+ 1 - 0
linux/flutter/generated_plugins.cmake

@@ -3,6 +3,7 @@
 #
 
 list(APPEND FLUTTER_PLUGIN_LIST
+  file_saver
   flutter_secure_storage_linux
   sentry_flutter
   url_launcher_linux

+ 3 - 1
macos/Flutter/GeneratedPluginRegistrant.swift

@@ -7,12 +7,13 @@ import Foundation
 
 import connectivity_macos
 import device_info_plus
+import file_saver
 import flutter_local_notifications
 import flutter_secure_storage_macos
 import package_info_plus
 import path_provider_foundation
 import sentry_flutter
-import share_plus_macos
+import share_plus
 import shared_preferences_foundation
 import sqflite
 import url_launcher_macos
@@ -20,6 +21,7 @@ import url_launcher_macos
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
   ConnectivityPlugin.register(with: registry.registrar(forPlugin: "ConnectivityPlugin"))
   DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin"))
+  FileSaverPlugin.register(with: registry.registrar(forPlugin: "FileSaverPlugin"))
   FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin"))
   FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
   FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin"))

+ 14 - 38
pubspec.lock

@@ -418,6 +418,14 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "5.3.1"
+  file_saver:
+    dependency: "direct main"
+    description:
+      name: file_saver
+      sha256: "8ffd91ae9f543c5ebbfec71a814ee5aa9e21176d31335133308abf63f4c42e8a"
+      url: "https://pub.dev"
+    source: hosted
+    version: "0.2.9"
   fixnum:
     dependency: transitive
     description:
@@ -675,10 +683,10 @@ packages:
     dependency: "direct main"
     description:
       name: http
-      sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
+      sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
       url: "https://pub.dev"
     source: hosted
-    version: "0.13.6"
+    version: "1.1.0"
   http_multi_server:
     dependency: transitive
     description:
@@ -1123,50 +1131,18 @@ packages:
     dependency: "direct main"
     description:
       name: share_plus
-      sha256: f582d5741930f3ad1bf0211d358eddc0508cc346e5b4b248bd1e569c995ebb7a
-      url: "https://pub.dev"
-    source: hosted
-    version: "4.5.3"
-  share_plus_linux:
-    dependency: transitive
-    description:
-      name: share_plus_linux
-      sha256: dc32bf9f1151b9864bb86a997c61a487967a08f2e0b4feaa9a10538712224da4
+      sha256: f74fc3f1cbd99f39760182e176802f693fa0ec9625c045561cfad54681ea93dd
       url: "https://pub.dev"
     source: hosted
-    version: "3.0.1"
-  share_plus_macos:
-    dependency: transitive
-    description:
-      name: share_plus_macos
-      sha256: "44daa946f2845045ecd7abb3569b61cd9a55ae9cc4cbec9895b2067b270697ae"
-      url: "https://pub.dev"
-    source: hosted
-    version: "3.0.1"
+    version: "7.2.1"
   share_plus_platform_interface:
     dependency: transitive
     description:
       name: share_plus_platform_interface
-      sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981"
-      url: "https://pub.dev"
-    source: hosted
-    version: "3.2.1"
-  share_plus_web:
-    dependency: transitive
-    description:
-      name: share_plus_web
-      sha256: eaef05fa8548b372253e772837dd1fbe4ce3aca30ea330765c945d7d4f7c9935
-      url: "https://pub.dev"
-    source: hosted
-    version: "3.1.0"
-  share_plus_windows:
-    dependency: transitive
-    description:
-      name: share_plus_windows
-      sha256: "3a21515ae7d46988d42130cd53294849e280a5de6ace24bae6912a1bffd757d4"
+      sha256: df08bc3a07d01f5ea47b45d03ffcba1fa9cd5370fb44b3f38c70e42cced0f956
       url: "https://pub.dev"
     source: hosted
-    version: "3.0.1"
+    version: "3.3.1"
   shared_preferences:
     dependency: "direct main"
     description:

+ 3 - 2
pubspec.yaml

@@ -27,6 +27,7 @@ dependencies:
   expandable: ^5.0.1
   expansion_tile_card: ^3.0.0
   file_picker: ^5.2.4
+  file_saver: ^0.2.9
   fk_user_agent: ^2.1.0
   flutter:
     sdk: flutter
@@ -48,7 +49,7 @@ dependencies:
   flutter_svg: ^2.0.5
   fluttertoast: ^8.1.1
   google_nav_bar: ^5.0.5 #supported
-  http: ^0.13.4
+  http: ^1.1.0
   intl: ^0.18.0
   json_annotation: ^4.5.0
   local_auth: ^2.1.7
@@ -67,7 +68,7 @@ dependencies:
   qr_flutter: 4.0.0
   sentry: ^7.9.0
   sentry_flutter: ^7.9.0
-  share_plus: ^4.4.0
+  share_plus: ^7.2.1
   shared_preferences: ^2.0.5
   sqflite: ^2.1.0
   step_progress_indicator: ^1.0.2

+ 6 - 0
windows/flutter/generated_plugin_registrant.cc

@@ -6,18 +6,24 @@
 
 #include "generated_plugin_registrant.h"
 
+#include <file_saver/file_saver_plugin.h>
 #include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
 #include <local_auth_windows/local_auth_plugin.h>
 #include <sentry_flutter/sentry_flutter_plugin.h>
+#include <share_plus/share_plus_windows_plugin_c_api.h>
 #include <url_launcher_windows/url_launcher_windows.h>
 
 void RegisterPlugins(flutter::PluginRegistry* registry) {
+  FileSaverPluginRegisterWithRegistrar(
+      registry->GetRegistrarForPlugin("FileSaverPlugin"));
   FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
       registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
   LocalAuthPluginRegisterWithRegistrar(
       registry->GetRegistrarForPlugin("LocalAuthPlugin"));
   SentryFlutterPluginRegisterWithRegistrar(
       registry->GetRegistrarForPlugin("SentryFlutterPlugin"));
+  SharePlusWindowsPluginCApiRegisterWithRegistrar(
+      registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
   UrlLauncherWindowsRegisterWithRegistrar(
       registry->GetRegistrarForPlugin("UrlLauncherWindows"));
 }

+ 2 - 0
windows/flutter/generated_plugins.cmake

@@ -3,9 +3,11 @@
 #
 
 list(APPEND FLUTTER_PLUGIN_LIST
+  file_saver
   flutter_secure_storage_windows
   local_auth_windows
   sentry_flutter
+  share_plus
   url_launcher_windows
 )