Show email status/errors

This commit is contained in:
Hillel Coren 2023-10-23 18:35:03 +03:00
parent e1187d53d1
commit 4dcd5acabf
2 changed files with 58 additions and 13 deletions

View File

@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/help_text.dart'; import 'package:invoiceninja_flutter/ui/app/help_text.dart';
import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart'; import 'package:invoiceninja_flutter/ui/app/scrollable_listview.dart';
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart'; import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_contacts_vm.dart';
import 'package:invoiceninja_flutter/utils/formatting.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import '../../../redux/app/app_state.dart'; import '../../../redux/app/app_state.dart';
@ -121,11 +122,11 @@ class _ClientContactListTile extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context)!;
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final invitationButton = (invitation?.link ?? '').isNotEmpty final invitationButton = (invitation?.link ?? '').isNotEmpty
? IconButton( ? IconButton(
tooltip: localization!.copyLink, tooltip: localization.copyLink,
icon: Icon(Icons.copy), icon: Icon(Icons.copy),
onPressed: () { onPressed: () {
Clipboard.setData(ClipboardData(text: invitation!.link)); Clipboard.setData(ClipboardData(text: invitation!.link));
@ -162,11 +163,33 @@ class _ClientContactListTile extends StatelessWidget {
: AppLocalization.of(context)!.blankContact, : AppLocalization.of(context)!.blankContact,
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
if (clientContact.email.isNotEmpty) if (clientContact.email.isNotEmpty) ...[
Text( Padding(
clientContact.email, padding: const EdgeInsets.only(top: 4),
style: Theme.of(context).textTheme.bodySmall, child: Text(
clientContact.email,
style: Theme.of(context).textTheme.bodySmall,
),
), ),
if ((invitation?.emailStatus ?? '').isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: 2),
child: Text(
localization.lookup(invitation!.emailStatus) +
'' +
formatDate(invitation!.sentDate, context),
style: Theme.of(context).textTheme.bodySmall,
),
),
if ((invitation?.emailError ?? '').isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
invitation!.emailError,
style: Theme.of(context).textTheme.bodySmall,
),
),
]
], ],
), ),
), ),
@ -192,11 +215,11 @@ class _VendorContactListTile extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context)!;
final store = StoreProvider.of<AppState>(context); final store = StoreProvider.of<AppState>(context);
final invitationButton = (invitation?.link ?? '').isNotEmpty final invitationButton = (invitation?.link ?? '').isNotEmpty
? IconButton( ? IconButton(
tooltip: localization!.copyLink, tooltip: localization.copyLink,
icon: Icon(Icons.copy), icon: Icon(Icons.copy),
onPressed: () { onPressed: () {
Clipboard.setData(ClipboardData(text: invitation!.link)); Clipboard.setData(ClipboardData(text: invitation!.link));
@ -233,11 +256,33 @@ class _VendorContactListTile extends StatelessWidget {
: AppLocalization.of(context)!.blankContact, : AppLocalization.of(context)!.blankContact,
style: Theme.of(context).textTheme.titleMedium, style: Theme.of(context).textTheme.titleMedium,
), ),
if (vendorContact.email.isNotEmpty) if (vendorContact.email.isNotEmpty) ...[
Text( Padding(
vendorContact.email, padding: const EdgeInsets.only(top: 4),
style: Theme.of(context).textTheme.bodySmall, child: Text(
vendorContact.email,
style: Theme.of(context).textTheme.bodySmall,
),
), ),
if ((invitation?.emailStatus ?? '').isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: 2),
child: Text(
localization.lookup(invitation!.emailStatus) +
'' +
formatDate(invitation!.sentDate, context),
style: Theme.of(context).textTheme.bodySmall,
),
),
if ((invitation?.emailError ?? '').isNotEmpty)
Padding(
padding: const EdgeInsets.only(top: 8),
child: Text(
invitation!.emailError,
style: Theme.of(context).textTheme.bodySmall,
),
),
],
], ],
), ),
), ),

View File

@ -127,7 +127,7 @@ class _InvitationListTile extends StatelessWidget {
formatDate(invitation.viewedDate, context, showTime: true), formatDate(invitation.viewedDate, context, showTime: true),
), ),
), ),
if (invitation.emailStatus.isNotEmpty) if (invitation.emailError.isNotEmpty)
CopyToClipboard( CopyToClipboard(
value: invitation.emailError, value: invitation.emailError,
child: Padding( child: Padding(