diff --git a/mitra_app/lib/core/chat/chat_request_notifier.dart b/mitra_app/lib/core/chat/chat_request_notifier.dart index 8947ab9..f7c730b 100644 --- a/mitra_app/lib/core/chat/chat_request_notifier.dart +++ b/mitra_app/lib/core/chat/chat_request_notifier.dart @@ -76,7 +76,15 @@ class ChatRequest extends _$ChatRequest { ChatRequestData build() => const ChatRequestIdleData(); Future startListening() async { - if (state is ChatRequestAcceptingData || state is ChatRequestAcceptedData) return; + // Don't reset state if showing a request, stale message, or actively accepting + if (state is ChatRequestIncomingData || + state is ChatRequestStaleData || + state is ChatRequestAcceptingData || + state is ChatRequestAcceptedData) { + // Still reconnect WebSocket if needed, but don't change state + if (_channel == null) await _connectWebSocket(); + return; + } _closeWebSocket(); state = const ChatRequestListeningData(); await _connectWebSocket(); diff --git a/mitra_app/lib/core/chat/widgets/chat_request_overlay.dart b/mitra_app/lib/core/chat/widgets/chat_request_overlay.dart index 014a40c..c1607de 100644 --- a/mitra_app/lib/core/chat/widgets/chat_request_overlay.dart +++ b/mitra_app/lib/core/chat/widgets/chat_request_overlay.dart @@ -79,9 +79,11 @@ class _ChatRequestOverlayState extends ConsumerState } }); - return Stack( - children: [ - widget.child, + return Directionality( + textDirection: TextDirection.ltr, + child: Stack( + children: [ + widget.child, if (_visible) ...[ // Semi-transparent dim Positioned.fill( @@ -108,6 +110,7 @@ class _ChatRequestOverlayState extends ConsumerState ), ], ], + ), ); }