From c2f785795e918e81068d012de39eda48cb3bf8d1 Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 8 May 2024 14:53:41 -0400 Subject: [PATCH] refresh toolbar / input bar after activating free trial --- lib/pages/chat/input_bar.dart | 10 ++--- .../controllers/choreographer.dart | 7 +++- .../controllers/subscription_controller.dart | 12 ++++-- .../chat/message_unsubscribed_card.dart | 1 - lib/pangea/widgets/class/join_with_link.dart | 41 ++++++------------- lib/pangea/widgets/igc/span_card.dart | 4 +- 6 files changed, 33 insertions(+), 42 deletions(-) diff --git a/lib/pages/chat/input_bar.dart b/lib/pages/chat/input_bar.dart index 8d4bfe617..373b88c10 100644 --- a/lib/pages/chat/input_bar.dart +++ b/lib/pages/chat/input_bar.dart @@ -50,11 +50,11 @@ class InputBar extends StatelessWidget { List> getSuggestions(String text) { // #Pangea final List> ret = >[]; - // if (controller!.selection.baseOffset != - // controller!.selection.extentOffset || - // controller!.selection.baseOffset < 0) { - // return []; // no entries if there is selected text - // } + if (controller!.selection.baseOffset != + controller!.selection.extentOffset || + controller!.selection.baseOffset < 0) { + return []; // no entries if there is selected text + } // Pangea# final searchText = controller!.text.substring(0, controller!.selection.baseOffset); diff --git a/lib/pangea/choreographer/controllers/choreographer.dart b/lib/pangea/choreographer/controllers/choreographer.dart index e5be2d194..556eaaff8 100644 --- a/lib/pangea/choreographer/controllers/choreographer.dart +++ b/lib/pangea/choreographer/controllers/choreographer.dart @@ -51,6 +51,7 @@ class Choreographer { String? _lastChecked; ChoreoMode choreoMode = ChoreoMode.igc; final StreamController stateListener = StreamController(); + StreamSubscription? trialStream; Choreographer(this.pangeaController, this.chatController) { _initialize(); @@ -63,6 +64,9 @@ class Choreographer { errorService = ErrorService(this); altTranslator = AlternativeTranslator(this); _textController.addListener(_onChangeListener); + trialStream = pangeaController + .subscriptionController.trialActivationStream.stream + .listen((_) => _onChangeListener); clear(); } @@ -214,7 +218,7 @@ class Choreographer { if (choreoMode == ChoreoMode.it && itController.isTranslationDone && !tokensOnly) { - debugger(when: kDebugMode); + // debugger(when: kDebugMode); } await (choreoMode == ChoreoMode.it && !itController.isTranslationDone @@ -413,6 +417,7 @@ class Choreographer { dispose() { _textController.dispose(); + trialStream?.cancel(); } LanguageModel? get l2Lang { diff --git a/lib/pangea/controllers/subscription_controller.dart b/lib/pangea/controllers/subscription_controller.dart index eed1cb371..36e965137 100644 --- a/lib/pangea/controllers/subscription_controller.dart +++ b/lib/pangea/controllers/subscription_controller.dart @@ -34,6 +34,7 @@ class SubscriptionController extends BaseController { late PangeaController _pangeaController; SubscriptionInfo? subscription; final StreamController subscriptionStream = StreamController.broadcast(); + final StreamController trialActivationStream = StreamController.broadcast(); SubscriptionController(PangeaController pangeaController) : super() { _pangeaController = pangeaController; @@ -191,10 +192,13 @@ class SubscriptionController extends BaseController { void activateNewUserTrial() { _pangeaController.pStoreService .save( - MatrixProfile.activatedFreeTrial.title, - true, - ) - .then((_) => setNewUserTrial()); + MatrixProfile.activatedFreeTrial.title, + true, + ) + .then((_) { + setNewUserTrial(); + trialActivationStream.add(true); + }); } void setNewUserTrial() { diff --git a/lib/pangea/widgets/chat/message_unsubscribed_card.dart b/lib/pangea/widgets/chat/message_unsubscribed_card.dart index 2d37328ec..8219e2355 100644 --- a/lib/pangea/widgets/chat/message_unsubscribed_card.dart +++ b/lib/pangea/widgets/chat/message_unsubscribed_card.dart @@ -33,7 +33,6 @@ class MessageUnsubscribedCard extends StatelessWidget { MatrixState.pangeaController.subscriptionController .showPaywall(context); } - MatrixState.pAnyState.closeOverlay(); } return Padding( diff --git a/lib/pangea/widgets/class/join_with_link.dart b/lib/pangea/widgets/class/join_with_link.dart index 00020e78d..804c9b991 100644 --- a/lib/pangea/widgets/class/join_with_link.dart +++ b/lib/pangea/widgets/class/join_with_link.dart @@ -1,13 +1,11 @@ import 'package:fluffychat/pangea/constants/url_query_parameter_keys.dart'; import 'package:fluffychat/pangea/controllers/pangea_controller.dart'; -import 'package:fluffychat/pangea/utils/class_code.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:go_router/go_router.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; import '../../../widgets/matrix.dart'; import '../../constants/local.key.dart'; -import '../../utils/error_handler.dart'; //if on home with classcode in url and not logged in, then save it soemhow and after llogin, join class automatically //if on home with classcode in url and logged in, then join class automatically @@ -33,37 +31,22 @@ class _JoinClassWithLinkState extends State { .queryParameters[UrlQueryParameterKeys.classCode]; if (classCode == null) { - return ClassCodeUtil.messageDialog( - context, - L10n.of(context)!.unableToFindClassCode, - () => context.go("/rooms"), + Sentry.addBreadcrumb( + Breadcrumb( + message: + "Navigated to join_with_link without class code query parameter", + ), ); - } - - if (!Matrix.of(context).client.isLogged()) { - await _pangeaController.pStoreService.save( - PLocalKey.cachedClassCodeToJoin, - classCode, - addClientIdToKey: false, - local: true, - ); - context.go("/home"); return; } - _pangeaController.classController - .joinClasswithCode( - context, - classCode!, - ) - .onError((error, stackTrace) { - ClassCodeUtil.messageSnack( - context, - ErrorCopy(context, error).body, - ); - }).whenComplete( - () => context.go("/rooms"), + await _pangeaController.pStoreService.save( + PLocalKey.cachedClassCodeToJoin, + classCode, + addClientIdToKey: false, + local: true, ); + context.go("/home"); }); } diff --git a/lib/pangea/widgets/igc/span_card.dart b/lib/pangea/widgets/igc/span_card.dart index eb167da3b..7185d726c 100644 --- a/lib/pangea/widgets/igc/span_card.dart +++ b/lib/pangea/widgets/igc/span_card.dart @@ -77,9 +77,9 @@ class SpanCardState extends State { if (mounted) { setState(() => fetchingData = false); } - } catch (e) { + } catch (e, s) { // debugger(when: kDebugMode); - ErrorHandler.logError(e: e, s: StackTrace.current); + ErrorHandler.logError(e: e, s: s); if (mounted) { setState(() { error = e;