TF-1994 Enable long press to copy an email address in email view
(cherry picked from commit 8af88c0091f7e3489a641fb798fbe96c27a2c5fa)
This commit is contained in:
@@ -72,6 +72,7 @@ import 'package:tmail_ui_user/main/routes/dialog_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/navigation_router.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_navigation.dart';
|
||||
import 'package:tmail_ui_user/main/routes/route_utils.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
@@ -950,12 +951,7 @@ class SingleEmailController extends BaseController with AppLoaderMixin {
|
||||
|
||||
void copyEmailAddress(BuildContext context, EmailAddress emailAddress) {
|
||||
popBack();
|
||||
|
||||
Clipboard.setData(ClipboardData(text: emailAddress.emailAddress)).then((_){
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text(AppLocalizations.of(context).email_address_copied_to_clipboard))
|
||||
);
|
||||
});
|
||||
AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
|
||||
}
|
||||
|
||||
void composeEmailFromEmailAddress(EmailAddress emailAddress) {
|
||||
|
||||
@@ -17,6 +17,7 @@ import 'package:tmail_ui_user/features/base/widget/material_text_button.dart';
|
||||
import 'package:tmail_ui_user/features/composer/presentation/extensions/prefix_email_address_extension.dart';
|
||||
import 'package:tmail_ui_user/features/email/presentation/controller/single_email_controller.dart';
|
||||
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
class EmailReceiverBuilder extends StatelessWidget {
|
||||
|
||||
@@ -190,6 +191,9 @@ class EmailReceiverBuilder extends StatelessWidget {
|
||||
? emailAddress.asString()
|
||||
: '${emailAddress.asString()},',
|
||||
onTap: () => controller.openEmailAddressDialog(context, emailAddress),
|
||||
onLongPress: () {
|
||||
AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
|
||||
},
|
||||
borderRadius: 8,
|
||||
labelColor: Colors.black,
|
||||
labelSize: 16,
|
||||
|
||||
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:jmap_dart_client/jmap/mail/email/email_address.dart';
|
||||
import 'package:model/extensions/email_address_extension.dart';
|
||||
import 'package:tmail_ui_user/features/base/widget/material_text_button.dart';
|
||||
import 'package:tmail_ui_user/main/utils/app_utils.dart';
|
||||
|
||||
typedef OnOpenEmailAddressDetailAction = Function(BuildContext context, EmailAddress emailAddress);
|
||||
|
||||
@@ -32,6 +33,9 @@ class EmailSenderBuilder extends StatelessWidget {
|
||||
MaterialTextButton(
|
||||
label: emailAddress.displayName,
|
||||
onTap: () => openEmailAddressDetailAction?.call(context, emailAddress),
|
||||
onLongPress: () {
|
||||
AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
|
||||
},
|
||||
borderRadius: 8,
|
||||
padding: const EdgeInsets.all(3),
|
||||
labelSize: 20,
|
||||
@@ -45,6 +49,9 @@ class EmailSenderBuilder extends StatelessWidget {
|
||||
child: MaterialTextButton(
|
||||
label: '<${emailAddress.emailAddress}>',
|
||||
onTap: () => openEmailAddressDetailAction?.call(context, emailAddress),
|
||||
onLongPress: () {
|
||||
AppUtils.copyEmailAddressToClipboard(context, emailAddress.emailAddress);
|
||||
},
|
||||
borderRadius: 8,
|
||||
padding: const EdgeInsets.all(3),
|
||||
labelSize: 16,
|
||||
|
||||
Reference in New Issue
Block a user