diff --git a/lib/pages/chat/event_info_dialog.dart b/lib/pages/chat/event_info_dialog.dart index 8b8f1e703..38acdc84c 100644 --- a/lib/pages/chat/event_info_dialog.dart +++ b/lib/pages/chat/event_info_dialog.dart @@ -1,12 +1,14 @@ import 'dart:convert'; +import 'package:flutter/material.dart'; + +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix/matrix.dart'; + import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/utils/adaptive_bottom_sheet.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/widgets/avatar.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; -import 'package:matrix/matrix.dart'; extension EventInfoDialogExtension on Event { void showInfoDialog(BuildContext context) => showAdaptiveBottomSheet( @@ -47,16 +49,15 @@ class EventInfoDialog extends StatelessWidget { children: [ ListTile( leading: Avatar( - // mxContent: event.senderFromMemoryOrFallback.avatarUrl, - // name: event.senderFromMemoryOrFallback.calcDisplayname(), - name: "?", + mxContent: event.senderFromMemoryOrFallback.avatarUrl, + name: event.senderFromMemoryOrFallback.calcDisplayname(), client: event.room.client, - // presenceUserId: event.senderId, + presenceUserId: event.senderId, ), title: Text(L10n.of(context)!.sender), - // subtitle: Text( - // '${event.senderFromMemoryOrFallback.calcDisplayname()} [${event.senderId}]', - // ), + subtitle: Text( + '${event.senderFromMemoryOrFallback.calcDisplayname()} [${event.senderId}]', + ), ), ListTile( title: Text(L10n.of(context)!.time), diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 5c0a3ae29..3a6b7030c 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -263,10 +263,9 @@ class Message extends StatelessWidget { final user = snapshot.data ?? event.senderFromMemoryOrFallback; return Avatar( - // mxContent: user.avatarUrl, - // name: user.calcDisplayname(), - // presenceUserId: user.stateKey, - name: "?", + mxContent: user.avatarUrl, + name: user.calcDisplayname(), + presenceUserId: user.stateKey, presenceBackgroundColor: avatarPresenceBackgroundColor, onTap: () => onAvatarTab(event), @@ -289,11 +288,10 @@ class Message extends StatelessWidget { : FutureBuilder( future: event.fetchSenderUser(), builder: (context, snapshot) { - // final displayname = snapshot.data - // ?.calcDisplayname() ?? - // event.senderFromMemoryOrFallback - // .calcDisplayname(); - const displayname = "?"; + final displayname = snapshot.data + ?.calcDisplayname() ?? + event.senderFromMemoryOrFallback + .calcDisplayname(); return Text( displayname, style: TextStyle( diff --git a/lib/pages/chat/events/message_content.dart b/lib/pages/chat/events/message_content.dart index 2010e47f2..5468b59e8 100644 --- a/lib/pages/chat/events/message_content.dart +++ b/lib/pages/chat/events/message_content.dart @@ -96,16 +96,12 @@ class MessageContent extends StatelessWidget { ListTile( contentPadding: EdgeInsets.zero, leading: Avatar( - // mxContent: sender.avatarUrl, - // name: sender.calcDisplayname(), - // presenceUserId: sender.stateKey, - name: "?", + mxContent: sender.avatarUrl, + name: sender.calcDisplayname(), + presenceUserId: sender.stateKey, client: event.room.client, ), - title: const Text( - // sender.calcDisplayname(), - "?", - ), + title: Text(sender.calcDisplayname()), subtitle: Text(event.originServerTs.localizedTime(context)), trailing: const Icon(Icons.lock_outlined), ), @@ -269,10 +265,9 @@ class MessageContent extends StatelessWidget { builder: (context, snapshot) { final reason = event.redactedBecause?.content.tryGet('reason'); - // final redactedBy = snapshot.data?.calcDisplayname() ?? - // event.redactedBecause?.senderId.localpart ?? - // L10n.of(context)!.user; - const redactedBy = "?"; + final redactedBy = snapshot.data?.calcDisplayname() ?? + event.redactedBecause?.senderId.localpart ?? + L10n.of(context)!.user; return _ButtonContent( label: reason == null ? L10n.of(context)!.redactedBy(redactedBy) @@ -390,9 +385,8 @@ class MessageContent extends StatelessWidget { builder: (context, snapshot) { return _ButtonContent( label: L10n.of(context)!.userSentUnknownEvent( - // snapshot.data?.calcDisplayname() ?? - // event.senderFromMemoryOrFallback.calcDisplayname(), - "?", + snapshot.data?.calcDisplayname() ?? + event.senderFromMemoryOrFallback.calcDisplayname(), event.type, ), icon: 'ℹ️', diff --git a/lib/pages/chat/events/reply_content.dart b/lib/pages/chat/events/reply_content.dart index a31765d38..b48f16cd9 100644 --- a/lib/pages/chat/events/reply_content.dart +++ b/lib/pages/chat/events/reply_content.dart @@ -59,8 +59,7 @@ class ReplyContent extends StatelessWidget { future: displayEvent.fetchSenderUser(), builder: (context, snapshot) { return Text( - // '${snapshot.data?.calcDisplayname() ?? displayEvent.senderFromMemoryOrFallback.calcDisplayname()}:', - '?:', + '${snapshot.data?.calcDisplayname() ?? displayEvent.senderFromMemoryOrFallback.calcDisplayname()}:', maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( diff --git a/lib/pages/chat/seen_by_row.dart b/lib/pages/chat/seen_by_row.dart index 21fd6794e..af8b82069 100644 --- a/lib/pages/chat/seen_by_row.dart +++ b/lib/pages/chat/seen_by_row.dart @@ -37,10 +37,9 @@ class SeenByRow extends StatelessWidget { ? seenByUsers.sublist(0, maxAvatars) : seenByUsers) .map( - (user) => const Avatar( - // mxContent: user.avatarUrl, - // name: user.calcDisplayname(), - name: "?", + (user) => Avatar( + mxContent: user.avatarUrl, + name: user.calcDisplayname(), size: 16, ), ), diff --git a/lib/pages/chat/typing_indicators.dart b/lib/pages/chat/typing_indicators.dart index e02d59d1e..35fbf5d25 100644 --- a/lib/pages/chat/typing_indicators.dart +++ b/lib/pages/chat/typing_indicators.dart @@ -1,11 +1,12 @@ import 'dart:async'; +import 'package:flutter/material.dart'; + import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/widgets/avatar.dart'; import 'package:fluffychat/widgets/matrix.dart'; -import 'package:flutter/material.dart'; class TypingIndicators extends StatelessWidget { final ChatController controller; @@ -55,11 +56,10 @@ class TypingIndicators extends StatelessWidget { child: Stack( children: [ if (typingUsers.isNotEmpty) - const Avatar( + Avatar( size: avatarSize, - // mxContent: typingUsers.first.avatarUrl, - // name: typingUsers.first.calcDisplayname(), - name: "?", + mxContent: typingUsers.first.avatarUrl, + name: typingUsers.first.calcDisplayname(), ), if (typingUsers.length == 2) Padding( @@ -69,10 +69,9 @@ class TypingIndicators extends StatelessWidget { mxContent: typingUsers.length == 2 ? typingUsers.last.avatarUrl : null, - // name: typingUsers.length == 2 - // ? typingUsers.last.calcDisplayname() - // : '+${typingUsers.length - 1}', - name: "?", + name: typingUsers.length == 2 + ? typingUsers.last.calcDisplayname() + : '+${typingUsers.length - 1}', ), ), ], diff --git a/lib/pages/chat_details/participant_list_item.dart b/lib/pages/chat_details/participant_list_item.dart index 4f63a6238..9b5580692 100644 --- a/lib/pages/chat_details/participant_list_item.dart +++ b/lib/pages/chat_details/participant_list_item.dart @@ -39,10 +39,9 @@ class ParticipantListItem extends StatelessWidget { ), title: Row( children: [ - const Expanded( + Expanded( child: Text( - // user.calcDisplayname(), - "?", + user.calcDisplayname(), overflow: TextOverflow.ellipsis, ), ), @@ -89,9 +88,8 @@ class ParticipantListItem extends StatelessWidget { subtitle: Text(user.id), leading: Avatar( mxContent: user.avatarUrl, - // name: user.calcDisplayname(), - // presenceUserId: user.stateKey, - name: "?", + name: user.calcDisplayname(), + presenceUserId: user.stateKey, ), ), ); diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 54995d31d..76c75e83b 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -1,9 +1,11 @@ import 'package:adaptive_dialog/adaptive_dialog.dart'; import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pangea/extensions/pangea_room_extension/pangea_room_extension.dart'; +import 'package:fluffychat/pangea/utils/get_chat_list_item_subtitle.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/utils/room_status_extension.dart'; import 'package:fluffychat/widgets/hover_builder.dart'; +import 'package:fluffychat/widgets/matrix.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:future_loading_dialog/future_loading_dialog.dart'; @@ -238,52 +240,51 @@ class ChatListItem extends StatelessWidget { softWrap: false, ) // #Pangea - : const SizedBox(), - // FutureBuilder( - // future: room.lastEvent != null - // ? GetChatListItemSubtitle().getSubtitle( - // L10n.of(context)!, - // room.lastEvent, - // MatrixState.pangeaController, - // ) - // : Future.value(L10n.of(context)!.emptyChat), - // builder: (context, snapshot) { - // // Pangea# - // return Text( - // room.membership == Membership.invite - // ? isDirectChat - // ? L10n.of(context)!.invitePrivateChat - // : L10n.of(context)!.inviteGroupChat - // // #Pangea - // : snapshot.data ?? - // // Pangea# - // room.lastEvent - // ?.calcLocalizedBodyFallback( - // MatrixLocals(L10n.of(context)!), - // hideReply: true, - // hideEdit: true, - // plaintextBody: true, - // removeMarkdown: true, - // withSenderNamePrefix: !isDirectChat || - // directChatMatrixId != - // room.lastEvent?.senderId, - // ) ?? - // L10n.of(context)!.emptyChat, - // softWrap: false, - // maxLines: 1, - // overflow: TextOverflow.ellipsis, - // style: TextStyle( - // fontWeight: unread || room.hasNewMessages - // ? FontWeight.bold - // : null, - // color: theme.colorScheme.onSurfaceVariant, - // decoration: room.lastEvent?.redacted == true - // ? TextDecoration.lineThrough - // : null, - // ), - // ); - // }, - // ), + : FutureBuilder( + future: room.lastEvent != null + ? GetChatListItemSubtitle().getSubtitle( + L10n.of(context)!, + room.lastEvent, + MatrixState.pangeaController, + ) + : Future.value(L10n.of(context)!.emptyChat), + builder: (context, snapshot) { + // Pangea# + return Text( + room.membership == Membership.invite + ? isDirectChat + ? L10n.of(context)!.invitePrivateChat + : L10n.of(context)!.inviteGroupChat + // #Pangea + : snapshot.data ?? + // Pangea# + room.lastEvent + ?.calcLocalizedBodyFallback( + MatrixLocals(L10n.of(context)!), + hideReply: true, + hideEdit: true, + plaintextBody: true, + removeMarkdown: true, + withSenderNamePrefix: !isDirectChat || + directChatMatrixId != + room.lastEvent?.senderId, + ) ?? + L10n.of(context)!.emptyChat, + softWrap: false, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontWeight: unread || room.hasNewMessages + ? FontWeight.bold + : null, + color: theme.colorScheme.onSurfaceVariant, + decoration: room.lastEvent?.redacted == true + ? TextDecoration.lineThrough + : null, + ), + ); + }, + ), ), const SizedBox(width: 8), // #Pangea diff --git a/lib/pages/chat_search/chat_search_message_tab.dart b/lib/pages/chat_search/chat_search_message_tab.dart index 68e627282..7542d6ae9 100644 --- a/lib/pages/chat_search/chat_search_message_tab.dart +++ b/lib/pages/chat_search/chat_search_message_tab.dart @@ -1,13 +1,15 @@ -import 'package:fluffychat/utils/date_time_extension.dart'; -import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; -import 'package:fluffychat/utils/url_launcher.dart'; -import 'package:fluffychat/widgets/avatar.dart'; import 'package:flutter/material.dart'; + import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_linkify/flutter_linkify.dart'; import 'package:go_router/go_router.dart'; import 'package:matrix/matrix.dart'; +import 'package:fluffychat/utils/date_time_extension.dart'; +import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/widgets/avatar.dart'; + class ChatSearchMessageTab extends StatelessWidget { final String searchQuery; final Room room; @@ -96,10 +98,9 @@ class ChatSearchMessageTab extends StatelessWidget { } final event = events[i]; final sender = event.senderFromMemoryOrFallback; - // final displayname = sender.calcDisplayname( - // i18n: MatrixLocals(L10n.of(context)!), - // ); - const displayname = "?"; + final displayname = sender.calcDisplayname( + i18n: MatrixLocals(L10n.of(context)!), + ); return _MessageSearchResultListTile( sender: sender, displayname: displayname, diff --git a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart index 7bd189288..ef79c0e31 100644 --- a/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart +++ b/lib/pages/user_bottom_sheet/user_bottom_sheet_view.dart @@ -22,10 +22,9 @@ class UserBottomSheetView extends StatelessWidget { Widget build(BuildContext context) { final user = controller.widget.user; final userId = (user?.id ?? controller.widget.profile?.userId)!; - // final displayname = (user?.calcDisplayname() ?? - // controller.widget.profile?.displayName ?? - // controller.widget.profile?.userId.localpart)!; - const displayname = "?"; + final displayname = (user?.calcDisplayname() ?? + controller.widget.profile?.displayName ?? + controller.widget.profile?.userId.localpart)!; final avatarUrl = user?.avatarUrl ?? controller.widget.profile?.avatarUrl; final client = Matrix.of(controller.widget.outerContext).client; @@ -40,7 +39,7 @@ class UserBottomSheetView extends StatelessWidget { title: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text(displayname), + Text(displayname), PresenceBuilder( userId: userId, client: client, @@ -214,7 +213,7 @@ class UserBottomSheetView extends StatelessWidget { foregroundColor: Theme.of(context).colorScheme.onSurface, ), - label: const Text( + label: Text( displayname, maxLines: 1, overflow: TextOverflow.ellipsis, diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index f959898ed..b4536b6db 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -184,9 +184,9 @@ class MatrixLocals extends MatrixLocalizations { @override String redactedAnEvent(Event redactedEvent) { return l10n.redactedAnEvent( - // redactedEvent.redactedBecause?.senderFromMemoryOrFallback - // .calcDisplayname() ?? - l10n.user, + redactedEvent.redactedBecause?.senderFromMemoryOrFallback + .calcDisplayname() ?? + l10n.user, ); } @@ -198,8 +198,7 @@ class MatrixLocals extends MatrixLocalizations { @override String removedBy(Event redactedEvent) { return l10n.redactedBy( - // redactedEvent.senderFromMemoryOrFallback.calcDisplayname(), - "?", + redactedEvent.senderFromMemoryOrFallback.calcDisplayname(), ); } diff --git a/lib/utils/room_status_extension.dart b/lib/utils/room_status_extension.dart index 277894473..02c70b088 100644 --- a/lib/utils/room_status_extension.dart +++ b/lib/utils/room_status_extension.dart @@ -1,4 +1,5 @@ import 'package:flutter/widgets.dart'; + import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:matrix/matrix.dart'; @@ -19,21 +20,17 @@ extension RoomStatusExtension on Room { } else if (typingUsers.length == 1) { typingText = L10n.of(context)!.isTyping; if (typingUsers.first.id != directChatMatrixID) { - typingText = L10n.of(context)!.userIsTyping( - // typingUsers.first.calcDisplayname(), - "?", - ); + typingText = + L10n.of(context)!.userIsTyping(typingUsers.first.calcDisplayname()); } } else if (typingUsers.length == 2) { typingText = L10n.of(context)!.userAndUserAreTyping( - // typingUsers.first.calcDisplayname(), - // typingUsers[1].calcDisplayname(), - "?", "?", + typingUsers.first.calcDisplayname(), + typingUsers[1].calcDisplayname(), ); } else if (typingUsers.length > 2) { typingText = L10n.of(context)!.userAndOthersAreTyping( - // typingUsers.first.calcDisplayname(), - "?", + typingUsers.first.calcDisplayname(), (typingUsers.length - 1).toString(), ); }