From a4421f831a29d091dc849500f6d5bb9791061089 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 27 Feb 2024 10:51:03 -0800 Subject: [PATCH] Formatting / Layout Tweaks --- lib/models/message.dart | 1 + lib/widgets/contactrow.dart | 81 ++++++++++++++++++++----------------- lib/widgets/messagerow.dart | 7 ++++ pubspec.lock | 2 +- pubspec.yaml | 2 +- 5 files changed, 53 insertions(+), 40 deletions(-) diff --git a/lib/models/message.dart b/lib/models/message.dart index 1e166ff6..00202ab8 100644 --- a/lib/models/message.dart +++ b/lib/models/message.dart @@ -130,6 +130,7 @@ class ByIndex implements CacheHandler { for (; i < messagesWrapper.length; i++) { var messageInfo = MessageWrapperToInfo(profileOnion, conversationIdentifier, messagesWrapper[i]); + messageInfo.metadata.lastChecked = DateTime.now(); cache.addIndexed(messageInfo, start + i); } } catch (e, stacktrace) { diff --git a/lib/widgets/contactrow.dart b/lib/widgets/contactrow.dart index 9d90782d..1a67ed90 100644 --- a/lib/widgets/contactrow.dart +++ b/lib/widgets/contactrow.dart @@ -7,6 +7,7 @@ import 'package:cwtch/models/profile.dart'; import 'package:cwtch/models/redaction.dart'; import 'package:cwtch/themes/opaque.dart'; import 'package:cwtch/views/contactsview.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:cwtch/widgets/profileimage.dart'; import 'package:provider/provider.dart'; @@ -121,35 +122,37 @@ class _ContactRowState extends State { padding: EdgeInsets.all(0), height: contact.isInvitation ? Provider.of(context).fontScaling * 14.0 + 35.0 : Provider.of(context).fontScaling * 14.0 + 5.0, child: contact.isInvitation == true - ? Wrap(alignment: WrapAlignment.start, direction: Axis.vertical, children: [ - Padding( - padding: EdgeInsets.all(2), - child: TextButton.icon( - label: Text( - AppLocalizations.of(context)!.tooltipAcceptContactRequest, - style: Provider.of(context).scaleFonts(defaultTextButtonStyle), - ), - icon: Icon( - Icons.favorite, - size: 16, - color: Provider.of(context).theme.mainTextColor, - ), - onPressed: _btnApprove, - )), - Padding( - padding: EdgeInsets.all(2), - child: TextButton.icon( - label: Text( - AppLocalizations.of(context)!.tooltipRejectContactRequest, - style: Provider.of(context).scaleFonts(defaultTextButtonStyle), - ), - style: ButtonStyle( - backgroundColor: MaterialStateProperty.all(Provider.of(context).theme.backgroundPaneColor), - foregroundColor: MaterialStateProperty.all(Provider.of(context).theme.mainTextColor)), - icon: Icon(Icons.delete, size: 16, color: Provider.of(context).theme.mainTextColor), - onPressed: _btnReject, - )) - ]) + ? FittedBox( + fit: BoxFit.cover, + child: Row(mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ + Padding( + padding: EdgeInsets.all(2), + child: TextButton.icon( + label: Text( + AppLocalizations.of(context)!.tooltipAcceptContactRequest, + style: Provider.of(context).scaleFonts(defaultTextButtonStyle), + ), + icon: Icon( + Icons.favorite, + size: 16, + color: Provider.of(context).theme.mainTextColor, + ), + onPressed: _btnApprove, + )), + Padding( + padding: EdgeInsets.all(2), + child: TextButton.icon( + label: Text( + AppLocalizations.of(context)!.tooltipRejectContactRequest, + style: Provider.of(context).scaleFonts(defaultTextButtonStyle), + ), + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all(Provider.of(context).theme.backgroundPaneColor), + foregroundColor: MaterialStateProperty.all(Provider.of(context).theme.mainTextColor)), + icon: Icon(Icons.delete, size: 16, color: Provider.of(context).theme.mainTextColor), + onPressed: _btnReject, + )) + ])) : (contact.isBlocked ? IconButton( padding: EdgeInsets.symmetric(vertical: 2.0, horizontal: 0.0), @@ -168,15 +171,17 @@ class _ContactRowState extends State { child: Container( padding: EdgeInsets.all(0), height: Provider.of(context).fontScaling * 13.0 + 5.0, - child: Text( - contact.onion, - overflow: TextOverflow.ellipsis, - style: Provider.of(context).scaleFonts(TextStyle( - fontSize: 13.0, - fontFamily: "RobotoMono", - color: ((contact.isBlocked ? Provider.of(context).theme.portraitBlockedTextColor : Provider.of(context).theme.mainTextColor) as Color) - .withOpacity(0.8))), - ))), + child: FittedBox( + fit: BoxFit.scaleDown, + child: Text( + contact.onion, + overflow: TextOverflow.ellipsis, + style: Provider.of(context).scaleFonts(TextStyle( + fontSize: 13.0, + fontFamily: "RobotoMono", + color: ((contact.isBlocked ? Provider.of(context).theme.portraitBlockedTextColor : Provider.of(context).theme.mainTextColor) as Color) + .withOpacity(0.8))), + )))), ], ))), Visibility( diff --git a/lib/widgets/messagerow.dart b/lib/widgets/messagerow.dart index f64a3e1d..79148a2c 100644 --- a/lib/widgets/messagerow.dart +++ b/lib/widgets/messagerow.dart @@ -9,6 +9,7 @@ import 'package:cwtch/models/profile.dart'; import 'package:cwtch/themes/opaque.dart'; import 'package:cwtch/third_party/base32/base32.dart'; import 'package:cwtch/views/contactsview.dart'; +import 'package:cwtch/widgets/messageloadingbubble.dart'; import 'package:cwtch/widgets/staticmessagebubble.dart'; import 'package:flutter/material.dart'; import 'package:cwtch/widgets/profileimage.dart'; @@ -57,6 +58,12 @@ class MessageRowState extends State with SingleTickerProviderStateMi @override Widget build(BuildContext context) { + // message cache will return a malformed metadata object + // if for whatever reason this message doesn't exist + if (Provider.of(context).senderHandle == "") { + EnvironmentConfig.debugLog("error, cache returned malformed message. This is likely a programming bug."); + return MessageLoadingBubble(); + } var fromMe = Provider.of(context).senderHandle == Provider.of(context).onion; var isContact = Provider.of(context).contactList.findContact(Provider.of(context).senderHandle) != null; var isGroup = Provider.of(context).contactList.getContact(Provider.of(context, listen: false).conversationIdentifier)!.isGroup; diff --git a/pubspec.lock b/pubspec.lock index 44fdb30e..2a563c8d 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -961,7 +961,7 @@ packages: source: hosted version: "6.3.0" yaml: - dependency: transitive + dependency: "direct main" description: name: yaml sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" diff --git a/pubspec.yaml b/pubspec.yaml index 7776542b..d4effff6 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,7 +39,7 @@ dependencies: crypto: ^3.0.2 glob: any - scrollable_positioned_list: ^0.3.2 + scrollable_positioned_list: 0.3.8 file_picker: 5.2.11 url_launcher: ^6.0.18 window_manager: ^0.3.2