post_enrollment_app/lib/main.dart

242 lines
9.7 KiB
Dart
Executable File

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/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:nhance_app_pwa/pages/email_verify.dart';
import 'package:nhance_app_pwa/pages/enrollment/addons.dart';
import 'package:nhance_app_pwa/pages/enrollment/empDetails.dart';
import 'package:nhance_app_pwa/pages/enrollment/empReview.dart';
import 'package:nhance_app_pwa/pages/login.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/botman_widget.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/chatbot.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/claimprocess.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/claims.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/generalexclusionsdeductibles.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/help.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/home.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/planclaimsform.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/policies.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/privacypolicy.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/profile.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/raisedTicketList.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/termsofuse.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/tickets.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/tickettracklist.dart';
import 'package:nhance_app_pwa/pages/postEnrollment/wellness.dart';
import 'package:nhance_app_pwa/pages/session/SetPinBiometric.dart';
import 'package:nhance_app_pwa/pages/session/changePin.dart';
import 'package:nhance_app_pwa/pages/session/settingUpPinAndBiometric.dart';
import 'package:nhance_app_pwa/pages/verify.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'models/environment.dart';
import 'package:flutter/foundation.dart';
// import 'dart:html' as html;
void clearLocalStorageOnAppStart() async {
if (kIsWeb) {
// Clear localStorage every time the app starts
// html.window.localStorage.clear();
final SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.clear();
}
}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
print("Handling background message: ${message.messageId}");
}
Future<void> main() async {
// clearLocalStorageOnAppStart();
// html.window.onBeforeUnload.listen((event) {
// html.window.localStorage.clear(); // ✅ Clears local storage
// });
WidgetsFlutterBinding.ensureInitialized();
// final SharedPreferences prefs = await SharedPreferences.getInstance();
// prefs.clear();
if (kIsWeb) {
await Firebase.initializeApp(
options: const FirebaseOptions(
// apiKey: 'AIzaSyC4yHbCX4mQu0jO81pJrDwxKLQlTQWofrc',
// appId: '1:1084115316849:android:68b14c4ff37f4bbc6c6bd0',
// messagingSenderId: '1084115316849',
// projectId: 'nhance-ee8d1'
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');
});
}
await dotenv.load(fileName: Environment.fileName);
// ✅ Get prefs
final prefs = await SharedPreferences.getInstance();
// ✅ Decide initialRoute
String initialRoute = 'login';
if (!kIsWeb) {
if (prefs.containsKey('is_mpin_skipped')) {
final isMpinSkipped = prefs.getString('is_mpin_skipped');
if (isMpinSkipped == '0') {
initialRoute = 'pinPage';
}
}
}
runApp(MyApp(initialRoute: initialRoute));
}
class MyApp extends StatelessWidget {
final String initialRoute;
const MyApp({super.key, required this.initialRoute});
@override
Widget build(BuildContext context) {
return MaterialApp(
// initialRoute: 'login',
initialRoute: initialRoute,
debugShowCheckedModeBanner: false,
routes: {
'splash': (context) => SplashScreen(),
'login': (context) => login(),
'mailVerify': (context) => MyEmailVerify(
email: '',
),
'verify': (context) => MyVerify(
verificationId: '',
mobileNumber: '',
resendToken: null,
onResendCode: (String, int) {},
),
'pinSettingPage': (context) => pinSettingPage(),
'pinPage': (context) => pinPage(),
'changePin': (context) => changePin(),
'home': (context) => Home(),
'policies': (context) => policies(),
'claims': (context) => claims(),
'help': (context) => help(),
'claimprocess': (context) => claimprocess(),
'profile': (context) => profile(),
'wellness': (context) => wellness(),
'planclaimsform': (context) => planclaimsform(),
'tickettracklist': (context) => tickettracklist(
ticketID: "",
),
'privacypolicy': (context) => privacypolicy(),
'termsofuse': (context) => termsofuse(),
'generalExclusionsDeductibles': (context) =>
generalExclusionsDeductibles(),
// 'home': (context) => kIsWeb ? Home() : BotmanScaffold(currentRoute: 'home', child: Home()),
// 'policies': (context) => kIsWeb ? policies() : BotmanScaffold(currentRoute: 'policies', child: policies()),
// 'claims': (context) => kIsWeb ? claims() : BotmanScaffold(currentRoute: 'claims', child: claims()),
// 'help': (context) => kIsWeb ? help() : BotmanScaffold(currentRoute: 'help', child: help()),
// 'claimprocess': (context) => kIsWeb ? claimprocess() : BotmanScaffold(currentRoute: 'claimprocess', child: claimprocess()),
// 'profile': (context) => kIsWeb ? profile() : BotmanScaffold(currentRoute: 'profile', child: profile()),
// 'wellness': (context) => kIsWeb ? wellness() : BotmanScaffold(currentRoute: 'wellness', child: wellness()),
// 'planclaimsform': (context) => kIsWeb ? planclaimsform() : BotmanScaffold(currentRoute: 'planclaimsform', child: planclaimsform()),
// 'claimtracklist': (context) => kIsWeb ? claimtracklist() : BotmanScaffold(currentRoute: 'claimtracklist', child: claimtracklist()),
// 'privacypolicy': (context) => kIsWeb ? claimtracklist() : BotmanScaffold(currentRoute: 'privacypolicy', child: claimtracklist()),
// 'termsofuse': (context) => kIsWeb ? termsofuse() : BotmanScaffold(currentRoute: 'termsofuse', child: termsofuse()),
// 'generalExclusionsDeductibles': (context) => kIsWeb ? generalExclusionsDeductibles() : BotmanScaffold(currentRoute: 'generalExclusionsDeductibles', child: generalExclusionsDeductibles()),
'chatbot': (context) => chatbot(),
'empDetails': (context) => empDetails(),
'addOnsDetails': (context) => addOnsDetails(),
'empReviewDetails': (context) => empReviewDetails(),
'tickets': (context) => tickets(),
'raisedTicketHistory': (context) => raisedTicketHistory(),
},
);
}
}
// Lightweight splash screen to show during app startup
class SplashScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
// Simulate a brief delay before redirecting to the login screen
Future.delayed(Duration(seconds: 2), () {
Navigator.pushReplacementNamed(context, 'login');
});
return Scaffold(
body: Container(
color: Color(0x98FFFCE5), // Semi-transparent background
child: Center(
child: // Your GIF loader widget
Image.asset(
height: 60,
width: 60,
'assets/nhance-loader.gif'), // Adjust path to your GIF loader
),
),
);
}
}
// class BotmanScaffold extends StatelessWidget {
// final Widget child;
// final String currentRoute;
//
// const BotmanScaffold({
// required this.child,
// required this.currentRoute,
// super.key,
// });
//
// bool get _showBotman {
// const excludedRoutes = ['login', 'splash', 'mailVerify', 'verify'];
// return !excludedRoutes.contains(currentRoute);
// }
//
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// body: Stack(
// children: [
// child,
// if (_showBotman)
// const Positioned(
// bottom: 50,
// right: 0,
// width: 75,
// height: 75,
// child: BotmanWidget(),
// ),
// ],
// ),
// );
// }
// }