diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index a4b4f45d7..88a4d3d2d 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -325,6 +325,7 @@ } } }, + "changedTheChatDescription": "{username} changed the chat description", "changedTheChatDescriptionTo": "{username} changed the chat description to: '{description}'", "@changedTheChatDescriptionTo": { "type": "String", @@ -337,6 +338,7 @@ } } }, + "changedTheChatName": "{username} changed the chat name", "changedTheChatNameTo": "{username} changed the chat name to: '{chatname}'", "@changedTheChatNameTo": { "type": "String", diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 49d09887e..d203e5705 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -346,6 +346,17 @@ class ChatController extends State if (mostRecentEvent != null) { setReadMarker(eventId: mostRecentEvent.eventId); + WidgetsBinding.instance.addPostFrameCallback((_) { + final index = timeline.events.filterByVisibleInGui().indexOf( + mostRecentEvent, + ); + if (index >= 0) { + scrollController.scrollToIndex( + index, + preferPosition: AutoScrollPosition.begin, + ); + } + }); } } @@ -680,7 +691,7 @@ class ChatController extends State void onInsert(int i) { // setState will be called by updateView() anyway - if (i <= 5) animateInEventIndex = i; + if (timeline?.allowNewEvent == true) animateInEventIndex = i; } // #Pangea diff --git a/lib/pages/chat/chat_event_list.dart b/lib/pages/chat/chat_event_list.dart index 708e73f0a..92576db1a 100644 --- a/lib/pages/chat/chat_event_list.dart +++ b/lib/pages/chat/chat_event_list.dart @@ -109,21 +109,19 @@ class ChatEventList extends StatelessWidget { } return Builder( builder: (context) { - if (timeline.canRequestHistory) { - final visibleIndex = timeline.events.lastIndexWhere( - (event) => - !event.isCollapsedState && event.isVisibleInGui, + final visibleIndex = timeline.events.lastIndexWhere( + (event) => + !event.isCollapsedState && event.isVisibleInGui, + ); + if (visibleIndex > timeline.events.length - 50) { + // #Pangea + // WidgetsBinding.instance.addPostFrameCallback( + // controller.requestHistory, + // ); + WidgetsBinding.instance.addPostFrameCallback( + (_) => controller.requestHistory(), ); - if (visibleIndex > timeline.events.length - 50) { - // #Pangea - // WidgetsBinding.instance.addPostFrameCallback( - // controller.requestHistory, - // ); - WidgetsBinding.instance.addPostFrameCallback( - (_) => controller.requestHistory(), - ); - // Pangea# - } + // Pangea# } return Center( child: TextButton.icon( diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 46e565426..56bef9695 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -10,13 +10,13 @@ import 'package:fluffychat/config/themes.dart'; import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/pages/chat/chat.dart'; import 'package:fluffychat/pages/chat/events/pangea_message_reactions.dart'; -import 'package:fluffychat/pages/chat/events/room_creation_state_event.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_room_extension.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_session_chat/activity_roles_event_widget.dart'; import 'package:fluffychat/pangea/activity_sessions/activity_summary_widget.dart'; import 'package:fluffychat/pangea/bot/utils/bot_name.dart'; import 'package:fluffychat/pangea/bot/widgets/bot_settings_language_icon.dart'; import 'package:fluffychat/pangea/chat/extensions/custom_room_display_extension.dart'; +import 'package:fluffychat/pangea/chat/widgets/room_creation_state_event.dart'; import 'package:fluffychat/pangea/common/widgets/pressable_button.dart'; import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart'; import 'package:fluffychat/pangea/events/event_wrappers/pangea_message_event.dart'; @@ -138,16 +138,13 @@ class Message extends StatelessWidget { if (event.type.startsWith('m.call.')) { return const SizedBox.shrink(); } + // #Pangea if (event.type == EventTypes.RoomCreate) { - // #Pangea - // return RoomCreationStateEvent(event: event); return event.room.isActivitySession ? const SizedBox() : RoomCreationStateEvent(event: event); - // Pangea# } - // #Pangea if (event.type == PangeaEventTypes.activityPlan && event.room.activityPlan != null) { return ValueListenableBuilder( diff --git a/lib/pages/chat/events/state_message.dart b/lib/pages/chat/events/state_message.dart index 63c9f4be0..500767e63 100644 --- a/lib/pages/chat/events/state_message.dart +++ b/lib/pages/chat/events/state_message.dart @@ -64,10 +64,7 @@ class StateMessage extends StatelessWidget { // Pangea# ), if (onExpand != null) ...[ - const TextSpan( - text: ' + ', - style: TextStyle(fontWeight: FontWeight.bold), - ), + const TextSpan(text: '\n'), TextSpan( style: TextStyle( color: theme.colorScheme.primary, @@ -82,7 +79,7 @@ class StateMessage extends StatelessWidget { ), textAlign: TextAlign.center, style: TextStyle( - fontSize: 12 * AppSettings.fontSizeFactor.value, + fontSize: 11 * AppSettings.fontSizeFactor.value, decoration: event.redacted ? TextDecoration.lineThrough : null, diff --git a/lib/pages/chat_list/chat_list_item.dart b/lib/pages/chat_list/chat_list_item.dart index 351f4dc60..5a6ba101b 100644 --- a/lib/pages/chat_list/chat_list_item.dart +++ b/lib/pages/chat_list/chat_list_item.dart @@ -85,8 +85,8 @@ class ChatListItem extends StatelessWidget { clipBehavior: Clip.hardEdge, color: backgroundColor, child: FutureBuilder( - future: room.loadHeroUsers(), - builder: (context, snapshot) => HoverBuilder( + future: room.name.isEmpty ? room.loadHeroUsers() : null, + builder: (context, _) => HoverBuilder( builder: (context, listTileHovered) => ListTile( visualDensity: const VisualDensity(vertical: -0.5), contentPadding: const EdgeInsets.symmetric(horizontal: 8), diff --git a/lib/pages/chat/events/room_creation_state_event.dart b/lib/pangea/chat/widgets/room_creation_state_event.dart similarity index 92% rename from lib/pages/chat/events/room_creation_state_event.dart rename to lib/pangea/chat/widgets/room_creation_state_event.dart index ddf97199a..f964c5b54 100644 --- a/lib/pages/chat/events/room_creation_state_event.dart +++ b/lib/pangea/chat/widgets/room_creation_state_event.dart @@ -12,15 +12,10 @@ import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_locals.dart'; import 'package:fluffychat/widgets/avatar.dart'; -// #Pangea -// class RoomCreationStateEvent extends StatelessWidget { class RoomCreationStateEvent extends StatefulWidget { - // Pangea# final Event event; - const RoomCreationStateEvent({required this.event, super.key}); - // #Pangea @override State createState() => RoomCreationStateEventState(); } @@ -51,7 +46,6 @@ class RoomCreationStateEventState extends State { _memberSubscription?.cancel(); super.dispose(); } - // Pangea# @override Widget build(BuildContext context) { @@ -61,13 +55,9 @@ class RoomCreationStateEventState extends State { final roomName = event.room.getLocalizedDisplayname(matrixLocals); return Padding( padding: const EdgeInsets.only(bottom: 32.0), - // #Pangea - // child: Center( - // child: ConstrainedBox( child: Column( children: [ ConstrainedBox( - // Pangea# constraints: const BoxConstraints(maxWidth: 256), child: Material( color: theme.colorScheme.surfaceContainer, @@ -81,10 +71,8 @@ class RoomCreationStateEventState extends State { mxContent: event.room.avatar, name: roomName, size: Avatar.defaultSize * 2, - // #Pangea userId: event.room.directChatMatrixID, useRive: true, - // Pangea# ), Text( roomName, @@ -102,7 +90,6 @@ class RoomCreationStateEventState extends State { ), ), ), - // #Pangea const SizedBox(height: 16.0), const InstructionsInlineTooltip( instructionsEnum: InstructionsEnum.clickMessage, @@ -115,7 +102,6 @@ class RoomCreationStateEventState extends State { padding: EdgeInsets.only(left: 16.0, right: 16.0, top: 16.0), animate: false, ), - // Pangea# ], ), ); diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index d910e1792..118d46f42 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -37,13 +37,13 @@ class MatrixLocals extends MatrixLocalizations { } @override - String changedTheChatDescriptionTo(String senderName, String content) { - return l10n.changedTheChatDescriptionTo(senderName, content); + String changedTheChatDescriptionTo(String senderName, _) { + return l10n.changedTheChatDescription(senderName); } @override - String changedTheChatNameTo(String senderName, String content) { - return l10n.changedTheChatNameTo(senderName, content); + String changedTheChatNameTo(String senderName, _) { + return l10n.changedTheChatName(senderName); } @override