diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index 10f4f194f..a56140985 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -783,7 +783,6 @@ class ChatController extends State choreographer.dispose(); activityController.dispose(); MatrixState.pAnyState.closeAllOverlays(force: true); - showToolbarStream.close(); stopMediaStream.close(); _levelSubscription?.cancel(); _analyticsSubscription?.cancel(); @@ -791,6 +790,7 @@ class ChatController extends State _router.routeInformationProvider.removeListener(_onRouteChanged); scrollController.dispose(); inputFocus.dispose(); + depressMessageButton.dispose(); TokensUtil.clearNewTokenCache(); //Pangea# super.dispose(); @@ -1614,6 +1614,8 @@ class ChatController extends State if (!mounted) return; if (!_isToolbarOpen && selectedEvents.isEmpty) return; MatrixState.pAnyState.closeAllOverlays(); + depressMessageButton.value = false; + setState(() { selectedEvents.clear(); showEmojiPicker = false; @@ -1952,6 +1954,8 @@ class ChatController extends State editEvent = null; }); // #Pangea + ValueNotifier depressMessageButton = ValueNotifier(false); + String? get buttonEventID => timeline!.events .firstWhereOrNull( (event) => @@ -1971,9 +1975,6 @@ class ChatController extends State ) ?.eventId; - final StreamController showToolbarStream = - StreamController.broadcast(); - final StreamController stopMediaStream = StreamController.broadcast(); bool get _isToolbarOpen => @@ -2043,13 +2044,13 @@ class ChatController extends State // you've clicked a message so lets turn this off InstructionsEnum.clickMessage.setToggledOff(true); - showToolbarStream.add(event.eventId); if (!kIsWeb) { HapticFeedback.mediumImpact(); } stopMediaStream.add(null); if (buttonEventID == event.eventId) { + depressMessageButton.value = true; Future.delayed(const Duration(milliseconds: 200), () { if (_router.state.path != ':roomid') { // The user has navigated away from the chat, diff --git a/lib/pages/chat/events/message.dart b/lib/pages/chat/events/message.dart index 839579cae..3458e145f 100644 --- a/lib/pages/chat/events/message.dart +++ b/lib/pages/chat/events/message.dart @@ -581,29 +581,10 @@ class Message extends StatelessWidget { child: MouseRegion( cursor: SystemMouseCursors.click, - child: PressableButton( - buttonHeight: 5, - triggerAnimation: controller - .showToolbarStream - .stream - .where( - (eventID) => - eventID == - event.eventId, - ), - depressed: !isButton, - borderRadius: borderRadius, - onPressed: () { - showToolbar( - pangeaMessageEvent, - ); - }, - color: color, - visible: - isButton && !noBubble, - builder: (context, _, __) => - // Pangea# - Container( + child: ValueListenableBuilder( + valueListenable: controller + .depressMessageButton, + child: Container( decoration: BoxDecoration( color: noBubble ? Colors.transparent @@ -823,6 +804,31 @@ class Message extends StatelessWidget { ), ), ), + // #Pangea + builder: ( + context, + depressed, + child, + ) => + PressableButton( + buttonHeight: 5, + depressed: !isButton || + depressed, + borderRadius: + borderRadius, + onPressed: () { + showToolbar( + pangeaMessageEvent, + ); + }, + color: color, + visible: + isButton && !noBubble, + builder: + (context, _, __) => + child!, + ), + // Pangea# ), ), ),