chore: don't show read assistance tooltip if buttons aren't shown (#2251)

This commit is contained in:
ggurdin 2025-03-28 10:17:07 -04:00 committed by GitHub
parent 5dc64c64c7
commit ffc9d2f08a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 28 additions and 50 deletions

View file

@ -1,7 +1,5 @@
import 'package:flutter/material.dart';
import 'package:matrix/matrix_api_lite/model/message_types.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat/chat.dart';
@ -12,19 +10,15 @@ import 'package:fluffychat/pangea/toolbar/widgets/toolbar_button_column.dart';
class OverlayFooter extends StatelessWidget {
final ChatController controller;
final MessageOverlayController overlayController;
final bool showToolbarButtons;
const OverlayFooter({
required this.controller,
required this.overlayController,
required this.showToolbarButtons,
super.key,
});
bool get showToolbarButtons =>
overlayController.pangeaMessageEvent != null &&
overlayController.pangeaMessageEvent!.shouldShowToolbar &&
overlayController.pangeaMessageEvent!.event.messageType ==
MessageTypes.Text;
@override
Widget build(BuildContext context) {
//@ggurdin can we change this mobile padding to 0? seems a some extrea space on mobile
@ -42,10 +36,8 @@ class OverlayFooter extends StatelessWidget {
alignment: Alignment.center,
child: Column(
children: [
ToolbarButtonRow(
overlayController: overlayController,
shouldShowToolbarButtons: showToolbarButtons,
),
if (showToolbarButtons)
ToolbarButtonRow(overlayController: overlayController),
Material(
clipBehavior: Clip.hardEdge,
color: Theme.of(context).colorScheme.surfaceContainerHighest,

View file

@ -103,7 +103,7 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
Future.wait([
_centeredMessageCompleter.future,
_tooltipCompleter.future,
if (showToolbarButtons) _tooltipCompleter.future,
]).then((_) => _startAnimation());
}
@ -386,7 +386,8 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
bool get showToolbarButtons =>
widget.pangeaMessageEvent != null &&
widget.pangeaMessageEvent!.shouldShowToolbar &&
widget.pangeaMessageEvent!.event.messageType == MessageTypes.Text;
widget.pangeaMessageEvent!.event.messageType == MessageTypes.Text &&
widget.pangeaMessageEvent!.messageDisplayLangIsL2;
bool get _hasReactions {
final reactionsEvents = widget.event.aggregatedEvents(
@ -444,7 +445,6 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
pangeaMessageEvent: widget.pangeaMessageEvent,
nextEvent: widget.nextEvent,
prevEvent: widget.prevEvent,
showToolbarButtons: showToolbarButtons,
hasReactions: _hasReactions,
onChangeMessageSize: _setCenteredMessageSize,
isTransitionAnimation: false,
@ -471,6 +471,7 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
child: OverlayFooter(
controller: widget.chatController,
overlayController: widget.overlayController,
showToolbarButtons: showToolbarButtons,
),
),
SizedBox(height: _mediaQuery?.padding.bottom ?? 0),
@ -510,7 +511,6 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
pangeaMessageEvent: widget.pangeaMessageEvent,
nextEvent: widget.nextEvent,
prevEvent: widget.prevEvent,
showToolbarButtons: showToolbarButtons,
hasReactions: _hasReactions,
sizeAnimation: _messageSizeAnimation,
isTransitionAnimation: true,
@ -523,30 +523,31 @@ class MessageSelectionPositionerState extends State<MessageSelectionPositioner>
);
},
),
Positioned(
top: 0,
child: IgnorePointer(
child: MeasureRenderBox(
onChange: _setTooltipSize,
child: Opacity(
opacity: 0.0,
child: Container(
constraints: const BoxConstraints(
minWidth: 200.0,
maxWidth: 400.0,
),
child: InstructionsInlineTooltip(
instructionsEnum: widget
.overlayController.toolbarMode.instructionsEnum ??
InstructionsEnum.readingAssistanceOverview,
bold: true,
if (showToolbarButtons)
Positioned(
top: 0,
child: IgnorePointer(
child: MeasureRenderBox(
onChange: _setTooltipSize,
child: Opacity(
opacity: 0.0,
child: Container(
constraints: BoxConstraints(
minWidth: 200.0,
maxWidth: _toolbarMaxWidth,
),
child: InstructionsInlineTooltip(
instructionsEnum: widget.overlayController.toolbarMode
.instructionsEnum ??
InstructionsEnum.readingAssistanceOverview,
bold: true,
),
),
),
),
),
),
),
if (_centeredMessageTopOffset != null && _finishedAnimation)
if (_centeredMessageTopOffset != null && _tooltipSize != null)
Positioned(
top: max(
((_headerHeight + _centeredMessageTopOffset!) / 2) -

View file

@ -26,7 +26,6 @@ class OverlayCenterContent extends StatelessWidget {
final double maxWidth;
final double maxHeight;
final bool showToolbarButtons;
final bool hasReactions;
final bool isTransitionAnimation;
@ -43,7 +42,6 @@ class OverlayCenterContent extends StatelessWidget {
required this.pangeaMessageEvent,
required this.nextEvent,
required this.prevEvent,
required this.showToolbarButtons,
required this.hasReactions,
this.onChangeMessageSize,
this.sizeAnimation,

View file

@ -1,7 +1,5 @@
import 'package:flutter/material.dart';
import 'package:matrix/matrix.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/pangea/toolbar/enums/message_mode_enum.dart';
import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart';
@ -9,11 +7,9 @@ import 'package:fluffychat/pangea/toolbar/widgets/toolbar_button.dart';
class ToolbarButtonRow extends StatelessWidget {
final MessageOverlayController overlayController;
final bool shouldShowToolbarButtons;
const ToolbarButtonRow({
required this.overlayController,
required this.shouldShowToolbarButtons,
super.key,
});
@ -24,15 +20,6 @@ class ToolbarButtonRow extends StatelessWidget {
@override
Widget build(BuildContext context) {
if (overlayController.event.messageType == MessageTypes.Audio ||
!shouldShowToolbarButtons ||
!(overlayController.pangeaMessageEvent?.messageDisplayLangIsL2 ??
false)) {
return const SizedBox(
height: AppConfig.toolbarButtonsHeight,
);
}
return SizedBox(
height: AppConfig.toolbarButtonsHeight,
child: Row(