Commit feeb6477 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

Notification Redirection

parent f96fa9c8
...@@ -14,6 +14,8 @@ import 'package:pulse/utils/customSnackBar.dart'; ...@@ -14,6 +14,8 @@ import 'package:pulse/utils/customSnackBar.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import '../utils/SharedpreferencesService.dart';
class HomeScreen extends StatefulWidget { class HomeScreen extends StatefulWidget {
final String sessionId; final String sessionId;
final String staffId; final String staffId;
...@@ -42,6 +44,7 @@ class _HomeScreenState extends State<HomeScreen> { ...@@ -42,6 +44,7 @@ class _HomeScreenState extends State<HomeScreen> {
bool _isLoading = false; bool _isLoading = false;
bool _isRefreshing = false; bool _isRefreshing = false;
PullToRefreshController? _pullToRefreshController; PullToRefreshController? _pullToRefreshController;
final _prefs = SharedPreferencesService.instance;
// Responsive sizing variables // Responsive sizing variables
late double _screenHeight; late double _screenHeight;
...@@ -58,6 +61,8 @@ class _HomeScreenState extends State<HomeScreen> { ...@@ -58,6 +61,8 @@ class _HomeScreenState extends State<HomeScreen> {
HapticFeedback.lightImpact(); HapticFeedback.lightImpact();
_initConnectivity(); _initConnectivity();
_initializePullToRefresh(); _initializePullToRefresh();
final sessionId = _prefs.getString("sessionId");
final staffId = _prefs.getString("staffId");
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
final provider = Provider.of<ProfileProvider>(context, listen: false); final provider = Provider.of<ProfileProvider>(context, listen: false);
...@@ -75,6 +80,7 @@ class _HomeScreenState extends State<HomeScreen> { ...@@ -75,6 +80,7 @@ class _HomeScreenState extends State<HomeScreen> {
); );
} }
}); });
} }
void _initializePullToRefresh() { void _initializePullToRefresh() {
......
...@@ -12,7 +12,7 @@ import 'package:pulse/Notifier/theme_provider.dart'; ...@@ -12,7 +12,7 @@ import 'package:pulse/Notifier/theme_provider.dart';
import 'package:pulse/Notifier/ProfileProvider.dart'; import 'package:pulse/Notifier/ProfileProvider.dart';
import 'package:pulse/Notifier/webProvider.dart'; import 'package:pulse/Notifier/webProvider.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:pulse/utils/SharedpreferencesService.dart';
import 'Screens/home_screen.dart'; import 'Screens/home_screen.dart';
// Needed to navigate outside BuildContext // Needed to navigate outside BuildContext
...@@ -112,7 +112,8 @@ Future<void> main() async { ...@@ -112,7 +112,8 @@ Future<void> main() async {
// notification while app is in background // notification while app is in background
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print(" Notification clicked: ${message.data}"); print("🔥🔥🔥🔥🔥 Notification clicked: ${message.data}");
NotificationHandler.handle(message.data);
}); });
InAppWebViewController.setWebContentsDebuggingEnabled(true); InAppWebViewController.setWebContentsDebuggingEnabled(true);
...@@ -137,6 +138,7 @@ class MyApp extends StatelessWidget { ...@@ -137,6 +138,7 @@ class MyApp extends StatelessWidget {
return MaterialApp( return MaterialApp(
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
title: 'Web Grid Pulse', title: 'Web Grid Pulse',
navigatorKey: navigatorKey,
theme: themeProvider.isDark theme: themeProvider.isDark
? ThemeData.dark() ? ThemeData.dark()
: ThemeData.light().copyWith( : ThemeData.light().copyWith(
...@@ -152,21 +154,26 @@ class MyApp extends StatelessWidget { ...@@ -152,21 +154,26 @@ class MyApp extends StatelessWidget {
class NotificationHandler { class NotificationHandler {
static void handle(Map<String, dynamic> data) { static Future<void> handle(Map<String, dynamic> data) async {
final type = data['type']; final type = data['type'];
final value = data['type_value']; final value = data['type_value'];
final notifId = data['notification_id']; final notifId = data['notification_id'];
final prefs = SharedPreferencesService.instance;
final sessionId = await prefs.getString("sessionId");
final staffId = await prefs.getString("staffId");
debugPrint("✅ Direct session restore $sessionId");
debugPrint("✅ Direct staff restore $staffId");
debugPrint("🔗 Handling Notification:"); debugPrint("🔗 Handling Notification:");
debugPrint("type=$type, value=$value, id=$notifId"); debugPrint("type=$type, value=$value, id=$notifId");
// Decide what to do based on the type // Decide what to do based on the type
if (type == 'web' && value != null) { if (type == 'url' && value != null) {
navigatorKey.currentState?.push( navigatorKey.currentState?.push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => HomeScreen( builder: (_) => HomeScreen(
sessionId: '', sessionId: sessionId.toString(),
staffId: '', staffId: staffId.toString(),
notificationUrl: value, notificationUrl: value,
), ),
), ),
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment