improve response viewer
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run

This commit is contained in:
otsmr 2026-05-21 13:33:13 +02:00
parent cd5409d021
commit 1ad304ec2e
5 changed files with 54 additions and 16 deletions

View file

@ -3457,6 +3457,18 @@ abstract class AppLocalizations {
/// In en, this message translates to: /// In en, this message translates to:
/// **'Maximum anti-phishing defense. Recommended for *journalists & public figures*.'** /// **'Maximum anti-phishing defense. Recommended for *journalists & public figures*.'**
String get onboardingProfileSelectionStrictDesc; String get onboardingProfileSelectionStrictDesc;
/// No description provided for @replyFlameRestored.
///
/// In en, this message translates to:
/// **'Flames restored'**
String get replyFlameRestored;
/// No description provided for @replyAskAFriend.
///
/// In en, this message translates to:
/// **'Ask a friend'**
String get replyAskAFriend;
} }
class _AppLocalizationsDelegate class _AppLocalizationsDelegate

View file

@ -1967,4 +1967,10 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get onboardingProfileSelectionStrictDesc => String get onboardingProfileSelectionStrictDesc =>
'Maximaler Schutz vor Phishing. Empfohlen für *Journalisten & Personen des öffentlichen Lebens*.'; 'Maximaler Schutz vor Phishing. Empfohlen für *Journalisten & Personen des öffentlichen Lebens*.';
@override
String get replyFlameRestored => 'Flammen wiederhergestellt';
@override
String get replyAskAFriend => 'Einen Freund fragen';
} }

View file

@ -1952,4 +1952,10 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get onboardingProfileSelectionStrictDesc => String get onboardingProfileSelectionStrictDesc =>
'Maximum anti-phishing defense. Recommended for *journalists & public figures*.'; 'Maximum anti-phishing defense. Recommended for *journalists & public figures*.';
@override
String get replyFlameRestored => 'Flames restored';
@override
String get replyAskAFriend => 'Ask a friend';
} }

@ -1 +1 @@
Subproject commit 18aa5e1afc76a20ded04e9d2c4321fec1c91183d Subproject commit 5f60fcc10450b40f75b3c170d27caa4398d84e4a

View file

@ -4,6 +4,7 @@ import 'package:twonly/src/database/daos/contacts.dao.dart';
import 'package:twonly/src/database/tables/mediafiles.table.dart'; import 'package:twonly/src/database/tables/mediafiles.table.dart';
import 'package:twonly/src/database/tables/messages.table.dart'; import 'package:twonly/src/database/tables/messages.table.dart';
import 'package:twonly/src/database/twonly.db.dart'; import 'package:twonly/src/database/twonly.db.dart';
import 'package:twonly/src/model/protobuf/client/generated/data.pb.dart';
import 'package:twonly/src/services/mediafiles/mediafile.service.dart'; import 'package:twonly/src/services/mediafiles/mediafile.service.dart';
import 'package:twonly/src/utils/misc.dart'; import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/visual/views/chats/chat_messages.view.dart'; import 'package:twonly/src/visual/views/chats/chat_messages.view.dart';
@ -39,10 +40,8 @@ class _ResponseContainerState extends State<ResponseContainer> {
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
final messageBox = final messageBox = _message.currentContext?.findRenderObject() as RenderBox?;
_message.currentContext?.findRenderObject() as RenderBox?; final previewBox = _preview.currentContext?.findRenderObject() as RenderBox?;
final previewBox =
_preview.currentContext?.findRenderObject() as RenderBox?;
if (messageBox == null || previewBox == null) { if (messageBox == null || previewBox == null) {
return; return;
} }
@ -65,9 +64,7 @@ class _ResponseContainerState extends State<ResponseContainer> {
return widget.child!; return widget.child!;
} }
return GestureDetector( return GestureDetector(
onTap: widget.scrollToMessage == null onTap: widget.scrollToMessage == null ? null : () => widget.scrollToMessage!(widget.msg.quotesMessageId!),
? null
: () => widget.scrollToMessage!(widget.msg.quotesMessageId!),
child: Container( child: Container(
constraints: BoxConstraints( constraints: BoxConstraints(
maxWidth: MediaQuery.of(context).size.width * 0.8, maxWidth: MediaQuery.of(context).size.width * 0.8,
@ -143,16 +140,12 @@ class _ResponsePreviewState extends State<ResponsePreview> {
} }
Future<void> initAsync() async { Future<void> initAsync() async {
_message ??= await twonlyDB.messagesDao _message ??= await twonlyDB.messagesDao.getMessageById(widget.messageId!).getSingleOrNull();
.getMessageById(widget.messageId!)
.getSingleOrNull();
if (_message?.mediaId != null) { if (_message?.mediaId != null) {
_mediaService = await MediaFileService.fromMediaId(_message!.mediaId!); _mediaService = await MediaFileService.fromMediaId(_message!.mediaId!);
} }
if (_message?.senderId != null) { if (_message?.senderId != null) {
final contact = await twonlyDB.contactsDao final contact = await twonlyDB.contactsDao.getContactByUserId(_message!.senderId!).getSingleOrNull();
.getContactByUserId(_message!.senderId!)
.getSingleOrNull();
if (contact != null) { if (contact != null) {
_username = getContactDisplayName(contact); _username = getContactDisplayName(contact);
} }
@ -186,6 +179,28 @@ class _ResponsePreviewState extends State<ResponsePreview> {
subtitle = 'Audio'; subtitle = 'Audio';
} }
} }
if (_message!.type == MessageType.contacts.name) {
subtitle = context.lang.contacts;
}
if (_message!.type == MessageType.restoreFlameCounter.name) {
if (_message!.additionalMessageData != null) {
try {
final data = AdditionalMessageData.fromBuffer(
_message!.additionalMessageData!,
);
subtitle = context.lang.chatEntryFlameRestored(
data.restoredFlameCounter.toInt(),
);
} catch (e) {
subtitle = context.lang.replyFlameRestored;
}
} else {
subtitle = context.lang.replyFlameRestored;
}
}
if (_message!.type == MessageType.askAboutUser.name) {
subtitle = context.lang.replyAskAFriend;
}
if (_message!.senderId == null) { if (_message!.senderId == null) {
_username = context.lang.you; _username = context.lang.you;
@ -248,8 +263,7 @@ class _ResponsePreviewState extends State<ResponsePreview> {
], ],
), ),
), ),
if (_mediaService != null && if (_mediaService != null && _mediaService!.mediaFile.type != MediaType.audio)
_mediaService!.mediaFile.type != MediaType.audio)
SizedBox( SizedBox(
height: widget.showBorder ? 100 : 210, height: widget.showBorder ? 100 : 210,
child: Image.file( child: Image.file(