import 'package:cheminova/models/user_model.dart'; import 'package:cheminova/utils/api_urls.dart'; import 'package:cheminova/utils/common_api_service.dart'; import 'package:cheminova/utils/show_snackbar.dart'; class HomeService { // Function to fetch user details from the API Future getUser({String? token}) async { try { // Making a GET request to fetch user profile data final response = await commonApiService( method: "GET", url: ApiUrls.profileUrl, additionalHeaders: { // Pass the token here 'Authorization': 'Bearer $token', }, fromJson: (json) { // Callback to parse the JSON response into a UserModel if (json['user'] != null) { // Parse the user data from the API response return UserModel.fromJson( json['user']); // Convert JSON to UserModel } return json as UserModel; // Return the response as UserModel if no 'user' key found }, ); return response; } catch (e) { print(e.toString()); showSnackbar(e.toString()); // Optional: show error using a Snackbar return null; } } // Function to send FCM token to the server Future?> fcmToken(Map data, String? token) async { try { final response = await commonApiService( // Making a POST request to send the FCM token url: ApiUrls.fcmUrl, method: 'POST', body: data, // Body data to be sent in the request fromJson: (json) => json as String, // Just return the string response additionalHeaders: { // Pass the token here 'Authorization': 'Bearer $token', // Bearer token for authenticated requests }, ); if (response != null) { // Since the response is a string, wrap it in a Map to avoid type issues return { 'message': response }; // Return the response in a map with 'message' as the key } return null; } catch (e) { showSnackbar(e.toString()); // Handle any errors return null; } } }