import 'package:cheminova/controller/home_service.dart'; import 'package:cheminova/models/user_model.dart'; import 'package:get/get.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../notification_service.dart'; class HomeController extends GetxController { // Instance of HomeService to handle API requests final HomeService homeService = HomeService(); // Instance of NotificationServices for handling notifications NotificationServices notificationServices = NotificationServices(); UserModel? user; // Variable to store user details @override void onInit() { // Called when the controller is initialized getUser(); // Fetch user data super.onInit(); // Call parent class's onInit method notificationServices.requestNotificationPermission(); // Request permission for notifications notificationServices.getDeviceToken().then((value) { // Retrieve the FCM device token print('Device Token: $value'); fcmToken(); // Call the function to send the FCM token to the server }); } // Function to handle FCM token retrieval and sending it to the server Future fcmToken() async { // Get SharedPreferences instance SharedPreferences prefs = await SharedPreferences.getInstance(); String? token = prefs.getString('token'); // Retrieve the saved user token final fcmToken = await NotificationServices().getDeviceToken(); // Get the FCM device token print('fcmToken: $fcmToken'); homeService.fcmToken({"fcmToken": fcmToken}, token); // Send the FCM token to the server } // Function to fetch user details from the server Future getUser() async { SharedPreferences prefs = await SharedPreferences.getInstance(); String? token = prefs.getString('token'); // Create an instance of HomeService HomeService homeService = HomeService(); // Fetch user details using the token user = await homeService.getUser(token: token); if (user != null) { print(user); // For debugging, prints the user details } else { print('Failed to fetch user data'); } } }