fluffychat merge

This commit is contained in:
ggurdin 2026-02-05 16:27:16 -05:00
commit bdbbfc1b91
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
8 changed files with 36 additions and 45 deletions

View file

@ -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",

View file

@ -346,6 +346,17 @@ class ChatController extends State<ChatPageWithRoom>
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<ChatPageWithRoom>
void onInsert(int i) {
// setState will be called by updateView() anyway
if (i <= 5) animateInEventIndex = i;
if (timeline?.allowNewEvent == true) animateInEventIndex = i;
}
// #Pangea

View file

@ -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(

View file

@ -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(

View file

@ -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,

View file

@ -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),

View file

@ -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<RoomCreationStateEvent> createState() => RoomCreationStateEventState();
}
@ -51,7 +46,6 @@ class RoomCreationStateEventState extends State<RoomCreationStateEvent> {
_memberSubscription?.cancel();
super.dispose();
}
// Pangea#
@override
Widget build(BuildContext context) {
@ -61,13 +55,9 @@ class RoomCreationStateEventState extends State<RoomCreationStateEvent> {
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<RoomCreationStateEvent> {
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<RoomCreationStateEvent> {
),
),
),
// #Pangea
const SizedBox(height: 16.0),
const InstructionsInlineTooltip(
instructionsEnum: InstructionsEnum.clickMessage,
@ -115,7 +102,6 @@ class RoomCreationStateEventState extends State<RoomCreationStateEvent> {
padding: EdgeInsets.only(left: 16.0, right: 16.0, top: 16.0),
animate: false,
),
// Pangea#
],
),
);

View file

@ -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