From 5855cb2de509522aa396ec961fd9061d5ac07a4d Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 14 May 2024 14:59:58 -0400 Subject: [PATCH 1/2] updated record package version for iOS fix --- assets/l10n/intl_en.arb | 3 +- lib/pages/chat/recording_dialog.dart | 30 +++++++++++++++----- lib/pangea/models/speech_to_text_models.dart | 4 +-- lib/pangea/utils/any_state_holder.dart | 13 ++++++++- lib/pangea/utils/update_version_dialog.dart | 26 +++++++++++++++++ pubspec.yaml | 5 +++- 6 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 lib/pangea/utils/update_version_dialog.dart diff --git a/assets/l10n/intl_en.arb b/assets/l10n/intl_en.arb index 21874cc9e..41eeb498d 100644 --- a/assets/l10n/intl_en.arb +++ b/assets/l10n/intl_en.arb @@ -3944,5 +3944,6 @@ "score": "Score", "accuracy": "Accuracy", "points": "Points", - "noPaymentInfo": "No payment info necessary!" + "noPaymentInfo": "No payment info necessary!", + "updatePhoneOS": "You may need to update your device's OS version." } \ No newline at end of file diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index b3bff4187..8751d60a5 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -1,6 +1,7 @@ import 'dart:async'; import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pangea/utils/update_version_dialog.dart'; import 'package:fluffychat/utils/platform_infos.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -27,7 +28,7 @@ class RecordingDialogState extends State { bool error = false; String? _recordedPath; - final _audioRecorder = Record(); + final _audioRecorder = AudioRecorder(); final List amplitudeTimeline = []; static const int bitRate = 64000; @@ -45,13 +46,28 @@ class RecordingDialogState extends State { return; } await WakelockPlus.enable(); - await _audioRecorder.start( - path: _recordedPath, - bitRate: bitRate, - samplingRate: samplingRate, - encoder: AudioEncoder.wav, - numChannels: 1, + // #Pangea + final bool isNotError = await showUpdateVersionDialog( + future: () => + // Pangea# + _audioRecorder.start( + path: _recordedPath!, + const RecordConfig( + bitRate: bitRate, + sampleRate: samplingRate, + encoder: AudioEncoder.wav, + numChannels: 1, + ), + ), + // #Pangea + context: context, ); + + if (!isNotError) { + Navigator.of(context).pop(); + return; + } + // Pangea# setState(() => _duration = Duration.zero); _recorderSubscription?.cancel(); _recorderSubscription = diff --git a/lib/pangea/models/speech_to_text_models.dart b/lib/pangea/models/speech_to_text_models.dart index 05ab6ccbe..ad5fd96dd 100644 --- a/lib/pangea/models/speech_to_text_models.dart +++ b/lib/pangea/models/speech_to_text_models.dart @@ -107,10 +107,10 @@ class STTToken { return STTToken( token: PangeaToken.fromJson(json['token']), startTime: json['start_time'] != null - ? Duration(milliseconds: json['start_time'] * 1000.toInt()) + ? Duration(milliseconds: (json['start_time'] * 1000).round()) : null, endTime: json['end_time'] != null - ? Duration(milliseconds: json['end_time'] * 1000.toInt()) + ? Duration(milliseconds: (json['end_time'] * 1000).round()) : null, confidence: json['confidence'], ); diff --git a/lib/pangea/utils/any_state_holder.dart b/lib/pangea/utils/any_state_holder.dart index 2c3d1df7f..bd09c7131 100644 --- a/lib/pangea/utils/any_state_holder.dart +++ b/lib/pangea/utils/any_state_holder.dart @@ -1,3 +1,4 @@ +import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:flutter/material.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; @@ -39,7 +40,17 @@ class PangeaAnyState { void closeOverlay() { if (overlay != null) { - overlay?.remove(); + try { + overlay?.remove(); + } catch (err, s) { + ErrorHandler.logError( + e: err, + s: s, + data: { + "overlay": overlay, + }, + ); + } overlay = null; } } diff --git a/lib/pangea/utils/update_version_dialog.dart b/lib/pangea/utils/update_version_dialog.dart new file mode 100644 index 000000000..f1c41d286 --- /dev/null +++ b/lib/pangea/utils/update_version_dialog.dart @@ -0,0 +1,26 @@ +import 'package:adaptive_dialog/adaptive_dialog.dart'; +import 'package:fluffychat/pangea/utils/error_handler.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + +Future showUpdateVersionDialog({ + required Future Function() future, + required BuildContext context, +}) async { + try { + await future(); + return true; + } catch (err, s) { + ErrorHandler.logError( + e: err, + s: s, + ); + await showOkAlertDialog( + context: context, + title: L10n.of(context)!.oopsSomethingWentWrong, + message: L10n.of(context)!.updatePhoneOS, + okLabel: L10n.of(context)!.close, + ); + return false; + } +} diff --git a/pubspec.yaml b/pubspec.yaml index 3a60f60a8..0c3b2faac 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -83,7 +83,10 @@ dependencies: punycode: ^1.0.0 qr_code_scanner: ^1.0.1 receive_sharing_intent: 1.4.5 # Update needs more work - record: 4.4.4 # Upgrade to 5 currently breaks playing on iOS + # #Pangea + # record: 4.4.4 # Upgrade to 5 currently breaks playing on iOS + record: ^5.0.5 + # Pangea# scroll_to_index: ^3.0.1 share_plus: ^8.0.2 shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 From 8b8fc7e4b88241a5c8f75fcef5f73c015afee496 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Tue, 14 May 2024 15:01:12 -0400 Subject: [PATCH 2/2] replaced pangea comments --- lib/pages/chat/recording_dialog.dart | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart index 8751d60a5..805f090df 100644 --- a/lib/pages/chat/recording_dialog.dart +++ b/lib/pages/chat/recording_dialog.dart @@ -28,7 +28,10 @@ class RecordingDialogState extends State { bool error = false; String? _recordedPath; + // #Pangea + // final _audioRecorder = Record(); final _audioRecorder = AudioRecorder(); + // Pangea# final List amplitudeTimeline = []; static const int bitRate = 64000;