diff --git a/lib/ui/gallery_app_bar_widget.dart b/lib/ui/gallery_app_bar_widget.dart index 6131b5ec5..1cb0caf72 100644 --- a/lib/ui/gallery_app_bar_widget.dart +++ b/lib/ui/gallery_app_bar_widget.dart @@ -66,8 +66,6 @@ class _GalleryAppBarWidgetState extends State { actions.add(IconButton( icon: Icon(Icons.sync_problem), onPressed: () { - final list = new List(); - print(list[0]); _openSyncConfiguration(context); }, )); diff --git a/lib/ui/home_widget.dart b/lib/ui/home_widget.dart index b0afec76b..4d12a137d 100644 --- a/lib/ui/home_widget.dart +++ b/lib/ui/home_widget.dart @@ -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 { + final logger = Logger("HomeWidgetState"); + ShakeDetector detector; PhotoLoader get photoLoader => Provider.of(context); int _selectedNavBarItem = 0; Set _selectedPhotos = HashSet(); + @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 { }, ); } + + @override + void dispose() { + detector.stopListening(); + super.dispose(); + } } diff --git a/lib/utils/logging_util.dart b/lib/utils/logging_util.dart new file mode 100644 index 000000000..e6f76f3a2 --- /dev/null +++ b/lib/utils/logging_util.dart @@ -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 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); +} diff --git a/pubspec.lock b/pubspec.lock index eb32f81d2..e69fc8efe 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -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: diff --git a/pubspec.yaml b/pubspec.yaml index 183c1f7fe..b7c6458b2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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: