Merge pull request #199 from ente-io/email_fix

show dialog with email address initiating share files
This commit is contained in:
Vishnu Mohandas 2022-03-08 13:19:18 +05:30 committed by GitHub
commit 2712fd73c5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 24 deletions

View file

@ -86,6 +86,12 @@ class _EnteAppState extends State<EnteApp> with WidgetsBindingObserver {
); );
} }
@override
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
@override @override
void didChangeAppLifecycleState(AppLifecycleState state) { void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) { if (state == AppLifecycleState.resumed) {

View file

@ -1,4 +1,3 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:photos/utils/email_util.dart'; import 'package:photos/utils/email_util.dart';
@ -20,9 +19,8 @@ PopupMenuButton<dynamic> reportBugPopupMenu(BuildContext context) {
}, },
onSelected: (value) async { onSelected: (value) async {
if (value == 1) { if (value == 1) {
await sendLogs(context, "contact support", "support@ente.io", postShare: () { await sendLogs(context, "contact support", "support@ente.io",
postShare: () {});
});
} }
}, },
); );

View file

@ -3,16 +3,19 @@ import 'dart:io';
import 'package:archive/archive_io.dart'; import 'package:archive/archive_io.dart';
import 'package:email_validator/email_validator.dart'; import 'package:email_validator/email_validator.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_email_sender/flutter_email_sender.dart'; import 'package:flutter_email_sender/flutter_email_sender.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:photos/ui/common/dialogs.dart';
import 'package:photos/ui/log_file_viewer.dart'; import 'package:photos/ui/log_file_viewer.dart';
import 'package:photos/utils/dialog_util.dart'; import 'package:photos/utils/dialog_util.dart';
import 'package:share_plus/share_plus.dart'; import 'package:share_plus/share_plus.dart';
import 'package:super_logging/super_logging.dart'; import 'package:super_logging/super_logging.dart';
final Logger _logger = Logger('email_util'); final Logger _logger = Logger('email_util');
bool isValidEmail(String email) { bool isValidEmail(String email) {
return EmailValidator.validate(email); return EmailValidator.validate(email);
} }
@ -133,6 +136,12 @@ 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: "ok");
if (result != null && result == DialogUserChoice.firstChoice) {
await Clipboard.setData(ClipboardData(text: toEmail));
}
await Share.shareFiles([zipFilePath]); await Share.shareFiles([zipFilePath]);
} }
} }