Browse Source

Merge pull request #268 from ente-io/improve_logs

Improve logs
Vishnu Mohandas 3 năm trước cách đây
mục cha
commit
7a78f070ab

+ 1 - 1
lib/models/file.dart

@@ -231,7 +231,7 @@ class File {
 
 
   @override
   @override
   String toString() {
   String toString() {
-    return '''File(generatedID: $generatedID, localID: $localID, 
+    return '''File(generatedID: $generatedID, localID: $localID, title: $title, 
       uploadedFileId: $uploadedFileID, modificationTime: $modificationTime, 
       uploadedFileId: $uploadedFileID, modificationTime: $modificationTime, 
       ownerID: $ownerID, collectionID: $collectionID, updationTime: $updationTime)''';
       ownerID: $ownerID, collectionID: $collectionID, updationTime: $updationTime)''';
   }
   }

+ 4 - 0
lib/ui/settings/support_section_widget.dart

@@ -60,6 +60,10 @@ class SupportSectionWidget extends StatelessWidget {
           onTap: () async {
           onTap: () async {
             await sendLogs(context, "report bug", "bug@ente.io");
             await sendLogs(context, "report bug", "bug@ente.io");
           },
           },
+          onDoubleTap: () async {
+            final zipFilePath = await getZippedLogsFile(context);
+            await shareLogs(context, "bug@ente.io", zipFilePath);
+        },
           child: SettingsTextItem(
           child: SettingsTextItem(
               text: "report bug 🐞", icon: Icons.navigate_next),
               text: "report bug 🐞", icon: Icons.navigate_next),
         ),
         ),

+ 29 - 18
lib/utils/email_util.dart

@@ -115,16 +115,7 @@ Future<void> sendLogs(
 
 
 Future<void> _sendLogs(
 Future<void> _sendLogs(
     BuildContext context, String toEmail, String subject, String body) async {
     BuildContext context, String toEmail, String subject, String body) async {
-  final dialog = createProgressDialog(context, "preparing logs...");
-  await dialog.show();
-  final tempPath = (await getTemporaryDirectory()).path;
-  final zipFilePath = tempPath + "/logs.zip";
-  final logsDirectory = Directory(tempPath + "/logs");
-  var encoder = ZipFileEncoder();
-  encoder.create(zipFilePath);
-  encoder.addDirectory(logsDirectory);
-  encoder.close();
-  await dialog.hide();
+  String zipFilePath = await getZippedLogsFile(context);
   final Email email = Email(
   final Email email = Email(
     recipients: [toEmail],
     recipients: [toEmail],
     subject: subject,
     subject: subject,
@@ -136,13 +127,33 @@ Future<void> _sendLogs(
     await FlutterEmailSender.send(email);
     await FlutterEmailSender.send(email);
   } catch (e, s) {
   } catch (e, s) {
     _logger.severe('email sender failed', e, s);
     _logger.severe('email sender failed', e, s);
-    final result = await showChoiceDialog(
-        context, "email logs", "please send the logs to $toEmail",
-        firstAction: "copy email", secondAction: "send");
-    if (result != null && result == DialogUserChoice.firstChoice) {
-      await Clipboard.setData(ClipboardData(text: toEmail));
-    }
-    final Size size = MediaQuery.of(context).size;
-    await Share.shareFiles([zipFilePath], sharePositionOrigin: Rect.fromLTWH(0, 0, size.width, size.height / 2));
+    await shareLogs(context, toEmail, zipFilePath);
+  }
+}
+
+Future<String> getZippedLogsFile(BuildContext context) async {
+  final dialog = createProgressDialog(context, "preparing logs...");
+  await dialog.show();
+  final tempPath = (await getTemporaryDirectory()).path;
+  final zipFilePath = tempPath + "/logs.zip";
+  final logsDirectory = Directory(tempPath + "/logs");
+  var encoder = ZipFileEncoder();
+  encoder.create(zipFilePath);
+  encoder.addDirectory(logsDirectory);
+  encoder.close();
+  await dialog.hide();
+  return zipFilePath;
+}
+
+Future<void> shareLogs(
+    BuildContext context, String toEmail, String zipFilePath) async {
+  final result = await showChoiceDialog(
+      context, "email logs", "please send the logs to $toEmail",
+      firstAction: "copy email", secondAction: "send");
+  if (result != null && result == DialogUserChoice.firstChoice) {
+    await Clipboard.setData(ClipboardData(text: toEmail));
   }
   }
+  final Size size = MediaQuery.of(context).size;
+  await Share.shareFiles([zipFilePath],
+      sharePositionOrigin: Rect.fromLTWH(0, 0, size.width, size.height / 2));
 }
 }

+ 2 - 1
lib/utils/file_uploader_util.dart

@@ -74,7 +74,8 @@ Future<MediaUploadData> _getMediaUploadDataFromAssetFile(ente.File file) async {
   if (file.fileType == FileType.livePhoto && io.Platform.isIOS) {
   if (file.fileType == FileType.livePhoto && io.Platform.isIOS) {
     final io.File videoUrl = await Motionphoto.getLivePhotoFile(file.localID);
     final io.File videoUrl = await Motionphoto.getLivePhotoFile(file.localID);
     if (videoUrl == null || !videoUrl.existsSync()) {
     if (videoUrl == null || !videoUrl.existsSync()) {
-      String errMsg = "missing livePhoto url for " + file.toString();
+      String errMsg = "missing livePhoto url for  ${file
+          .toString()} with subType ${file.fileSubType};
       _logger.severe(errMsg);
       _logger.severe(errMsg);
       throw InvalidFileUploadState(errMsg);
       throw InvalidFileUploadState(errMsg);
     }
     }