Add ability to send logs via email

This commit is contained in:
Vishnu Mohandas 2020-05-02 22:42:03 +05:30
parent 7b3a3eb184
commit 3489172067
5 changed files with 70 additions and 3 deletions

View file

@ -66,8 +66,6 @@ class _GalleryAppBarWidgetState extends State<GalleryAppBarWidget> {
actions.add(IconButton(
icon: Icon(Icons.sync_problem),
onPressed: () {
final list = new List<int>();
print(list[0]);
_openSyncConfiguration(context);
},
));

View file

@ -9,7 +9,10 @@ import 'package:photos/ui/album_list_widget.dart';
import 'package:photos/ui/change_notifier_builder.dart';
import 'package:photos/ui/gallery_app_bar_widget.dart';
import 'package:photos/ui/gallery_container_widget.dart';
import 'package:photos/utils/logging_util.dart';
import 'package:provider/provider.dart';
import 'package:shake/shake.dart';
import 'package:logging/logging.dart';
class HomeWidget extends StatefulWidget {
final String title;
@ -21,12 +24,24 @@ class HomeWidget extends StatefulWidget {
}
class _HomeWidgetState extends State<HomeWidget> {
final logger = Logger("HomeWidgetState");
ShakeDetector detector;
PhotoLoader get photoLoader => Provider.of<PhotoLoader>(context);
int _selectedNavBarItem = 0;
Set<Photo> _selectedPhotos = HashSet<Photo>();
@override
void initState() {
super.initState();
detector = ShakeDetector.waitForStart(onPhoneShake: () {
logger.info("Emailing logs");
emailLogs();
});
}
@override
Widget build(BuildContext context) {
detector.startListening();
return Scaffold(
appBar: GalleryAppBarWidget(
widget.title,
@ -86,4 +101,10 @@ class _HomeWidgetState extends State<HomeWidget> {
},
);
}
@override
void dispose() {
detector.stopListening();
super.dispose();
}
}

View file

@ -0,0 +1,24 @@
import 'dart:io';
import 'package:archive/archive_io.dart';
import 'package:flutter_email_sender/flutter_email_sender.dart';
import 'package:path_provider/path_provider.dart';
Future<void> emailLogs() async {
final tempPath = (await getTemporaryDirectory()).path;
final zipFilePath = tempPath + "/logs.zip";
Directory logsDirectory = Directory(tempPath + "/logs");
var encoder = ZipFileEncoder();
encoder.create(zipFilePath);
encoder.addDirectory(logsDirectory);
encoder.close();
final Email email = Email(
body: 'Logs attached.',
subject: 'Error, error, share the terror.',
recipients: ['android-support@ente.io'],
cc: ['vishnumohandas@gmail.com'],
attachmentPaths: [zipFilePath],
isHTML: false,
);
await FlutterEmailSender.send(email);
}

View file

@ -2,7 +2,7 @@
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
archive:
dependency: transitive
dependency: "direct main"
description:
name: archive
url: "https://pub.dartlang.org"
@ -125,6 +125,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_email_sender:
dependency: "direct main"
description:
name: flutter_email_sender
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
flutter_image_compress:
dependency: "direct main"
description:
@ -310,6 +317,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
sensors:
dependency: transitive
description:
name: sensors
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.2"
sentry:
dependency: "direct main"
description:
@ -317,6 +331,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
shake:
dependency: "direct main"
description:
name: shake
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
shared_preferences:
dependency: "direct main"
description:

View file

@ -42,6 +42,9 @@ dependencies:
event_bus: ^1.1.1
sentry: ">=3.0.0 <4.0.0"
super_logging: ^1.0.0
shake: ^0.1.0
archive: ^2.0.11
flutter_email_sender: ^3.0.1
dev_dependencies:
flutter_test: