diff --git a/lib/models/messagecache.dart b/lib/models/messagecache.dart index 59c83b0c..0145689d 100644 --- a/lib/models/messagecache.dart +++ b/lib/models/messagecache.dart @@ -1,8 +1,5 @@ import 'dart:async'; -import 'dart:ffi'; - import 'package:flutter/foundation.dart'; - import 'message.dart'; // we only count up to 100 unread messages, if more than that we can't accurately resync message cache, just reset diff --git a/lib/models/messages/quotedmessage.dart b/lib/models/messages/quotedmessage.dart index 084953eb..471ed536 100644 --- a/lib/models/messages/quotedmessage.dart +++ b/lib/models/messages/quotedmessage.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:cwtch/models/message.dart'; +import 'package:cwtch/models/messages/malformedmessage.dart'; import 'package:cwtch/widgets/malformedbubble.dart'; import 'package:cwtch/widgets/messagerow.dart'; import 'package:cwtch/widgets/quotedmessage.dart'; @@ -54,7 +55,7 @@ class QuotedMessage extends Message { dynamic message = jsonDecode(this.content); if (message["body"] == null || message["quotedHash"] == null) { - return MalformedBubble(); + return MalformedMessage(this.metadata).getWidget(context, key, index); } return ChangeNotifierProvider.value( @@ -64,7 +65,7 @@ class QuotedMessage extends Message { key: key); }); } catch (e) { - return MalformedBubble(); + return MalformedMessage(this.metadata).getWidget(context, key, index); } } } diff --git a/lib/widgets/filebubble.dart b/lib/widgets/filebubble.dart index e533eee8..e44990eb 100644 --- a/lib/widgets/filebubble.dart +++ b/lib/widgets/filebubble.dart @@ -86,7 +86,7 @@ class FileBubbleState extends State { if (downloadComplete && path != null) { var lpath = path.toLowerCase(); if (lpath.endsWith(".jpg") || lpath.endsWith(".jpeg") || lpath.endsWith(".png") || lpath.endsWith(".gif") || lpath.endsWith(".webp") || lpath.endsWith(".bmp")) { - if (myFile == null) { + if (myFile == null || myFile?.path != path) { setState(() { myFile = new File(path!); diff --git a/lib/widgets/messagelist.dart b/lib/widgets/messagelist.dart index bc50376b..449acee5 100644 --- a/lib/widgets/messagelist.dart +++ b/lib/widgets/messagelist.dart @@ -85,19 +85,19 @@ class _MessageListState extends State { itemCount: Provider.of(outerContext).totalMessages, reverse: true, // NOTE: There seems to be a bug in flutter that corrects the mouse wheel scroll, but not the drag direction... itemBuilder: (itemBuilderContext, index) { - var profileOnion = Provider.of(outerContext, listen: false).onion; - var contactHandle = Provider.of(outerContext, listen: false).identifier; + var profileOnion = Provider.of(itemBuilderContext, listen: false).onion; + var contactHandle = Provider.of(itemBuilderContext, listen: false).identifier; var messageIndex = index; return FutureBuilder( - future: messageHandler(outerContext, profileOnion, contactHandle, ByIndex(messageIndex)), + future: messageHandler(itemBuilderContext, profileOnion, contactHandle, ByIndex(messageIndex)), builder: (context, snapshot) { if (snapshot.hasData) { var message = snapshot.data as Message; // here we create an index key for the contact and assign it to the row. Indexes are unique so we can // reliably use this without running into duplicate keys...it isn't ideal as it means keys need to be re-built // when new messages are added...however it is better than the alternative of not having widget keys at all. - var key = Provider.of(outerContext, listen: false).getMessageKey(contactHandle, messageIndex); + var key = Provider.of(itemBuilderContext, listen: false).getMessageKey(contactHandle, messageIndex); return message.getWidget(context, key, messageIndex); } else { return MessageLoadingBubble(); diff --git a/lib/widgets/quotedmessage.dart b/lib/widgets/quotedmessage.dart index 51c157be..038d9052 100644 --- a/lib/widgets/quotedmessage.dart +++ b/lib/widgets/quotedmessage.dart @@ -114,7 +114,6 @@ class QuotedMessageBubbleState extends State { )) ])))); } catch (e) { - print(e); return MalformedBubble(); } } else {