Phase 3.2 WS1: Chat request overlay, queue, stale reasons
- Backend: add reason field to chat_request_closed WS messages (cancelled_by_customer, accepted_by_other, expired) - Backend: include duration_minutes, is_free_trial in chat_request WS - ChatRequestNotifier: add ChatRequestStaleData, StaleReason enum, request queue (List<Map>), ignore(), acknowledgeStale(), _advanceQueue() - New ChatRequestOverlay widget: slides up from bottom, dimmed background, swipe to dismiss, shows active/stale request content - Integrate overlay in main.dart wrapping MaterialApp.router - Cleanup: convert HomeScreen to ConsumerWidget, remove showModalBottomSheet, remove IncomingRequestSheet, remove lifecycle observer Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -6,6 +6,7 @@ import 'core/api/api_client_provider.dart';
|
||||
import 'core/auth/auth_notifier.dart';
|
||||
import 'core/status/status_notifier.dart';
|
||||
import 'core/chat/chat_request_notifier.dart';
|
||||
import 'core/chat/widgets/chat_request_overlay.dart';
|
||||
import 'core/notifications/notification_service.dart';
|
||||
import 'firebase_options.dart';
|
||||
import 'router.dart';
|
||||
@@ -83,9 +84,11 @@ class _AppState extends ConsumerState<App> with WidgetsBindingObserver {
|
||||
ref.read(chatRequestProvider.notifier).setIncomingFromNotification(sessionId);
|
||||
};
|
||||
|
||||
return MaterialApp.router(
|
||||
title: 'Halo Bestie Mitra',
|
||||
routerConfig: router,
|
||||
return ChatRequestOverlay(
|
||||
child: MaterialApp.router(
|
||||
title: 'Halo Bestie Mitra',
|
||||
routerConfig: router,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user