From fc218e6d656a1cb47f4d0a6dbd230e3a8379201f Mon Sep 17 00:00:00 2001 From: OfficialDakari Date: Thu, 6 Nov 2025 11:36:59 +0500 Subject: [PATCH] steal some changes from fluffychat --- lib/pages/chat/events/poll_content.dart | 2 +- lib/pages/chat/recording_view_model.dart | 19 ++++++++++++------ .../matrix_sdk_extensions/matrix_locals.dart | 15 ++++++++++++++ pubspec.lock | 20 +++++++++---------- pubspec.yaml | 10 +++++----- 5 files changed, 44 insertions(+), 22 deletions(-) diff --git a/lib/pages/chat/events/poll_content.dart b/lib/pages/chat/events/poll_content.dart index 33fb26b..876e7db 100644 --- a/lib/pages/chat/events/poll_content.dart +++ b/lib/pages/chat/events/poll_content.dart @@ -254,7 +254,7 @@ class PollWidgetState extends State { final event = widget.event; final content = event.content[PollEvents.PollStart] as Map; - final question = content?['question']?['m.text'] as String? ?? 'Poll'; + final question = content?['question']?['m.text'] as String? ?? content?['question']?['org.matrix.msc1767.text'] as String? ?? 'Poll'; final List answers = content?['answers'] ?? []; final maxSelections = content?['max_selections'] as int? ?? 1; final kind = content?['kind'] as String?; diff --git a/lib/pages/chat/recording_view_model.dart b/lib/pages/chat/recording_view_model.dart index 0054385..53c29e7 100644 --- a/lib/pages/chat/recording_view_model.dart +++ b/lib/pages/chat/recording_view_model.dart @@ -34,7 +34,6 @@ class RecordingViewModelState extends State { Timer? _recorderSubscription; Duration duration = Duration.zero; - bool error = false; bool isSending = false; bool get isRecording => _audioRecorder != null; @@ -88,7 +87,11 @@ class RecordingViewModelState extends State { final result = await audioRecorder.hasPermission(); if (result != true) { - setState(() => error = true); + showOkAlertDialog( + context: context, + title: L10n.of(context).oopsSomethingWentWrong, + message: L10n.of(context).noPermission, + ); return; } await WakelockPlus.enable(); @@ -107,9 +110,14 @@ class RecordingViewModelState extends State { ); setState(() => duration = Duration.zero); _subscribe(); - } catch (_) { - setState(() => error = true); - rethrow; + } catch (e, s) { + Logs().w('Unable to start voice message recording', e, s); + showOkAlertDialog( + context: context, + title: L10n.of(context).oopsSomethingWentWrong, + message: e.toString(), + ); + setState(_reset); } } @@ -139,7 +147,6 @@ class RecordingViewModelState extends State { _audioRecorder?.stop(); _audioRecorder = null; isSending = false; - error = false; fileName = null; duration = Duration.zero; amplitudeTimeline.clear(); diff --git a/lib/utils/matrix_sdk_extensions/matrix_locals.dart b/lib/utils/matrix_sdk_extensions/matrix_locals.dart index d57274d..f8c1839 100644 --- a/lib/utils/matrix_sdk_extensions/matrix_locals.dart +++ b/lib/utils/matrix_sdk_extensions/matrix_locals.dart @@ -7,6 +7,8 @@ class MatrixLocals extends MatrixLocalizations { MatrixLocals(this.l10n); + + @override String voiceMessage(String senderName, Duration? duration) { return l10n.voiceMessage; @@ -358,4 +360,17 @@ class MatrixLocals extends MatrixLocalizations { @override String get cancelledSend => l10n.sendCanceled; + + @override + // TODO: implement pollHasBeenEnded + String get pollHasBeenEnded => throw UnimplementedError(); + + @override + String startedAPoll(String senderName) { + // TODO: implement startedAPoll + throw UnimplementedError(); + } + + // This is currently not used, just to keep up with matrix-dart-sdk upstream. + // I will reimplement polls to match fluffychat's, I don't know when... } diff --git a/pubspec.lock b/pubspec.lock index 20451ab..85686cd 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -253,10 +253,10 @@ packages: dependency: "direct main" description: name: cross_file - sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" + sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" url: "https://pub.dev" source: hosted - version: "0.3.4+2" + version: "0.3.5" crypto: dependency: transitive description: @@ -730,10 +730,10 @@ packages: dependency: "direct main" description: name: flutter_vodozemac - sha256: "54cd3790b6dfdc1afce928f8c46f7eeea9e4f8326f077400894935926f202057" + sha256: "16d4b44dd338689441fe42a80d0184e5c864e9563823de9e7e6371620d2c0590" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.4.1" flutter_web_auth_2: dependency: "direct main" description: @@ -1203,10 +1203,10 @@ packages: description: path: "." ref: main - resolved-ref: f678376e3a4825a6e1a00d89585d6bae0843950c + resolved-ref: "8272294736361eae8f3c81d220aaffcf30f38fb1" url: "https://git.extera.xyz/OfficialDakari/matrix-dart-sdk.git" source: git - version: "3.0.1" + version: "3.0.2" meta: dependency: transitive description: @@ -1563,10 +1563,10 @@ packages: dependency: "direct main" description: name: qr_code_scanner_plus - sha256: a0f1ac8e13299b3db2646635f252fe2ec67222b848b24ed34d11052faf080bfa + sha256: b764e5004251c58d9dee0c295e6006e05bd8d249e78ac3383abdb5afe0a996cd url: "https://pub.dev" source: hosted - version: "2.0.12" + version: "2.0.14" qr_image: dependency: "direct main" description: @@ -2248,10 +2248,10 @@ packages: dependency: "direct main" description: name: vodozemac - sha256: "95cac62ffab94db99e134c8f9aac198f8131a4eed0bed76a6cfc9c72add229b9" + sha256: "39144e20740807731871c9248d811ed5a037b21d0aa9ffcfa630954de74139d9" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.4.0" wakelock_plus: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 3b37331..11a3e70 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: blurhash_dart: ^1.2.1 chewie: ^1.11.0 collection: ^1.18.0 - cross_file: ^0.3.4+2 + cross_file: ^0.3.5 cupertino_icons: any desktop_drop: ^0.4.4 desktop_notifications: ^0.6.3 @@ -47,7 +47,7 @@ dependencies: git: url: https://github.com/famedly/flutter_typeahead.git ref: main - flutter_vodozemac: ^0.3.0 + flutter_vodozemac: ^0.4.1 flutter_web_auth_2: ^3.1.1 # Version 4 blocked by https://github.com/MixinNetwork/flutter-plugins/issues/379 flutter_webrtc: ^0.12.9 geolocator: ^13.0.1 @@ -79,10 +79,10 @@ dependencies: pretty_qr_code: ^3.2.1 provider: ^6.0.2 punycode: ^1.0.0 - qr_code_scanner_plus: ^2.0.10+1 + qr_code_scanner_plus: ^2.0.14 qr_image: ^1.0.0 receive_sharing_intent: ^1.8.1 - record: ^6.1.1 + record: ^6.1.2 scroll_to_index: ^3.0.1 share_plus: ^10.0.2 shared_preferences: ^2.2.0 # Pinned because https://github.com/flutter/flutter/issues/118401 @@ -97,7 +97,7 @@ dependencies: url_launcher: ^6.2.5 video_compress: ^3.1.4 video_player: ^2.9.2 - vodozemac: ^0.3.0 + vodozemac: ^0.4.0 wakelock_plus: ^1.2.2 webrtc_interface: ^1.0.13 dio: ^5.9.0