// import 'package:firebase_app_check/firebase_app_check.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:nhance_partner/presentation/providers/manager_provider.dart'; import 'package:nhance_partner/presentation/providers/userRoleProvider.dart'; import 'package:nhance_partner/presentation/screens/staff/enquiry_single_page/widgets/enquiry_screen.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'core/routing/app_router.dart'; Future _restoreManagerId(WidgetRef ref) async { final prefs = await SharedPreferences.getInstance(); final int? savedManagerId = prefs.getInt('managerId'); final int? savedUserId = prefs.getInt('userId'); final String? savedUserRole = prefs.getString('userRole'); final String? savedAttendanceIndvStaffId = prefs.getString( 'attendanceIndvStaff', ); final String? savedAttendanceIndvStaffName = prefs.getString( 'attendanceIndvStaffName', ); // Partners (agents) often have no manager_id in JWT, so never gate role/userId // restore on managerId — without role, grid `?role=Agent&logged_id=` is omitted and // the payout grid endpoint misbehaves for agent logins after app restart. if (savedUserId != null) { ref.read(userIdProvider.notifier).state = savedUserId; print("User ID restored: $savedUserId"); } if (savedManagerId != null) { ref.read(managerIdProvider.notifier).state = savedManagerId; print("Manager ID restored: $savedManagerId"); } if (savedUserRole != null && savedUserRole.trim().isNotEmpty) { ref.read(userRoleProvider.notifier).state = savedUserRole; print("Role restored: $savedUserRole"); } if (savedAttendanceIndvStaffId != null && savedAttendanceIndvStaffName != null) { ref.read(staffIndiviualAttendanceIdProvider.notifier).state = savedAttendanceIndvStaffId; ref.read(staffIndiviualAttendanceNameIdProvider.notifier).state = savedAttendanceIndvStaffName; print("Staff ID restored: $savedAttendanceIndvStaffId"); print("Staff Name restored: $savedAttendanceIndvStaffName"); } } Future main() async { WidgetsFlutterBinding.ensureInitialized(); // final SharedPreferences prefs = await SharedPreferences.getInstance(); // prefs.clear(); if (kIsWeb) { await Firebase.initializeApp( options: const FirebaseOptions( apiKey: "AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc", authDomain: "nhance-ee8d1.firebaseapp.com", projectId: "nhance-ee8d1", storageBucket: "nhance-ee8d1.firebasestorage.app", messagingSenderId: "1084115316849", appId: "1:1084115316849:web:8fc3b1c886349ae86c6bd0", ), ); } else { // await Firebase.initializeApp(); // await FirebaseAppCheck.instance.activate( // // webProvider: ReCaptchaV3Provider('recaptcha-v3-site-key'), // androidProvider: AndroidProvider.playIntegrity, // appleProvider: AppleProvider.appAttest, // ); // FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); // FirebaseMessaging messaging = FirebaseMessaging.instance; // // NotificationSettings settings = await messaging.requestPermission(); // NotificationSettings settings = // await FirebaseMessaging.instance.requestPermission( // alert: true, // badge: true, // sound: true, // ); // print('User granted permission: ${settings.authorizationStatus}'); // FirebaseMessaging.onMessage.listen((RemoteMessage message) { // print('Foreground Message: ${message.notification?.title}'); // }); // FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { // print('User tapped on notification'); // }); } runApp(const ProviderScope(child: MyApp())); } class MyApp extends ConsumerStatefulWidget { const MyApp({super.key}); @override ConsumerState createState() => _MyAppState(); } class _MyAppState extends ConsumerState { @override void initState() { super.initState(); if (kIsWeb) { Future.microtask(() => _restoreManagerId(ref)); } } @override Widget build(BuildContext context) { // return MaterialApp( // title: 'Nhance Partner', // debugShowCheckedModeBanner: false, // theme: ThemeData( // primaryColor: const Color(0xFFb8e6e1), // colorScheme: ColorScheme.fromSeed( // seedColor: const Color(0xFFb8e6e1), // primary: const Color(0xFF4a90e2), // ), // scaffoldBackgroundColor: const Color(0xFFf5f5f5), // useMaterial3: true, // ), // home: const EnquiryScreen(), // ); return MaterialApp.router( debugShowCheckedModeBanner: false, title: 'Nhance Partner', theme: ThemeData( // primarySwatch: Colors.blue, // primaryColor: Color(0xFFE26728), // active color (selected / focused) primaryColorLight: Color(0xFFEDF6F5), colorScheme: ColorScheme.fromSeed( seedColor: Color(0xFFEDF6F5), // Generates harmonious colors ), textTheme: GoogleFonts.interTextTheme( Theme.of(context).textTheme, // base on default styles ), ), routerConfig: appRouter, ); } }