chore: move regeneration button down to toolbar

This commit is contained in:
Ava Shilling 2026-01-20 12:04:30 -05:00
parent 567b0450ba
commit 445ed0338d
5 changed files with 18 additions and 81 deletions

View file

@ -16,7 +16,6 @@ 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/request_regeneration_button.dart';
import 'package:fluffychat/pangea/common/widgets/pressable_button.dart';
import 'package:fluffychat/pangea/common/widgets/shimmer_background.dart';
import 'package:fluffychat/pangea/events/constants/pangea_event_types.dart';
@ -822,20 +821,7 @@ class Message extends StatelessWidget {
),
],
),
)
// #Pangea
else if (canRefresh)
RequestRegenerationButton(
textColor:
textColor,
onPressed: () =>
controller
.requestRegeneration(
event
.eventId,
),
),
// Pangea#
],
),
),

View file

@ -1,59 +0,0 @@
import 'package:flutter/material.dart';
import 'package:fluffychat/l10n/l10n.dart';
class RequestRegenerationButton extends StatelessWidget {
final Color textColor;
final VoidCallback onPressed;
const RequestRegenerationButton({
super.key,
required this.textColor,
required this.onPressed,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.only(
bottom: 8.0,
left: 16.0,
right: 16.0,
),
child: TextButton(
style: TextButton.styleFrom(
padding: EdgeInsets.zero,
minimumSize: const Size(
0,
0,
),
),
onPressed: onPressed,
child: Row(
mainAxisSize: MainAxisSize.min,
spacing: 4.0,
children: [
Icon(
Icons.refresh,
color: textColor.withAlpha(
164,
),
size: 14,
),
Text(
L10n.of(
context,
).requestRegeneration,
style: TextStyle(
color: textColor.withAlpha(
164,
),
fontSize: 11,
),
),
],
),
),
);
}
}

View file

@ -10,7 +10,6 @@ import 'package:fluffychat/l10n/l10n.dart';
import 'package:fluffychat/pages/chat/chat.dart';
import 'package:fluffychat/pages/chat/events/message_content.dart';
import 'package:fluffychat/pages/chat/events/reply_content.dart';
import 'package:fluffychat/pangea/chat/widgets/request_regeneration_button.dart';
import 'package:fluffychat/pangea/common/utils/async_state.dart';
import 'package:fluffychat/pangea/common/widgets/error_indicator.dart';
import 'package:fluffychat/pangea/events/extensions/pangea_event_extension.dart';
@ -258,11 +257,6 @@ class OverlayMessage extends StatelessWidget {
),
],
),
)
else if (canRefresh)
RequestRegenerationButton(
textColor: textColor,
onPressed: () => controller.requestRegeneration(event.eventId),
),
],
),

View file

@ -29,7 +29,8 @@ enum SelectMode {
translate(Icons.translate),
practice(Symbols.fitness_center),
emoji(Icons.add_reaction_outlined),
speechTranslation(Icons.translate);
speechTranslation(Icons.translate),
requestRegenerate(Icons.replay);
final IconData icon;
const SelectMode(this.icon);
@ -46,6 +47,8 @@ enum SelectMode {
return l10n.practice;
case SelectMode.emoji:
return l10n.emojiView;
case SelectMode.requestRegenerate:
return l10n.requestRegeneration;
}
}
}
@ -214,6 +217,12 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
if (updatedMode == SelectMode.speechTranslation) {
await controller.fetchSpeechTranslation();
}
if (updatedMode == SelectMode.requestRegenerate) {
widget.controller.requestRegeneration(
messageEvent.eventId,
);
}
}
Future<void> modeDisabled() async {
@ -348,7 +357,13 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
Widget build(BuildContext context) {
final theme = Theme.of(context);
final modes = controller.readingAssistanceModes;
final allModes = controller.allModes;
final allModes = controller.allModes
.where(
(mode) =>
mode != SelectMode.requestRegenerate ||
messageEvent.eventId == widget.controller.refreshEventID,
)
.toList();
return Material(
type: MaterialType.transparency,
child: SizedBox(

View file

@ -113,6 +113,7 @@ class SelectModeController with LemmaEmojiSetter {
SelectMode.translate,
SelectMode.practice,
SelectMode.emoji,
SelectMode.requestRegenerate,
];
static List<SelectMode> get _audioModes => [