From d0f889d31410a44bde58c090fbf9920236bafdce Mon Sep 17 00:00:00 2001 From: Gabby Gurdin Date: Wed, 21 Feb 2024 16:14:30 -0500 Subject: [PATCH] some fixes --- lib/pages/chat/events/audio_player.dart | 35 +++++++++++-------- lib/pangea/models/pangea_message_event.dart | 12 +++++-- .../widgets/chat/message_audio_card.dart | 18 ++-------- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart index 0dd656461..363be6218 100644 --- a/lib/pages/chat/events/audio_player.dart +++ b/lib/pages/chat/events/audio_player.dart @@ -236,30 +236,37 @@ class AudioPlayerState extends State { late final List waveform; + // #Pangea + Future _downloadMatrixFile() async { + if (kIsWeb) return; + final temp = await getTemporaryDirectory(); + final tempDir = temp; + final file = File('${tempDir.path}/${widget.matrixFile!.name}'); + await file.writeAsBytes(widget.matrixFile!.bytes); + audioFile = file; + } + // Pangea# + @override void initState() { super.initState(); waveform = _getWaveform(); // #Pangea if (widget.matrixFile != null) { - if (!kIsWeb) { - getTemporaryDirectory().then((val) { - final tempDir = val; - final file = File('${tempDir.path}/${widget.matrixFile!.name}'); - file.writeAsBytesSync(widget.matrixFile!.bytes); - audioFile = file; - }); - } - status = AudioPlayerStatus.downloaded; - setState(() {}); - } - - if (widget.autoplay) { + _downloadMatrixFile().then((_) { + setState(() => status = AudioPlayerStatus.downloaded); + if (widget.autoplay) { + status == AudioPlayerStatus.downloaded + ? _playAction() + : _downloadAction(); + } + }); + } else if (widget.autoplay) { status == AudioPlayerStatus.downloaded ? _playAction() : _downloadAction(); - // Pangea# } + // Pangea# } @override diff --git a/lib/pangea/models/pangea_message_event.dart b/lib/pangea/models/pangea_message_event.dart index 32a0baf8a..4debeee89 100644 --- a/lib/pangea/models/pangea_message_event.dart +++ b/lib/pangea/models/pangea_message_event.dart @@ -83,8 +83,16 @@ class PangeaMessageEvent { return true; } - Future getMatrixAudioFile(String langCode) async { - final String text = representationByLanguage(langCode)?.text ?? body; + Future getMatrixAudioFile( + String langCode, + BuildContext context, + ) async { + final String text = (await representationByLanguageGlobal( + context: context, + langCode: langCode, + )) + ?.text ?? + body; final TextToSpeechRequest params = TextToSpeechRequest( text: text, langCode: langCode, diff --git a/lib/pangea/widgets/chat/message_audio_card.dart b/lib/pangea/widgets/chat/message_audio_card.dart index 6c0ed78dc..e6595e9f9 100644 --- a/lib/pangea/widgets/chat/message_audio_card.dart +++ b/lib/pangea/widgets/chat/message_audio_card.dart @@ -1,4 +1,3 @@ -import 'package:fluffychat/config/app_config.dart'; import 'package:fluffychat/pages/chat/events/audio_player.dart'; import 'package:fluffychat/pangea/models/pangea_message_event.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; @@ -46,7 +45,8 @@ class MessageAudioCardState extends State { } } - audioFile = await widget.messageEvent.getMatrixAudioFile(langCode); + audioFile = + await widget.messageEvent.getMatrixAudioFile(langCode, context); if (mounted) setState(() => _isLoading = false); } catch (e, _) { debugPrint(StackTrace.current.toString()); @@ -78,20 +78,6 @@ class MessageAudioCardState extends State { @override Widget build(BuildContext context) { - final playButton = InkWell( - borderRadius: BorderRadius.circular(64), - onTap: fetchAudio, - child: Material( - color: AppConfig.primaryColor.withAlpha(64), - borderRadius: BorderRadius.circular(64), - child: const Icon( - // Change the icon based on some condition. If you have an audio player state, use it here. - Icons.play_arrow_outlined, - color: AppConfig.primaryColor, - ), - ), - ); - return Padding( padding: const EdgeInsets.all(8), child: _isLoading