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,29 +1,27 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:photos/utils/email_util.dart'; import 'package:photos/utils/email_util.dart';
PopupMenuButton<dynamic> reportBugPopupMenu(BuildContext context) { PopupMenuButton<dynamic> reportBugPopupMenu(BuildContext context) {
return PopupMenuButton( return PopupMenuButton(
itemBuilder: (context) { itemBuilder: (context) {
final List<PopupMenuItem> items = []; final List<PopupMenuItem> items = [];
items.add( items.add(
PopupMenuItem( PopupMenuItem(
value: 1, value: 1,
child: Row( child: Row(
children: const [ children: const [
Text("contact support"), Text("contact support"),
], ],
),
), ),
); ),
return items; );
}, return items;
onSelected: (value) async { },
if (value == 1) { onSelected: (value) async {
await sendLogs(context, "contact support", "support@ente.io", postShare: () { if (value == 1) {
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]);
} }
} }