moved some logic around
This commit is contained in:
parent
445ed0338d
commit
79926a9ade
3 changed files with 30 additions and 15 deletions
|
|
@ -2414,6 +2414,8 @@ class ChatController extends State<ChatPageWithRoom>
|
|||
);
|
||||
|
||||
if (reason == null) return;
|
||||
|
||||
clearSelectedEvents();
|
||||
await showFutureLoadingDialog(
|
||||
context: context,
|
||||
future: () => room.sendEvent(
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue