This commit is contained in:
Hamza-Ayed
2024-10-05 10:25:13 +03:00
parent 7fbfefdcb2
commit 3e88059166
9 changed files with 103 additions and 55 deletions

View File

@@ -133,30 +133,19 @@ class FirebaseMessagesController extends GetxController {
isLoading = true;
try {
var res = await http.post(
Uri.parse(AppLink.getAllTokenDrivers),
Uri.parse(AppLink.getAllTokenPassengers),
headers: {
'Authorization':
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
body: {
'page': page.toString(),
},
body: {},
);
var jsonResponse = jsonDecode(res.body);
if (jsonResponse['status'] == 'success') {
var newData = jsonResponse['data'] as List;
if (page == 1) {
dataTokensPassenger.clear();
tokensPassengers.clear();
}
dataTokensPassenger.addAll(newData);
for (var item in newData) {
tokensPassengers.add(item['token']);
}
currentPagePassenger = int.parse(jsonResponse['currentPage']);
totalPagesPassenger = jsonResponse['totalPages'];
box.write(BoxName.tokensPassengers, tokensPassengers);
box.write(BoxName.tokensPassengers, jsonResponse);
// Log.print(
// 'box.write(BoxName.tokensPassenger: ${box.read(BoxName.tokensPassengers)}');
} else {
Get.defaultDialog(
title: "Warning", middleText: "No more data available");
@@ -195,15 +184,15 @@ class FirebaseMessagesController extends GetxController {
isSendingNotificationsPassenger = true;
currentPage = 1;
while (currentPagePassenger <= totalPagesPassenger) {
await getAllTokenPassenger(page: currentPagePassenger);
await NotificationController().sendNotificationPassengers();
print(tokensPassengers);
if (currentPagePassenger < totalPagesPassenger) {
await Future.delayed(const Duration(seconds: 3));
}
currentPagePassenger++;
}
// while (currentPagePassenger <= totalPagesPassenger) {
await getAllTokenPassenger();
await NotificationController().sendNotificationPassengers();
// print(tokensPassengers);
// if (currentPagePassenger < totalPagesPassenger) {
// await Future.delayed(const Duration(seconds: 3));
// }
// currentPagePassenger++;
// }
isSendingNotificationsPassenger = false;
Get.snackbar("Success", "All notifications sent!");
@@ -224,7 +213,7 @@ class FirebaseMessagesController extends GetxController {
for (var i = 0; i < dataTokens.length; i++) {
tokensPassengers.add(jsonResponse['data'][i]['token']);
}
box.write(BoxName.tokensPassengers, tokensPassengers);
box.write(BoxName.tokensPassengers, jsonResponse['data']);
} else {
Get.defaultDialog(title: "Warning", middleText: "Server Error");
}
@@ -638,6 +627,7 @@ class FirebaseMessagesController extends GetxController {
);
if (response.statusCode == 200) {
SnackBar(content: Text('${response.statusCode}'));
print(
'Notification sent successfully. Status code: ${response.statusCode}');
// print('Response body: ${response.body}');

View File

@@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
@@ -284,30 +285,41 @@ class CRUD {
required String link,
Map<String, dynamic>? payload,
}) async {
// String? basicAuthCredentials =
// await storage.read(key: BoxName.basicAuthCredentials);
var url = Uri.parse(
link,
);
var response = await http.post(
url,
body: payload,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
'Authorization':
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
);
try {
var url = Uri.parse(link);
var response = await http.post(
url,
body: payload,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
'Authorization':
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {
return response.body;
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {
return response.body;
} else {
return jsonData['status'];
}
} else {
return (jsonData['status']);
// Log non-fatal errors to Crashlytics
await FirebaseCrashlytics.instance.log("Failed API request :$link");
FirebaseCrashlytics.instance.recordError(
Exception('Error: ${response.statusCode}'),
null,
reason: 'Failed HTTP POST request',
);
return response.statusCode;
}
} else {
return response.statusCode;
} catch (e, stackTrace) {
// Log error to Crashlytics
await FirebaseCrashlytics.instance
.recordError(e, stackTrace, reason: 'Exception in post request');
return 'Error occurred';
}
}

View File

@@ -126,12 +126,37 @@ class NotificationController extends GetxController {
confirm: MyElevatedButton(
title: 'send'.tr,
onPressed: () async {
tokensPassengers = box.read(BoxName.tokensPassengers);
for (var i = 0; i < tokensPassengers.length; i++) {
if (formKey.currentState!.validate()) {
FirebaseMessagesController().sendNotificationToAnyWithoutData(
title.text, body.text, tokensPassengers[i], 'order.wav');
// tokensPassengers = box.read(BoxName.tokensPassengers);
var tokensPassengersData =
box.read(BoxName.tokensPassengers)['data'];
// Debug print to check structure of the 'data' field
print('Tokens Passengers Data: $tokensPassengersData');
if (tokensPassengersData is List) {
for (var i = 0; i < tokensPassengersData.length; i++) {
if (formKey.currentState!.validate()) {
var res = await CRUD()
.post(link: AppLink.addNotificationPassenger, payload: {
"passenger_id": tokensPassengersData[i]['id'].toString(),
"title": title.text,
"body": body.text,
});
Log.print('res: ${res}');
FirebaseMessagesController()
.sendNotificationToAnyWithoutData(
title.text,
body.text,
tokensPassengersData[i]['token']
.toString(), // Access token correctly
'order.wav',
);
}
}
Get.back();
} else {
// Handle the case where 'data' is not a list
print('Data is not a list: $tokensPassengersData');
}
}),
cancel: MyElevatedButton(

BIN
lib/env.zip Normal file

Binary file not shown.

View File

@@ -1,6 +1,7 @@
import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -46,7 +47,8 @@ void main() async {
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
}
} // Enable Crashlytics collection
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
runApp(const MainApp());
}

View File

@@ -232,8 +232,8 @@ class StaticDash extends StatelessWidget {
isStepLineChart: true,
spots: staticController.chartDataRides,
isCurved: true,
color: Colors
.deepPurpleAccent, // Custom color
color: const Color.fromARGB(
255, 84, 181, 182), // Custom color
barWidth: 3, // Thinner line
dotData: const FlDotData(
show: