pd-android-app/lib/controller/home_service.dart
2025-02-06 15:44:18 +05:30

61 lines
1.8 KiB
Dart

import 'dart:convert';
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<UserModel?> getUser({String? token}) async {
try {
// Making a GET request to fetch user profile data
final response = await commonApiService<UserModel>(
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<Map<String, dynamic>?> fcmToken(Map<String, dynamic> data, String? token) async {
try {
final response = await commonApiService<Map<String, dynamic>>(
url: ApiUrls.fcmUrl,
method: 'POST',
body: data,
fromJson: (json) => json as Map<String, dynamic>, // Parse JSON response
additionalHeaders: {
'Authorization': 'Bearer $token',
},
);
if (response != null) {
return response; // Return parsed response
}
return null;
} catch (e) {
showSnackbar(e.toString());
return null;
}
}
}