This commit is contained in:
Hamza-Ayed
2024-07-10 17:19:08 +03:00
parent 71e53b3d8d
commit 43eb600fbf
23 changed files with 181 additions and 141 deletions

View File

@@ -32,7 +32,7 @@ def keystorePropertiesFile = rootProject.file('key.properties')
android {
namespace "com.sefer_driver"
compileSdkVersion 33
compileSdkVersion 34
ndkVersion flutter.ndkVersion
compileOptions {
@@ -54,9 +54,9 @@ android {
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 23
targetSdkVersion 33
versionCode 52
versionName '1.5.52'
targetSdkVersion 34
versionCode 54
versionName '1.5.54'
// manifestPlaceholders = [mapsApiKey: 'android/app/src/main/AndroidManifest.xml']
}

View File

@@ -9,7 +9,7 @@ buildscript {
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.4.2'
// END: FlutterFire Configuration
classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.android.tools.build:gradle:8.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

View File

@@ -1,4 +1,7 @@
# org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx4096m
org.gradle.jvmargs=-Xmx4096m
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false

View File

@@ -4,4 +4,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip

View File

@@ -21,7 +21,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>47</string>
<string>48</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
@@ -36,7 +36,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>4.0.47</string>
<string>4.0.48</string>
<key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string>
<key>GMSApiKey</key>

View File

@@ -1,74 +1,73 @@
import 'package:secure_string_operations/secure_string_operations.dart';
import '../env/env.dart';
import 'char_map.dart';
import 'credential.dart';
class AK {
static final AC a = AC();
static final String publishableKey =
AC().r(AC().r(AC().r(Env.stripePublishableKe, cn), cC), cs);
static final String secretKey = a.r(a.r(a.r(Env.secretKey, cn), cC), cs);
X.r(X.r(X.r(Env.stripePublishableKe, cn), cC), cs);
static final String secretKey = X.r(X.r(X.r(Env.secretKey, cn), cC), cs);
static final String basicAuthCredentials =
a.r(a.r(a.r(Env.basicAuthCredentials, cn), cC), cs);
X.r(X.r(X.r(Env.basicAuthCredentials, cn), cC), cs);
static final String accountSIDTwillo =
a.r(a.r(a.r(Env.accountSIDTwillo, cn), cC), cs);
static final String serverAPI = a.r(a.r(a.r(Env.serverAPI, cn), cC), cs);
static final String mapAPIKEY = a.r(a.r(a.r(Env.mapAPIKEY, cn), cC), cs);
X.r(X.r(X.r(Env.accountSIDTwillo, cn), cC), cs);
static final String serverAPI = X.r(X.r(X.r(Env.serverAPI, cn), cC), cs);
static final String mapAPIKEY = X.r(X.r(X.r(Env.mapAPIKEY, cn), cC), cs);
static final String twilloRecoveryCode =
a.r(a.r(a.r(Env.twilloRecoveryCode, cn), cC), cs);
X.r(X.r(X.r(Env.twilloRecoveryCode, cn), cC), cs);
static final String authTokenTwillo =
a.r(a.r(a.r(Env.authTokenTwillo, cn), cC), cs);
static final String chatGPTkey = a.r(a.r(a.r(Env.chatGPTkey, cn), cC), cs);
X.r(X.r(X.r(Env.authTokenTwillo, cn), cC), cs);
static final String chatGPTkey = X.r(X.r(X.r(Env.chatGPTkey, cn), cC), cs);
static final String transactionCloude =
a.r(a.r(a.r(Env.transactionCloude, cn), cC), cs);
static final String visionApi = a.r(a.r(a.r(Env.visionApi, cn), cC), cs);
X.r(X.r(X.r(Env.transactionCloude, cn), cC), cs);
static final String visionApi = X.r(X.r(X.r(Env.visionApi, cn), cC), cs);
static final String chatGPTkeySefer =
a.r(a.r(a.r(Env.chatGPTkeySefer, cn), cC), cs);
X.r(X.r(X.r(Env.chatGPTkeySefer, cn), cC), cs);
static final String chatGPTkeySeferNew =
a.r(a.r(a.r(Env.chatGPTkeySeferNew, cn), cC), cs);
X.r(X.r(X.r(Env.chatGPTkeySeferNew, cn), cC), cs);
static final String serverPHP = Env.serverPHP;
static final String llamaKey = a.r(a.r(a.r(Env.llamaKey, cn), cC), cs);
static final String cohere = a.r(a.r(a.r(Env.cohere, cn), cC), cs);
static final String claudeAiAPI = a.r(a.r(a.r(Env.claudeAiAPI, cn), cC), cs);
static final String llamaKey = X.r(X.r(X.r(Env.llamaKey, cn), cC), cs);
static final String cohere = X.r(X.r(X.r(Env.cohere, cn), cC), cs);
static final String claudeAiAPI = X.r(X.r(X.r(Env.claudeAiAPI, cn), cC), cs);
static final String payPalClientId =
a.r(a.r(a.r(Env.payPalClientId, cn), cC), cs);
X.r(X.r(X.r(Env.payPalClientId, cn), cC), cs);
static final String payPalSecret =
a.r(a.r(a.r(Env.payPalSecret, cn), cC), cs);
static final String geminiApi = a.r(a.r(a.r(Env.geminiApi, cn), cC), cs);
static final String agoraAppId = a.r(a.r(a.r(Env.agoraAppId, cn), cC), cs);
X.r(X.r(X.r(Env.payPalSecret, cn), cC), cs);
static final String geminiApi = X.r(X.r(X.r(Env.geminiApi, cn), cC), cs);
static final String agoraAppId = X.r(X.r(X.r(Env.agoraAppId, cn), cC), cs);
static final String agoraAppCertificate =
a.r(a.r(a.r(Env.agoraAppCertificate, cn), cC), cs);
X.r(X.r(X.r(Env.agoraAppCertificate, cn), cC), cs);
static final String payPalClientIdLive =
a.r(a.r(a.r(Env.payPalClientIdLive, cn), cC), cs);
X.r(X.r(X.r(Env.payPalClientIdLive, cn), cC), cs);
static final String payPalSecretLive =
a.r(a.r(a.r(Env.payPalSecretLive, cn), cC), cs);
X.r(X.r(X.r(Env.payPalSecretLive, cn), cC), cs);
static final String integrationIdPayMob =
a.r(a.r(a.r(Env.integrationIdPayMob, cn), cC), cs);
X.r(X.r(X.r(Env.integrationIdPayMob, cn), cC), cs);
static final String passwordPayMob =
a.r(a.r(a.r(Env.passwordPayMob, cn), cC), cs);
X.r(X.r(X.r(Env.passwordPayMob, cn), cC), cs);
static final String usernamePayMob =
a.r(a.r(a.r(Env.usernamePayMob, cn), cC), cs);
X.r(X.r(X.r(Env.usernamePayMob, cn), cC), cs);
static final String payMobApikey =
a.r(a.r(a.r(Env.payMobApikey, cn), cC), cs);
X.r(X.r(X.r(Env.payMobApikey, cn), cC), cs);
static final String integrationIdPayMobWallet =
a.r(a.r(a.r(Env.integrationIdPayMobWallet, cn), cC), cs);
X.r(X.r(X.r(Env.integrationIdPayMobWallet, cn), cC), cs);
static final String smsPasswordEgypt =
a.r(a.r(a.r(Env.smsPasswordEgypt, cn), cC), cs);
X.r(X.r(X.r(Env.smsPasswordEgypt, cn), cC), cs);
static final String ocpApimSubscriptionKey = Env.ocpApimSubscriptionKey;
static final String chatGPTkeySeferNew4 =
a.r(a.r(a.r(Env.chatGPTkeySeferNew4, cn), cC), cs);
X.r(X.r(X.r(Env.chatGPTkeySeferNew4, cn), cC), cs);
static final String anthropicAIkeySeferNew =
a.r(a.r(a.r(Env.anthropicAIkeySeferNew, cn), cC), cs);
static final String llama3Key = a.r(a.r(a.r(Env.llama3Key, cn), cC), cs);
X.r(X.r(X.r(Env.anthropicAIkeySeferNew, cn), cC), cs);
static final String llama3Key = X.r(X.r(X.r(Env.llama3Key, cn), cC), cs);
static final String payMobOutClientSecrret =
a.r(a.r(a.r(Env.payMobOutClientSecrret, cn), cC), cs);
X.r(X.r(X.r(Env.payMobOutClientSecrret, cn), cC), cs);
static final String payMobOutClient_id =
a.r(a.r(a.r(Env.payMobOutClient_id, cn), cC), cs);
X.r(X.r(X.r(Env.payMobOutClient_id, cn), cC), cs);
static final String payMobOutPassword =
a.r(a.r(a.r(Env.payMobOutPassword, cn), cC), cs);
X.r(X.r(X.r(Env.payMobOutPassword, cn), cC), cs);
static final String payMobOutUserName =
a.r(a.r(a.r(Env.payMobOutUserName, cn), cC), cs);
X.r(X.r(X.r(Env.payMobOutUserName, cn), cC), cs);
///////////
static final String keyOfApp = a.r(a.r(a.r(Env.keyOfApp, cn), cC), cs);
static final String keyOfApp = X.r(X.r(X.r(Env.keyOfApp, cn), cC), cs);
}

View File

@@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:crypto/crypto.dart';
import 'package:secure_string_operations/secure_string_operations.dart';
import '../controller/functions/crud.dart';
import '../main.dart';
@@ -16,7 +17,7 @@ class AC {
Map<String, dynamic> jsonData = {};
for (var i = 0; i < decod['message'].length; i++) {
String h = decod['message'][i]['hashed_key'].toString();
String retrievedString = r(r(r(h, cn), cC), cs);
String retrievedString = X.r(X.r(X.r(h, cn), cC), cs);
await storage.write(
key: decod['message'][i]['name'].toString(),
@@ -99,46 +100,4 @@ class AC {
return q;
}
String c(String a, Map<String, String> b) {
StringBuffer c = StringBuffer();
c.write(a);
String d = "Bl";
c.write(b[d] ?? d);
StringBuffer e = StringBuffer();
String f = c.toString();
for (int g = 0; g < f.length; g++) {
String h = f[g];
e.write(b[h] ?? h);
}
return e.toString();
}
String r(String a, Map<String, String> b) {
StringBuffer c = StringBuffer();
String d = "Bl";
int e = d.length;
for (int f = 0; f < a.length; f++) {
String g = a[f];
String h = b.keys.firstWhere(
(i) => b[i] == g,
orElse: () => g,
);
c.write(h);
}
String j = c.toString();
if (j.endsWith(d)) {
j = j.substring(0, j.length - e);
}
return j;
}
}

View File

@@ -1,5 +1,4 @@
import 'dart:convert';
import 'dart:math';
import 'package:SEFER/constant/colors.dart';
import 'package:SEFER/controller/functions/location_background_controller.dart';
@@ -11,9 +10,7 @@ import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/links.dart';
import 'package:SEFER/controller/functions/crud.dart';
import 'package:SEFER/controller/functions/secure_storage.dart';
import 'package:SEFER/main.dart';
import 'package:SEFER/views/auth/captin/verify_email_captain.dart';
import 'package:SEFER/views/home/Captin/home_captain/home_captin.dart';
import 'package:location/location.dart';

View File

@@ -106,6 +106,7 @@ class RegisterCaptainController extends GetxController {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': '+2${phoneController.text}',
'token_code': randomNumber.toString(),
"driverId": box.read(BoxName.driverID)
});
await smsEgyptController.sendSmsEgypt(
@@ -119,6 +120,7 @@ class RegisterCaptainController extends GetxController {
await CRUD().post(link: AppLink.sendVerifyOtpMessage, payload: {
'phone_number': '+2${phoneController.text}',
'token_code': randomNumber.toString(),
"driverId": box.read(BoxName.driverID)
});
await smsEgyptController.sendSmsEgypt(

View File

@@ -217,6 +217,9 @@ class CRUD {
'Basic ${base64Encode(utf8.encode(AK.basicAuthCredentials))}',
},
);
print(response.request);
print(response.body);
print(payload);
var jsonData = jsonDecode(response.body);
if (response.statusCode == 200) {
if (jsonData['status'] == 'success') {

View File

@@ -13,7 +13,6 @@ class SmsEgyptController extends GetxController {
var headers = {'Content-Type': 'application/json'};
Future<dynamic> sendSmsEgypt(String phone, otp) async {
print('password ==== ${AK.smsPasswordEgypt}');
var body = jsonEncode({
"username": AppInformation.appName,
"password": AK.smsPasswordEgypt, //'E)Pu=an/@Z',

View File

@@ -313,7 +313,12 @@ class HomeCaptainController extends GetxController {
payload: {'driverID': box.read(BoxName.driverID).toString()});
data = jsonDecode(res);
totalMoneyInSEFER = data['message'][0]['total_amount'];
totalMoneyInSEFER = data['message'][0]['total_amount'] ?? '0';
update();
}
void changeToAppliedRide(String status) {
box.write(BoxName.rideStatus, status);
update();
}

View File

@@ -222,6 +222,8 @@ class MapDriverController extends GetxController {
'driverGoToPassengerTime': DateTime.now().toString(),
'status': 'Applied'
});
// Get.find<HomeCaptainController>().changeToAppliedRide('Applied');
box.write(BoxName.rideStatus, 'Applied');
FirebaseMessagesController().sendNotificationToAnyWithoutData(
'DriverIsGoingToPassenger',
@@ -284,8 +286,11 @@ class MapDriverController extends GetxController {
remainingTimeInPassengerLocatioWait = 0;
timeWaitingPassenger = 0;
box.write(BoxName.statusDriverLocation, 'on');
box.write(BoxName.rideStatus, 'Begin'); //todo ride details
// box.write(BoxName.rideStatus, 'Begin'); //
// todo ride details
// Get.find<HomeCaptainController>().changeToAppliedRide('Begin');
box.write(BoxName.rideStatus, 'Begin');
// Get.find<HomeCaptainController>().update();
update();
await CRUD().post(link: AppLink.updateRides, payload: {
'id': rideId,
@@ -490,6 +495,8 @@ class MapDriverController extends GetxController {
isRideStarted = false;
isPriceWindow = false;
box.write(BoxName.rideStatus, 'Finished');
// Get.find<HomeCaptainController>().changeToAppliedRide('Finished');
// Get.find<HomeCaptainController>().update();
totalCost = price < 30
? carType != 'Comfort' && carType != 'Mashwari' && carType != 'Lady'
? '20'

View File

@@ -256,12 +256,13 @@ class MyTranslation extends Translations {
"التقاط صورة للجهة الخلفية من وثيقة الهوية الخاصة بك",
"ID Documents Front": "الوجه الأمامي لوثائق الهوية",
"First Name": "الاسم الأول",
"Press to hear": "اضغط للاستماع",
"CardID": "التقاط صورة للجهة الخلفية من وثيقة الهوية الخاصة بك",
"Full Name": "الاسم الكامل",
"Vehicle Details Front": "تفاصيل المركبة الأمامية",
"Plate Number": "رقم اللوحة",
"Owner Name": "اسم المالك",
"Vehicle Details Back": "تفاصيل السيارة مرة أخرى",
"Vehicle Details Back": "تفاصيل المركبة الخلفية",
"Make": "‏نوع السيارة",
"Model": "طراز السيارة:",
"Year": "السنة",
@@ -548,7 +549,7 @@ class MyTranslation extends Translations {
"Current Location": "الموقع الحالي",
"Add Location 1": "أضف الموقع 1",
"You must Verify email !.": "يجب التحقق من البريد الإلكتروني!",
"Cropper": "المحصاد",
"Cropper": "القص",
"Saved Sucssefully": "تم الحفظ بنجاح",
"Select Date": "اختر التاريخ",
"Birth Date": "تاريخ الميلاد",

View File

@@ -72,7 +72,7 @@ class EgyptCardAI extends StatelessWidget {
// controller.responseCriminalRecordEgypt
// .isNotEmpty
)
? Get.height * .5
? Get.height * .7
: Get.height * .85,
child: ListView(
children: [
@@ -1114,7 +1114,7 @@ Please fill in the JSON object with the extracted information, following these g
class VideoButton extends StatelessWidget {
final String videoUrl =
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"; // Replace with your video URL
"https://youtube.com/shorts/fC0RmYH5B_0?feature=share"; // Replace with your video URL
@override
Widget build(BuildContext context) {

View File

@@ -259,7 +259,7 @@ class HomeCaptain extends StatelessWidget {
Get.to(() => PassengerLocationMapPage(),
arguments: box.read(BoxName.rideArguments)),
Get.find<MapDriverController>()
.driverGoToPassenger()
.changeRideToBeginToPassenger()
}
: {
Get.to(() => PassengerLocationMapPage(),

View File

@@ -26,8 +26,8 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () {
// // AC credentials = AC();
//
// AC credentials = AC();
// // String apikey = AK.passwordPayMob;
// // String convertedStringN = credentials.c(
// // credentials.c(credentials.c(apikey, cs), cC), cn);
@@ -45,22 +45,26 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// // key.forEach((key, apiKey) {
// // Get.to(() => SmsSignupEgypt());
// // keys.forEach((key, apiKey) {
// // String retrievedStringS = credentials.r(
// // credentials.r(credentials.r(apiKey, cn), cC), cs);
// // String encryptedApiKey =
// // KeyEncryption.encryptKey(retrievedStringS);
// // print('$key=$encryptedApiKey');
// // String apikey = Env.basicAuthCredentials;
// // print('apikey: ${apikey}');
// // String retrievedStringS = credentials.r(
// // credentials.r(credentials.r(apikey, cn), cC), cs);
// // print('retrievedStringS: $retrievedStringS');
// // String encryptedApiKey =
// // X.c(X.c(X.c(retrievedStringS, cs), cC), cn);
// // print('encrypted $encryptedApiKey');
// // String decryptedApiKey =
// // KeyEncryption.decryptKey(encryptedApiKey);
// // X.r(X.r(X.r(encryptedApiKey, cn), cC), cs);
// // print('Decrypted API Key for : $decryptedApiKey');
// // if (decryptedApiKey == apiKey) {
// // print('Keys match for ');
// // if (decryptedApiKey == retrievedStringS) {
// // print('match ');
// // } else {
// // print('Keys do not match for ');
// // }
// // });
// // }
// // );
// },
// icon: const Icon(
// FontAwesome.map_signs,
@@ -68,9 +72,10 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// color: Colors.black,
// )),
// ),
// const SizedBox(
// height: 5,
// ),
const SizedBox(
height: 5,
),
AnimatedContainer(
duration: const Duration(microseconds: 200),
width: controller.widthMapTypeAndTraffic,
@@ -185,28 +190,15 @@ GetBuilder<HomeCaptainController> leftMainMenuCaptainIcons() {
// borderRadius: BorderRadius.circular(15)),
// child: IconButton(
// onPressed: () {
// AC credentials = AC();
// String apiKey = '';
// String convertedStringN = credentials.c(
// credentials.c(credentials.c(apiKey, cs), cC), cn);
//
// String retrievedStringS = credentials.r(
// credentials.r(credentials.r(convertedStringN, cn), cC),
// cs);
// //
// if (retrievedStringS == apiKey) {
// print('convertedStringN --- $convertedStringN');
// print('retrievedStringS ---$retrievedStringS');
// print('same');
// }
// },
// icon: const Icon(
// FontAwesome5.grin_tears,
// size: 29,
// color: AppColor.blueColor,
// print(box.read(BoxName.rideStatus));
// },
// icon: const Icon(
// FontAwesome5.grin_tears,
// size: 29,
// color: AppColor.blueColor,
// ),
// ),
// ),
// ),
],
)),
);

View File

@@ -3,17 +3,16 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart';
import 'package:SEFER/constant/box_name.dart';
import 'package:SEFER/constant/colors.dart';
import 'package:SEFER/constant/info.dart';
import 'package:SEFER/controller/firebase/firbase_messge.dart';
import 'package:SEFER/controller/home/captin/map_driver_controller.dart';
import 'package:SEFER/main.dart';
import 'package:SEFER/views/widgets/elevated_btn.dart';
import '../../../../constant/box_name.dart';
import '../../../../constant/style.dart';
import '../../../../controller/functions/launch.dart';
import '../home_captain/widget/call_page.dart';
import '../../../../main.dart';
class PassengerInfoWindow extends StatelessWidget {
const PassengerInfoWindow({
@@ -58,6 +57,13 @@ class PassengerInfoWindow extends StatelessWidget {
mainAxisAlignment:
MainAxisAlignment.spaceAround,
children: [
IconButton(
onPressed: () {
print(box
.read(BoxName.rideStatus));
},
icon: const Icon(Icons.add),
),
GestureDetector(
onTap: () async {
controller.isSocialPressed =

View File

@@ -1632,6 +1632,13 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.1.0"
secure_string_operations:
dependency: "direct main"
description:
path: secure_string_operations
relative: true
source: path
version: "1.0.0"
share:
dependency: "direct main"
description:

View File

@@ -10,6 +10,8 @@ environment:
dependencies:
flutter:
sdk: flutter
secure_string_operations:
path: ./secure_string_operations
cupertino_icons: ^1.0.2
firebase_messaging: ^14.6.7
firebase_core: ^2.15.0

View File

@@ -0,0 +1,47 @@
// File: lib/secure_string_operations.dart
library secure_string_operations;
class X {
static String c(String a, Map<String, String> b) {
StringBuffer c = StringBuffer();
c.write(a);
String d = "Bl";
c.write(b[d] ?? d);
StringBuffer e = StringBuffer();
String f = c.toString();
for (int g = 0; g < f.length; g++) {
String h = f[g];
e.write(b[h] ?? h);
}
return e.toString();
}
static String r(String a, Map<String, String> b) {
StringBuffer c = StringBuffer();
String d = "Bl";
int e = d.length;
for (int f = 0; f < a.length; f++) {
String g = a[f];
String h = b.keys.firstWhere(
(i) => b[i] == g,
orElse: () => g,
);
c.write(h);
}
String j = c.toString();
if (j.endsWith(d)) {
j = j.substring(0, j.length - e);
}
return j;
}
}

View File

@@ -0,0 +1,5 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages: {}
sdks:
dart: ">=2.12.0 <4.0.0"

View File

@@ -0,0 +1,6 @@
name: secure_string_operations
description: A package for secure string operations
version: 1.0.0
environment:
sdk: ">=2.12.0 <3.0.0"