Files
daily_mobileapp_merchant/lib/Controller/More/Notification/Notificationcontroller.dart
2026-05-27 10:35:09 +05:30

78 lines
1.9 KiB
Dart

import 'dart:convert';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
class NotificationController extends GetxController {
RxBool isLoading = false.obs;
RxList<NotificationModel> notifications = <NotificationModel>[].obs;
Future<void> fetchNotifications() async {
isLoading.value = true;
SharedPreferences prefs = await SharedPreferences.getInstance();
// SAFE READ → Handles int or string
dynamic t = prefs.get("tenantId");
dynamic l = prefs.get("locationId");
String tenantId = t?.toString() ?? "";
String locationId = l?.toString() ?? "";
final url =
"https://jupiter.nearle.app/live/api/v1/utils/gettenantnotifications/?tenantid=$tenantId&locationid=$locationId";
try {
var response = await http.get(Uri.parse(url));
print(url);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
if (data["status"] == true) {
notifications.value = (data["details"] as List)
.map((e) => NotificationModel.fromJson(e))
.toList();
}
}
} catch (e) {
print("Notification API Error: $e");
}
isLoading.value = false;
}
@override
void onInit() {
fetchNotifications(); // auto load on page open
super.onInit();
}
}
class NotificationModel {
final int notificationid;
final String title;
final String message;
final String notificationdate;
NotificationModel({
required this.notificationid,
required this.title,
required this.message,
required this.notificationdate,
});
factory NotificationModel.fromJson(Map<String, dynamic> json) {
return NotificationModel(
notificationid: json["notificationid"],
title: json["title"] ?? "",
message: json["message"] ?? "",
notificationdate: json["notificationdate"] ?? "",
);
}
}