diff --git a/flutter/lib/pages/message_list/message_list_item.dart b/flutter/lib/pages/message_list/message_list_item.dart index 852b1ec..44f01fd 100644 --- a/flutter/lib/pages/message_list/message_list_item.dart +++ b/flutter/lib/pages/message_list/message_list_item.dart @@ -48,10 +48,6 @@ class MessageListItem extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (message.priority == 2) FaIcon(FontAwesomeIcons.solidTriangleExclamation, size: 16, color: Colors.red[900]), - if (message.priority == 2) SizedBox(width: 4), - if (message.priority == 0) FaIcon(FontAwesomeIcons.solidDown, size: 16, color: Colors.lightBlue[900]), - if (message.priority == 0) SizedBox(width: 4), Expanded( child: Text( processTitle(message.title), @@ -69,11 +65,22 @@ class MessageListItem extends StatelessWidget { ], ), SizedBox(height: 4), - Text( - processContent(message.content), - style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)), - overflow: TextOverflow.ellipsis, - maxLines: _lineCount, + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: Text( + processContent(message.content), + style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)), + overflow: TextOverflow.ellipsis, + maxLines: _lineCount, + ), + ), + if (message.priority == 2) SizedBox(width: 4), + if (message.priority == 2) FaIcon(FontAwesomeIcons.solidTriangleExclamation, size: 16, color: Colors.red[900]), + if (message.priority == 0) SizedBox(width: 4), + if (message.priority == 0) FaIcon(FontAwesomeIcons.solidDown, size: 16, color: Colors.lightBlue[900]), + ], ), ], ), @@ -99,10 +106,6 @@ class MessageListItem extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (message.priority == 2) FaIcon(FontAwesomeIcons.solidTriangleExclamation, size: 16, color: Colors.red[900]), - if (message.priority == 2) SizedBox(width: 4), - if (message.priority == 0) FaIcon(FontAwesomeIcons.solidDown, size: 16, color: Colors.lightBlue[900]), - if (message.priority == 0) SizedBox(width: 4), UI.channelChip( context: context, text: resolveChannelName(message), @@ -124,11 +127,22 @@ class MessageListItem extends StatelessWidget { overflow: TextOverflow.ellipsis, maxLines: 3, ), - Text( - processContent(message.content), - style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)), - overflow: TextOverflow.ellipsis, - maxLines: _lineCount, + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + Expanded( + child: Text( + processContent(message.content), + style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)), + overflow: TextOverflow.ellipsis, + maxLines: _lineCount, + ), + ), + if (message.priority == 2) SizedBox(width: 4), + if (message.priority == 2) FaIcon(FontAwesomeIcons.solidTriangleExclamation, size: 16, color: Colors.red[900]), + if (message.priority == 0) SizedBox(width: 4), + if (message.priority == 0) FaIcon(FontAwesomeIcons.solidDown, size: 16, color: Colors.lightBlue[900]), + ], ), ], ), diff --git a/flutter/lib/pages/message_view/message_view.dart b/flutter/lib/pages/message_view/message_view.dart index b2f81a3..f266ba2 100644 --- a/flutter/lib/pages/message_view/message_view.dart +++ b/flutter/lib/pages/message_view/message_view.dart @@ -163,7 +163,7 @@ class _MessageViewPageState extends State { ], ), SizedBox(height: 8), - Text(message.title, style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), + Text(_preformatTitle(message), style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold)), ]; } @@ -248,4 +248,8 @@ class _MessageViewPageState extends State { ); } } + + String _preformatTitle(Message message) { + return message.title.replaceAll('\n', '').replaceAll('\r', '').replaceAll('\t', ' '); + } } diff --git a/flutter/lib/pages/send/send.dart b/flutter/lib/pages/send/send.dart index 573c327..b333843 100644 --- a/flutter/lib/pages/send/send.dart +++ b/flutter/lib/pages/send/send.dart @@ -130,6 +130,8 @@ class _SendRootPageState extends State { try { final Uri uri = Uri.parse(url); + ApplicationLog.debug('Opening URL: [ ${uri.toString()} ]'); + if (await canLaunchUrl(uri)) { await launchUrl(uri); } else { diff --git a/flutter/lib/state/application_log.dart b/flutter/lib/state/application_log.dart index 071195c..15892fc 100644 --- a/flutter/lib/state/application_log.dart +++ b/flutter/lib/state/application_log.dart @@ -6,7 +6,7 @@ part 'application_log.g.dart'; class ApplicationLog { static void debug(String message, {String? additional, StackTrace? trace}) { - print('[DEBUG] ${message}: ${additional ?? ''}'); + (additional != null && additional != '') ? print('[DEBUG] ${message}: ${additional}') : print('[DEBUG] ${message}'); Hive.box('scn-logs').add(SCNLog( id: Xid().toString(), @@ -19,7 +19,7 @@ class ApplicationLog { } static void info(String message, {String? additional, StackTrace? trace}) { - print('[INFO] ${message}: ${additional ?? ''}'); + (additional != null && additional != '') ? print('[INFO] ${message}: ${additional}') : print('[INFO] ${message}'); Hive.box('scn-logs').add(SCNLog( id: Xid().toString(), @@ -32,7 +32,7 @@ class ApplicationLog { } static void warn(String message, {String? additional, StackTrace? trace}) { - print('[WARN] ${message}: ${additional ?? ''}'); + (additional != null && additional != '') ? print('[WARN] ${message}: ${additional}') : print('[WARN] ${message}'); Hive.box('scn-logs').add(SCNLog( id: Xid().toString(), @@ -45,7 +45,7 @@ class ApplicationLog { } static void error(String message, {String? additional, StackTrace? trace}) { - print('[ERROR] ${message}: ${additional ?? ''}'); + (additional != null && additional != '') ? print('[ERROR] ${message}: ${additional}') : print('[ERROR] ${message}'); Hive.box('scn-logs').add(SCNLog( id: Xid().toString(), @@ -58,7 +58,7 @@ class ApplicationLog { } static void fatal(String message, {String? additional, StackTrace? trace}) { - print('[FATAL] ${message}: ${additional ?? ''}'); + (additional != null && additional != '') ? print('[FATAL] ${message}: ${additional}') : print('[FATAL] ${message}'); Hive.box('scn-logs').add(SCNLog( id: Xid().toString(),