From 54975adbb33991d5513478e7e3f3ae66c6cb1bbd Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 10:13:15 -0400 Subject: [PATCH 1/5] require non-null error in card error widget --- lib/pangea/choreographer/widgets/it_feedback_card.dart | 2 +- lib/pangea/widgets/chat/message_speech_to_text_card.dart | 2 +- lib/pangea/widgets/igc/card_error_widget.dart | 4 ++-- lib/pangea/widgets/igc/word_data_card.dart | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/pangea/choreographer/widgets/it_feedback_card.dart b/lib/pangea/choreographer/widgets/it_feedback_card.dart index dd72f2457..f006e2552 100644 --- a/lib/pangea/choreographer/widgets/it_feedback_card.dart +++ b/lib/pangea/choreographer/widgets/it_feedback_card.dart @@ -103,7 +103,7 @@ class ITFeedbackCardController extends State { @override Widget build(BuildContext context) => error == null ? ITFeedbackCardView(controller: this) - : CardErrorWidget(error: error); + : CardErrorWidget(error: error!); } class ITFeedbackCardView extends StatelessWidget { diff --git a/lib/pangea/widgets/chat/message_speech_to_text_card.dart b/lib/pangea/widgets/chat/message_speech_to_text_card.dart index aae3b3eeb..cf61c3d49 100644 --- a/lib/pangea/widgets/chat/message_speech_to_text_card.dart +++ b/lib/pangea/widgets/chat/message_speech_to_text_card.dart @@ -152,7 +152,7 @@ class MessageSpeechToTextCardState extends State { // done fetchig but not results means some kind of error if (speechToTextResponse == null) { return CardErrorWidget( - error: error, + error: error ?? "Failed to fetch speech to text", maxWidth: AppConfig.toolbarMinWidth, ); } diff --git a/lib/pangea/widgets/igc/card_error_widget.dart b/lib/pangea/widgets/igc/card_error_widget.dart index 8c810391b..bbe1bc63b 100644 --- a/lib/pangea/widgets/igc/card_error_widget.dart +++ b/lib/pangea/widgets/igc/card_error_widget.dart @@ -6,14 +6,14 @@ import 'package:fluffychat/pangea/widgets/igc/card_header.dart'; import 'package:flutter/material.dart'; class CardErrorWidget extends StatelessWidget { - final Object? error; + final Object error; final Choreographer? choreographer; final int? offset; final double? maxWidth; const CardErrorWidget({ super.key, - this.error, + required this.error, this.choreographer, this.offset, this.maxWidth, diff --git a/lib/pangea/widgets/igc/word_data_card.dart b/lib/pangea/widgets/igc/word_data_card.dart index ff494bb38..06e7a1ed7 100644 --- a/lib/pangea/widgets/igc/word_data_card.dart +++ b/lib/pangea/widgets/igc/word_data_card.dart @@ -167,7 +167,7 @@ class WordDataCardView extends StatelessWidget { Widget build(BuildContext context) { if (controller.wordNetError != null) { return CardErrorWidget( - error: controller.wordNetError, + error: controller.wordNetError!, maxWidth: AppConfig.toolbarMinWidth, ); } From cd5f2379b8a380512d61be01fccd41ccb6faf700 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 10:46:50 -0400 Subject: [PATCH 2/5] if staging user tries to login to production (or vice versa), log them out --- lib/main.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index 6be6edc91..846c34d23 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:collection/collection.dart'; import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/pangea/config/environment.dart'; import 'package:fluffychat/pangea/controllers/language_list_controller.dart'; import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:fluffychat/pangea/utils/firebase_analytics.dart'; @@ -100,6 +101,18 @@ Future startGui(List clients, SharedPreferences store) async { await firstClient?.accountDataLoading; ErrorWidget.builder = (details) => FluffyChatErrorWidget(details); + + // #Pangea + // errors seems to happen a lot when users switch better production / staging + // while testing by accident. If the account is a production account but server is + // staging or vice versa, logout. + final isStagingUser = firstClient?.userID?.domain?.contains("staging"); + final isStagingServer = Environment.isStaging; + if (isStagingServer != isStagingUser) { + await firstClient?.logout(); + } + // Pangea# + runApp(FluffyChatApp(clients: clients, pincode: pin, store: store)); } From 212632a913c82c98339bac5f88bee0e2fb6b75b4 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 11:05:59 -0400 Subject: [PATCH 3/5] if userID is null, don't try to get isRoomAdmin --- .../pangea_room_extension/room_analytics_extension.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart b/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart index 73371b080..b0224f929 100644 --- a/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart +++ b/lib/pangea/extensions/pangea_room_extension/room_analytics_extension.dart @@ -10,7 +10,7 @@ extension AnalyticsRoomExtension on Room { return; } - if (!isRoomAdmin) return; + if (client.userID == null || !isRoomAdmin) return; final spaceHierarchy = await client.getSpaceHierarchy( id, maxDepth: 1, From df9f8e09161da7093b9aea25f36fd98d11c9a9fc Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 11:37:36 -0400 Subject: [PATCH 4/5] prevent null check error in send button --- lib/pangea/choreographer/controllers/choreographer.dart | 1 + lib/pangea/choreographer/widgets/send_button.dart | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pangea/choreographer/controllers/choreographer.dart b/lib/pangea/choreographer/controllers/choreographer.dart index f3e48a8b6..63895d550 100644 --- a/lib/pangea/choreographer/controllers/choreographer.dart +++ b/lib/pangea/choreographer/controllers/choreographer.dart @@ -593,6 +593,7 @@ class Choreographer { if (isFetching) return false; if (errorService.isError) return true; if (itEnabled && isRunningIT) return false; + if (igc.igcTextData == null) return false; final hasITMatches = igc.igcTextData!.matches.any((match) => match.isITStart); diff --git a/lib/pangea/choreographer/widgets/send_button.dart b/lib/pangea/choreographer/widgets/send_button.dart index f5e358a31..6fba75395 100644 --- a/lib/pangea/choreographer/widgets/send_button.dart +++ b/lib/pangea/choreographer/widgets/send_button.dart @@ -56,7 +56,10 @@ class ChoreographerSendButtonState extends State { color: widget.controller.choreographer.assistanceState .stateColor(context), onPressed: () { - widget.controller.choreographer.send(context); + widget.controller.choreographer.canSendMessage + ? widget.controller.choreographer.send(context) + : widget.controller.choreographer.igc + .showFirstMatch(context); }, tooltip: L10n.of(context)!.send, ), From 693c1b833473dfe6cf5a5749869ff49231123edb Mon Sep 17 00:00:00 2001 From: ggurdin Date: Fri, 25 Oct 2024 11:38:04 -0400 Subject: [PATCH 5/5] bump version --- pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pubspec.yaml b/pubspec.yaml index e24350240..c4662cdbd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,7 +6,7 @@ description: Learn a language while texting your friends. # Pangea# publish_to: none # On version bump also increase the build number for F-Droid -version: 1.22.8+3558 +version: 1.22.9+3559 environment: sdk: ">=3.0.0 <4.0.0"