don't play token text if null message audio is playing

pull/1428/head
ggurdin 1 year ago
parent 7a5b687ed7
commit 9e3111f97c
No known key found for this signature in database
GPG Key ID: A01CB41737CBB478

@ -21,6 +21,7 @@ class AudioPlayerWidget extends StatefulWidget {
final Event? event; final Event? event;
final PangeaAudioFile? matrixFile; final PangeaAudioFile? matrixFile;
final bool autoplay; final bool autoplay;
final Function(bool)? setIsPlayingAudio;
// Pangea# // Pangea#
static String? currentId; static String? currentId;
@ -41,6 +42,7 @@ class AudioPlayerWidget extends StatefulWidget {
this.autoplay = false, this.autoplay = false,
this.sectionStartMS, this.sectionStartMS,
this.sectionEndMS, this.sectionEndMS,
this.setIsPlayingAudio,
// Pangea# // Pangea#
super.key, super.key,
}); });
@ -204,8 +206,13 @@ class AudioPlayerState extends State<AudioPlayerWidget> {
if (max == null || max == Duration.zero) return; if (max == null || max == Duration.zero) return;
setState(() => maxPosition = max.inMilliseconds.toDouble()); setState(() => maxPosition = max.inMilliseconds.toDouble());
}); });
onPlayerStateChanged ??= onPlayerStateChanged ??= audioPlayer.playingStream.listen(
audioPlayer.playingStream.listen((_) => setState(() {})); (isPlaying) => setState(() {
// #Pangea
widget.setIsPlayingAudio?.call(isPlaying);
// Pangea#
}),
);
final audioFile = this.audioFile; final audioFile = this.audioFile;
if (audioFile != null) { if (audioFile != null) {
audioPlayer.setFilePath(audioFile.path); audioPlayer.setFilePath(audioFile.path);

@ -22,12 +22,14 @@ class MessageAudioCard extends StatefulWidget {
final MessageOverlayController overlayController; final MessageOverlayController overlayController;
final PangeaTokenText? selection; final PangeaTokenText? selection;
final TtsController tts; final TtsController tts;
final Function(bool) setIsPlayingAudio;
const MessageAudioCard({ const MessageAudioCard({
super.key, super.key,
required this.messageEvent, required this.messageEvent,
required this.overlayController, required this.overlayController,
required this.tts, required this.tts,
required this.setIsPlayingAudio,
this.selection, this.selection,
}); });
@ -56,7 +58,7 @@ class MessageAudioCardState extends State<MessageAudioCard> {
@override @override
void didUpdateWidget(covariant oldWidget) { void didUpdateWidget(covariant oldWidget) {
if (oldWidget.selection != widget.selection) { if (oldWidget.selection != widget.selection && widget.selection != null) {
debugPrint('selection changed'); debugPrint('selection changed');
setSectionStartAndEndFromSelection(); setSectionStartAndEndFromSelection();
playSelectionAudio(); playSelectionAudio();
@ -65,6 +67,7 @@ class MessageAudioCardState extends State<MessageAudioCard> {
} }
Future<void> playSelectionAudio() async { Future<void> playSelectionAudio() async {
if (widget.selection == null) return;
final PangeaTokenText selection = widget.selection!; final PangeaTokenText selection = widget.selection!;
final tokenText = selection.content; final tokenText = selection.content;
@ -203,6 +206,7 @@ class MessageAudioCardState extends State<MessageAudioCard> {
sectionEndMS: sectionEndMS, sectionEndMS: sectionEndMS,
color: color:
Theme.of(context).colorScheme.onPrimaryContainer, Theme.of(context).colorScheme.onPrimaryContainer,
setIsPlayingAudio: widget.setIsPlayingAudio,
), ),
widget.tts.missingVoiceButton, widget.tts.missingVoiceButton,
], ],

@ -66,6 +66,7 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
PangeaMessageEvent get pangeaMessageEvent => widget._pangeaMessageEvent; PangeaMessageEvent get pangeaMessageEvent => widget._pangeaMessageEvent;
final TtsController tts = TtsController(); final TtsController tts = TtsController();
bool isPlayingAudio = false;
@override @override
void initState() { void initState() {
@ -200,9 +201,10 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
PangeaToken token, PangeaToken token,
) { ) {
if ([ if ([
MessageMode.practiceActivity, MessageMode.practiceActivity,
// MessageMode.textToSpeech // MessageMode.textToSpeech
].contains(toolbarMode)) { ].contains(toolbarMode) ||
isPlayingAudio) {
return; return;
} }
@ -273,6 +275,13 @@ class MessageOverlayController extends State<MessageSelectionOverlay>
double get reactionsHeight => hasReactions ? 28 : 0; double get reactionsHeight => hasReactions ? 28 : 0;
double get belowMessageHeight => toolbarButtonsHeight + reactionsHeight; double get belowMessageHeight => toolbarButtonsHeight + reactionsHeight;
void setIsPlayingAudio(bool isPlaying) {
if (mounted) {
setState(() => isPlayingAudio = isPlaying);
debugPrint("IS PLAYING AUDIO: $isPlaying");
}
}
@override @override
void didChangeDependencies() { void didChangeDependencies() {
super.didChangeDependencies(); super.didChangeDependencies();

@ -54,6 +54,7 @@ class MessageToolbar extends StatelessWidget {
overlayController: overLayController, overlayController: overLayController,
selection: overLayController.selectedSpan, selection: overLayController.selectedSpan,
tts: tts, tts: tts,
setIsPlayingAudio: overLayController.setIsPlayingAudio,
); );
case MessageMode.speechToText: case MessageMode.speechToText:
return MessageSpeechToTextCard( return MessageSpeechToTextCard(

@ -6,7 +6,7 @@ description: Learn a language while texting your friends.
# Pangea# # Pangea#
publish_to: none publish_to: none
# On version bump also increase the build number for F-Droid # On version bump also increase the build number for F-Droid
version: 1.22.5+3555 version: 1.22.6+3556
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: ">=3.0.0 <4.0.0"

Loading…
Cancel
Save