diff --git a/lib/ui/home_widget.dart b/lib/ui/home_widget.dart index 4d12a137d..1409169a1 100644 --- a/lib/ui/home_widget.dart +++ b/lib/ui/home_widget.dart @@ -33,10 +33,12 @@ class _HomeWidgetState extends State { @override void initState() { super.initState(); - detector = ShakeDetector.waitForStart(onPhoneShake: () { - logger.info("Emailing logs"); - emailLogs(); - }); + detector = ShakeDetector.waitForStart( + shakeThresholdGravity: 2, + onPhoneShake: () { + logger.info("Emailing logs"); + LoggingUtil.instance.emailLogs(); + }); } @override diff --git a/lib/utils/logging_util.dart b/lib/utils/logging_util.dart index e6f76f3a2..22af92d6d 100644 --- a/lib/utils/logging_util.dart +++ b/lib/utils/logging_util.dart @@ -4,21 +4,33 @@ 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); +class LoggingUtil { + LoggingUtil._privateConstructor(); + + static final LoggingUtil instance = LoggingUtil._privateConstructor(); + + bool _isInProgress = false; + Future emailLogs() async { + if (_isInProgress) { + return; + } + _isInProgress = true; + 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); + _isInProgress = false; + } }