moved some logic around

This commit is contained in:
ggurdin 2026-01-20 14:51:44 -05:00
parent 445ed0338d
commit 79926a9ade
No known key found for this signature in database
GPG key ID: A01CB41737CBB478
3 changed files with 30 additions and 15 deletions

View file

@ -2414,6 +2414,8 @@ class ChatController extends State<ChatPageWithRoom>
);
if (reason == null) return;
clearSelectedEvents();
await showFutureLoadingDialog(
context: context,
future: () => room.sendEvent(

View file

@ -183,6 +183,9 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
SelectModeController get controller =>
widget.overlayController.selectModeController;
bool get _canRefresh =>
messageEvent.eventId == widget.controller.refreshEventID;
Future<void> updateMode(SelectMode? mode) async {
if (mode == null) {
matrix?.audioPlayer?.stop();
@ -219,9 +222,13 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
}
if (updatedMode == SelectMode.requestRegenerate) {
widget.controller.requestRegeneration(
await widget.controller.requestRegeneration(
messageEvent.eventId,
);
if (mounted) {
controller.setSelectMode(null);
}
}
}
@ -357,13 +364,7 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
Widget build(BuildContext context) {
final theme = Theme.of(context);
final modes = controller.readingAssistanceModes;
final allModes = controller.allModes
.where(
(mode) =>
mode != SelectMode.requestRegenerate ||
messageEvent.eventId == widget.controller.refreshEventID,
)
.toList();
final allModes = controller.allModes(enableRefresh: _canRefresh);
return Material(
type: MaterialType.transparency,
child: SizedBox(
@ -373,7 +374,7 @@ class SelectModeButtonsState extends State<SelectModeButtons> {
children: List.generate(allModes.length + 1, (index) {
if (index < allModes.length) {
final mode = allModes[index];
final enabled = modes.contains(mode);
final enabled = modes(enableRefresh: _canRefresh).contains(mode);
return Container(
width: 45.0,
alignment: Alignment.center,

View file

@ -113,7 +113,6 @@ class SelectModeController with LemmaEmojiSetter {
SelectMode.translate,
SelectMode.practice,
SelectMode.emoji,
SelectMode.requestRegenerate,
];
static List<SelectMode> get _audioModes => [
@ -131,7 +130,7 @@ class SelectModeController with LemmaEmojiSetter {
(PangeaAudioFile, File?)? get audioFile => _audioLoader.value;
List<SelectMode> get allModes {
List<SelectMode> allModes({bool enableRefresh = false}) {
final validTypes = {MessageTypes.Text, MessageTypes.Audio};
if (!messageEvent.event.status.isSent ||
messageEvent.event.type != EventTypes.Message ||
@ -139,12 +138,18 @@ class SelectModeController with LemmaEmojiSetter {
return [];
}
return messageEvent.event.messageType == MessageTypes.Text
final types = messageEvent.event.messageType == MessageTypes.Text
? _textModes
: _audioModes;
if (enableRefresh) {
return [...types, SelectMode.requestRegenerate];
}
return types;
}
List<SelectMode> get readingAssistanceModes {
List<SelectMode> readingAssistanceModes({bool enableRefresh = false}) {
final validTypes = {MessageTypes.Text, MessageTypes.Audio};
if (!messageEvent.event.status.isSent ||
messageEvent.event.type != EventTypes.Message ||
@ -152,6 +157,7 @@ class SelectModeController with LemmaEmojiSetter {
return [];
}
List<SelectMode> modes = [];
if (messageEvent.event.messageType == MessageTypes.Text) {
final lang = messageEvent.messageDisplayLangCode.split("-").first;
@ -161,14 +167,20 @@ class SelectModeController with LemmaEmojiSetter {
final matchesL1 = lang ==
MatrixState.pangeaController.userController.userL1!.langCodeShort;
return matchesL2
modes = matchesL2
? _textModes
: matchesL1
? []
: [SelectMode.translate];
} else {
modes = _audioModes;
}
return _audioModes;
if (enableRefresh) {
modes = [...modes, SelectMode.requestRegenerate];
}
return modes;
}
bool get isLoading => currentModeStateNotifier?.value is AsyncLoading;