10/5/1
This commit is contained in:
@@ -133,30 +133,19 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
isLoading = true;
|
isLoading = true;
|
||||||
try {
|
try {
|
||||||
var res = await http.post(
|
var res = await http.post(
|
||||||
Uri.parse(AppLink.getAllTokenDrivers),
|
Uri.parse(AppLink.getAllTokenPassengers),
|
||||||
headers: {
|
headers: {
|
||||||
'Authorization':
|
'Authorization':
|
||||||
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
|
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
|
||||||
},
|
},
|
||||||
body: {
|
body: {},
|
||||||
'page': page.toString(),
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
|
||||||
var jsonResponse = jsonDecode(res.body);
|
var jsonResponse = jsonDecode(res.body);
|
||||||
if (jsonResponse['status'] == 'success') {
|
if (jsonResponse['status'] == 'success') {
|
||||||
var newData = jsonResponse['data'] as List;
|
box.write(BoxName.tokensPassengers, jsonResponse);
|
||||||
if (page == 1) {
|
// Log.print(
|
||||||
dataTokensPassenger.clear();
|
// 'box.write(BoxName.tokensPassenger: ${box.read(BoxName.tokensPassengers)}');
|
||||||
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);
|
|
||||||
} else {
|
} else {
|
||||||
Get.defaultDialog(
|
Get.defaultDialog(
|
||||||
title: "Warning", middleText: "No more data available");
|
title: "Warning", middleText: "No more data available");
|
||||||
@@ -195,15 +184,15 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
isSendingNotificationsPassenger = true;
|
isSendingNotificationsPassenger = true;
|
||||||
currentPage = 1;
|
currentPage = 1;
|
||||||
|
|
||||||
while (currentPagePassenger <= totalPagesPassenger) {
|
// while (currentPagePassenger <= totalPagesPassenger) {
|
||||||
await getAllTokenPassenger(page: currentPagePassenger);
|
await getAllTokenPassenger();
|
||||||
await NotificationController().sendNotificationPassengers();
|
await NotificationController().sendNotificationPassengers();
|
||||||
print(tokensPassengers);
|
// print(tokensPassengers);
|
||||||
if (currentPagePassenger < totalPagesPassenger) {
|
// if (currentPagePassenger < totalPagesPassenger) {
|
||||||
await Future.delayed(const Duration(seconds: 3));
|
// await Future.delayed(const Duration(seconds: 3));
|
||||||
}
|
// }
|
||||||
currentPagePassenger++;
|
// currentPagePassenger++;
|
||||||
}
|
// }
|
||||||
|
|
||||||
isSendingNotificationsPassenger = false;
|
isSendingNotificationsPassenger = false;
|
||||||
Get.snackbar("Success", "All notifications sent!");
|
Get.snackbar("Success", "All notifications sent!");
|
||||||
@@ -224,7 +213,7 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
for (var i = 0; i < dataTokens.length; i++) {
|
for (var i = 0; i < dataTokens.length; i++) {
|
||||||
tokensPassengers.add(jsonResponse['data'][i]['token']);
|
tokensPassengers.add(jsonResponse['data'][i]['token']);
|
||||||
}
|
}
|
||||||
box.write(BoxName.tokensPassengers, tokensPassengers);
|
box.write(BoxName.tokensPassengers, jsonResponse['data']);
|
||||||
} else {
|
} else {
|
||||||
Get.defaultDialog(title: "Warning", middleText: "Server Error");
|
Get.defaultDialog(title: "Warning", middleText: "Server Error");
|
||||||
}
|
}
|
||||||
@@ -638,6 +627,7 @@ class FirebaseMessagesController extends GetxController {
|
|||||||
);
|
);
|
||||||
|
|
||||||
if (response.statusCode == 200) {
|
if (response.statusCode == 200) {
|
||||||
|
SnackBar(content: Text('${response.statusCode}'));
|
||||||
print(
|
print(
|
||||||
'Notification sent successfully. Status code: ${response.statusCode}');
|
'Notification sent successfully. Status code: ${response.statusCode}');
|
||||||
// print('Response body: ${response.body}');
|
// print('Response body: ${response.body}');
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
@@ -284,30 +285,41 @@ class CRUD {
|
|||||||
required String link,
|
required String link,
|
||||||
Map<String, dynamic>? payload,
|
Map<String, dynamic>? payload,
|
||||||
}) async {
|
}) async {
|
||||||
// String? basicAuthCredentials =
|
try {
|
||||||
// await storage.read(key: BoxName.basicAuthCredentials);
|
var url = Uri.parse(link);
|
||||||
var url = Uri.parse(
|
var response = await http.post(
|
||||||
link,
|
url,
|
||||||
);
|
body: payload,
|
||||||
var response = await http.post(
|
headers: {
|
||||||
url,
|
"Content-Type": "application/x-www-form-urlencoded",
|
||||||
body: payload,
|
'Authorization':
|
||||||
headers: {
|
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
|
||||||
"Content-Type": "application/x-www-form-urlencoded",
|
},
|
||||||
'Authorization':
|
);
|
||||||
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
var jsonData = jsonDecode(response.body);
|
var jsonData = jsonDecode(response.body);
|
||||||
if (response.statusCode == 200) {
|
|
||||||
if (jsonData['status'] == 'success') {
|
if (response.statusCode == 200) {
|
||||||
return response.body;
|
if (jsonData['status'] == 'success') {
|
||||||
|
return response.body;
|
||||||
|
} else {
|
||||||
|
return jsonData['status'];
|
||||||
|
}
|
||||||
} else {
|
} 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 {
|
} catch (e, stackTrace) {
|
||||||
return response.statusCode;
|
// Log error to Crashlytics
|
||||||
|
await FirebaseCrashlytics.instance
|
||||||
|
.recordError(e, stackTrace, reason: 'Exception in post request');
|
||||||
|
return 'Error occurred';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -126,12 +126,37 @@ class NotificationController extends GetxController {
|
|||||||
confirm: MyElevatedButton(
|
confirm: MyElevatedButton(
|
||||||
title: 'send'.tr,
|
title: 'send'.tr,
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
tokensPassengers = box.read(BoxName.tokensPassengers);
|
// tokensPassengers = box.read(BoxName.tokensPassengers);
|
||||||
for (var i = 0; i < tokensPassengers.length; i++) {
|
var tokensPassengersData =
|
||||||
if (formKey.currentState!.validate()) {
|
box.read(BoxName.tokensPassengers)['data'];
|
||||||
FirebaseMessagesController().sendNotificationToAnyWithoutData(
|
|
||||||
title.text, body.text, tokensPassengers[i], 'order.wav');
|
// 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(
|
cancel: MyElevatedButton(
|
||||||
|
|||||||
BIN
lib/env.zip
Normal file
BIN
lib/env.zip
Normal file
Binary file not shown.
@@ -1,6 +1,7 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:firebase_core/firebase_core.dart';
|
import 'package:firebase_core/firebase_core.dart';
|
||||||
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
@@ -46,7 +47,8 @@ void main() async {
|
|||||||
DeviceOrientation.portraitUp,
|
DeviceOrientation.portraitUp,
|
||||||
DeviceOrientation.portraitDown,
|
DeviceOrientation.portraitDown,
|
||||||
]);
|
]);
|
||||||
}
|
} // Enable Crashlytics collection
|
||||||
|
FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterError;
|
||||||
|
|
||||||
runApp(const MainApp());
|
runApp(const MainApp());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -232,8 +232,8 @@ class StaticDash extends StatelessWidget {
|
|||||||
isStepLineChart: true,
|
isStepLineChart: true,
|
||||||
spots: staticController.chartDataRides,
|
spots: staticController.chartDataRides,
|
||||||
isCurved: true,
|
isCurved: true,
|
||||||
color: Colors
|
color: const Color.fromARGB(
|
||||||
.deepPurpleAccent, // Custom color
|
255, 84, 181, 182), // Custom color
|
||||||
barWidth: 3, // Thinner line
|
barWidth: 3, // Thinner line
|
||||||
dotData: const FlDotData(
|
dotData: const FlDotData(
|
||||||
show:
|
show:
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import Foundation
|
|||||||
|
|
||||||
import file_selector_macos
|
import file_selector_macos
|
||||||
import firebase_core
|
import firebase_core
|
||||||
|
import firebase_crashlytics
|
||||||
import firebase_messaging
|
import firebase_messaging
|
||||||
import flutter_secure_storage_macos
|
import flutter_secure_storage_macos
|
||||||
import google_sign_in_ios
|
import google_sign_in_ios
|
||||||
@@ -17,6 +18,7 @@ import url_launcher_macos
|
|||||||
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
||||||
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin"))
|
||||||
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin"))
|
||||||
|
FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin"))
|
||||||
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin"))
|
||||||
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
|
FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin"))
|
||||||
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
FLTGoogleSignInPlugin.register(with: registry.registrar(forPlugin: "FLTGoogleSignInPlugin"))
|
||||||
|
|||||||
16
pubspec.lock
16
pubspec.lock
@@ -313,6 +313,22 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.17.2"
|
version: "2.17.2"
|
||||||
|
firebase_crashlytics:
|
||||||
|
dependency: "direct main"
|
||||||
|
description:
|
||||||
|
name: firebase_crashlytics
|
||||||
|
sha256: "9897c01efaa950d2f6da8317d12452749a74dc45f33b46390a14cfe28067f271"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.5.7"
|
||||||
|
firebase_crashlytics_platform_interface:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: firebase_crashlytics_platform_interface
|
||||||
|
sha256: "16a71e08fbf6e00382816e1b13397898c29a54fa0ad969c2c2a3b82a704877f0"
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.6.35"
|
||||||
firebase_messaging:
|
firebase_messaging:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
|||||||
@@ -61,6 +61,7 @@ dependencies:
|
|||||||
url_launcher: ^6.2.6
|
url_launcher: ^6.2.6
|
||||||
# webview_flutter: ^4.7.0
|
# webview_flutter: ^4.7.0
|
||||||
googleapis_auth: ^1.6.0
|
googleapis_auth: ^1.6.0
|
||||||
|
firebase_crashlytics: ^3.5.7
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
|
|||||||
Reference in New Issue
Block a user