diff --git a/.env b/.env
index 7a428fa..502749d 100644
--- a/.env
+++ b/.env
@@ -1,57 +1,57 @@
-basicAuthCredentials=wqnmqqsjyvwv:nqrYJP@1737XrXlBl
-basicCompareFaces=zjujluqfj:nqrYjp@1737XrXlBl
+basicAuthCredentials=wqnmqqsjyvwjv:nqrYJP@1737XrXlBl
+basicCompareFaces=zjujluqfpj:nqrYjp@1737XrXlBl
basicCompareFacesURL='https://face-detect-f6924392c4c7.herokuapp.com/compare_faces'
-accountSIDTwillo=QFx0qy456juj3839xuy2194q629q1fj0y7XrXlBl
+accountSIDTwillo=QFx0qy456juj383n9xuy2194q629q1fj0y7XrXlBl
serverAPI=QQQQobSrrFi:QVQ87xU7zwCvmZzZdaxuS2f23Y4mz7MzyOzr8od2br6KYyeFaTVLG3K3hx5ZaUyx7eYvAYpAVdKk-286NTRi3zs9iSOnXtXRIxswg3KecBmsl3VxJ9wO-vIpwu4Pv7dkHkXniuxMSDgWXrXlBl
mapAPIKEY=QOmqZsFsutLDCtZCRIUAZAkB5v6AMkKEPMbJGa3XrXlBl
-twilloRecoveryCode=CAU79DHPH1BE9PUH4ETXTSXZXrXlBl
-apiKeyHere=g_WNUb5L-tripz7-F8oHpUmgIzH7ETeH9xZ8RwGG9_G8zX9A
-authTokenTwillo=70u98ju0214xx4q0u74028u021u4qu65XrXlBl
-chatGPTkey=zg-4C26q4SYBKQeHZDqkWowC9XrxgUEfUy9JRw2rm6Q2adb3kjwXrXlBl
-transactionCloude=Qhcwilomqcoib:QVO_JNYED2XWA26YXKC2TP:YK1DVH6SJB31N3PE1UXrXlBl
+twilloRecoveryCode=CAU79DHPH1BjE9PUH4ETXTSXZXrXlBl
+apiKeyHere=g_WNUb5L-tripz7-F8omHpUmgIzH7ETeH9xZ8RwGG9_G8zX9A
+authTokenTwillo=70u98ju0214oxx4q0u74028u021u4qu65XrXlBl
+chatGPTkey=zg-4C26q4SYgBKQeHZDqkWowC9XrxgUEfUy9JRw2rm6Q2adb3kjwXrXlBl
+transactionCloude=Qhcwuilomqcoib:QVO_JNYED2XWA26YXKC2TP:YK1DVH6SJB31N3PE1UXrXlBl
visionApi=3pALsqSSYTvzp69Q5FMIgbzjG6Z1zktJXrXlBl
-chatGPTkeySefer=zg-IiR34ooza3Yvhvb9rZk1C9XrxgUE0l8jRRZrHj3Qe5QXPlqVXrXlBl
-chatGPTkeySeferNew=zg-Z4AJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
-secretKey=zg_ropj_57Iiv6MFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
-stripe_publishableKe=vg_ropj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
-llamaKey=RR-EuyoFDUvfRDBj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
+chatGPTkeySefer=zg-IiR3i4ooza3Yvhvb9rZk1C9XrxgUE0l8jRRZrHj3Qe5QXPlqVXrXlBl
+chatGPTkeySeferNew=zg-Z4oAJcAROgNXjgrEIU8fKC9XrxgUE4Qtrrlq1yiux0jL3dITSXrXlBl
+secretKey=zg_ropj_57Iiv6pMFCBFq3C2n6IXlmjykpxDmW93SW3vvXh68UA9T5FORTWgWsT37StKsOPdwDdsy8qR9srMUluahs3nPHvgBa33tGk90vV5XrXlBl
+stripe_publishableKe=vg_propj_57Iiv6MFCBFq3C2n6kNJnZByV6nuDtXe9IjEPOfhmpDtWmt3MLR0gQpiHcQmAFMUPrZc3QiCDjxBZLbxDC3efxWxz33bWH1ZgrsXrXlBl
+llamaKey=RR-EuyoFDUvfRDBoj46fZKAtKJ3voM8Mt768cPeJV7GNdAkPTKdY8Odm9n4ggGqI5GyoXrXlBl
serverPHP=https://api.sefer.live/sefer
seferAlexandriaServer=https://seferalexandria.site/sefer
seferPaymentServer=https://seferpw.shop/sefer
# seferCairoServer=https://sefer.click/sefer
seferCairoServer=https://server.sefer.live/sefer.click/sefer
seferGizaServer=https://gizasefer.online/sefer
-whatappID=369939736211879
-whatsapp=EAAOtbZBSUK74BO6yE1QwIBsRCjPDANdum66xap0ZA7OZA8LqEu8MZAts1kwr12eRiNXtvpJ2ZAFSY5dw3KVSyrUuH8boLjynxdFI4Gh1Q7BCHx275X2uZBwKWZCSrsVN17i6mZAFNYYd25sQv0ZBomeTk02ZCIJot4UqWxK9ZBvxsq1k2yS7lD2NsjZB5EHbpaYGLzxFJ2FCCSX6iHyKXab6ckfK7m19wo77in7Dl3YZD
-cohere=Aulwd8y5SPWos0hJhG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
-claudeAiAPI=zg-qbc-qvo39-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
-payPalClientId=QALymfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
-payPalClientIdLive=QZFjAoZfGtngNserll6r3cC56Xl1sVLQkn5dMbyebhzJY59EQ3hz7YxaEqEDYPTUFcQWqvePaQ5UJJVRXrXlBl
+whatappID=3699397362811879
+whatsapp=EAAOtbZBSUK74BOzW9yb74EgApQYtI88nYtE9jQi9QnLGpw3FQpc5dxIlDgVJzcMywEBqNYf3s8pkk6cZB5Q0tkKuSOZBsOvMZA3Tcth0IlBHSaMVtcRZCsaTKNSUpfLRGRb0rhLezNFllpYBgmnfbhUazSZBYXdr40nmN4QEgweK2eqYQnTTNuryTOyBkKZB1MXMw6U7QnTRQDxHbUVlqgIRTrhaooZD
+cohere=Aulwd8y5SPWos0hJhlG0toUf8gOhUUrpf5Q2TPmVGXrXlBl
+claudeAiAPI=zg-qbc-qvo39l-xWOxIGwWTOzCFBnIYSKKhfyz_KVAvrH-6_4ZEJL68G_QBH26oeTOMMoQug9KuOjjKSP_A4S3SUDlbxR9duVzoQ-MkX_UQQQXrXlBl
+payPalClientId=QALymlfNI5Tzt4s-ysoz6vD4_nqX0SUtkC_qYV-Ugk5gaM_8Z-kg4L53k8Uux_4jEWXDkNpXGSWPpIzDFXrXlBl
+payPalClientIdLive=QZFkjAoZfGtngNserll6r3cC56Xl1sVLQkn5dMbyebhzJY59EQ3hz7YxaEqEDYPTUFcQWqvePaQ5UJJVRXrXlBl
payPalSecret=JBAAvqJQGUsKD0Zjh4KjeczxfBFx-38SdlbIS56VRM8NDfe6mjMeZJhNLJek5XgQCqKCHtRf6MjRy-f8XrXlBl
-payPalSecretLive=JQDATqnDfiFpEAN60KB4pGpDaJjyqBAd9jxMBPpzWU1P1k3H1jZhQjn73EHsKQna74P8p98hgOnMaWPWXrXlBl
-geminiApi=QOmqZsQYm08vOqjI7klVJfvP4WBFEoemjgy396iXrXlBl
-geminiApiMasa=QOmqZsQIdM4BRsKmaDJOP7dZp5-c6NWfch7PAlQXrXlBl
-agoraAppId=71880f2j636509j24y5294480y30u848XrXlBl
-agoraAppCertificate=j17q944u49390q758u1649448q2y6xfuXrXlBl
+payPalSecretLive=JQDATqkknDfiFpEAN60KB4pGpDaJjyqBAd9jxMBPpzWU1P1k3H1jZhQjn73EHsKQna74P8p98hgOnMaWPWXrXlBl
+geminiApi=QOmqZsQYm08vlOqjI7klVJfvP4WBFEoemjgy396iXrXlBl
+geminiApiMasa=QOmqZsQIpdM4BRsKmaDJOP7dZp5-c6NWfch7PAlQXrXlBl
+agoraAppId=71880f2j636o509j24y5294480y30u848XrXlBl
+agoraAppCertificate=j17q944u49390jhq758u1649448q2y6xfuXrXlBl
usernamePayMob=37319104052XrXlBl
-passwordPayMob='g@nkD2#99!hD_.wXrXlBl'
-integrationIdPayMob=0237730XrXlBl
-payMobApikey='MDrGqKEWS1rVqHvEPDvPjJ7vZDBExrO7S3BEBgrlfUwTA3i5RnP5ZnvoL3M2S9rEBgrlNTdexH5pTPf7NJrvy1reZJv1Tn7zf7vTIDywjHg1C7Ley38HTDyNA3v7TPfdxJrax1rwPmPtMJyzqKEYZeghq3MuLUrFH3A1AgHcH15CZ9UaZTLOxnw0BTdzHHrBArisZerUMUUzZ1BnBeEijHvNjYLnS1BUICMhSmPhA15ifHyVqKEMHWyKLbyuIPvcH9UeL3vZyDf=cvcXrXlBlbbbbb'
-integrationIdPayMobWallet=0237739XrXlBl
+passwordPayMob='g@nkD2#99k!hD_.wXrXlBl'
+integrationIdPayMob=0237630XrXlBl
+payMobApikey='MDrGqKEWS1rVqhjggHvEPDvPjJ7vZDBExrO7S3BEBgrlfUwTA3i5RnP5ZnvoL3M2S9rEBgrlNTdexH5pTPf7NJrvy1reZJv1Tn7zf7vTIDywjHg1C7Ley38HTDyNA3v7TPfdxJrax1rwPmPtMJyzqKEYZeghq3MuLUrFH3A1AgHcH15CZ9UaZTLOxnw0BTdzHHrBArisZerUMUUzZ1BnBeEijHvNjYLnS1BUICMhSmPhA15ifHyVqKEMHWyKLbyuIPvcH9UeL3vZyDf=cvcXrXlBlbbbbb'
+integrationIdPayMobWallet=0277739XrXlBl
ocpApimSubscriptionKey=0f5dacccdbce4131b1a5f952996302e3
smsPasswordEgypt="J)Vh=qb/@MXrXlBl"
-chatGPTkeySeferNew4=zg-vlie-2l1ZlpxiLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl
-anthropicAIkeySeferNew=zg-qbc-qvo39-n4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl
-llama3Key=kzg_uTXy3e9DBbCQ1FnMGxYwTKysx9US1burxJj4fFwOje4LZBUFKJS1XrXlBl
-payMobOutClientSecrret='xyjjRlahJM0Xc38WjApCOh8bvgL9slFpNdM9YeCu9AhLqboKMPtmSvc2N9O4tXxFLV2JAV6stBSTAGFGCVubGe6MNpc7MzJnZ3SiT6GpavBoCLWkUvVbdSDaM0zHvuBOXrXlBl'
-payMobOutClient_id='Z05ut48dVkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl'
-payMobOutPassword='D2zJFxkE#LN3vz38z2dYxpNfWXrXlBl'
-payMobOutUserName='zjujl_qvo_fwjfgjlXrXlBl'
+chatGPTkeySeferNew4=zg-vlie-2l1ZlpximLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl
+anthropicAIkeySeferNew=zg-qbc-qvo39-mn4VdMQ5nuJeIYhMN4PDYr7qox3-t2i1Lh7aNTDfYF-Gf8whUJZCs47EeelKn8_UcmUMmiSLaf0UJg0DvUlQrDt-76CRrkQQXrXlBl
+llama3Key=kzg_uTXy3e9DBbCQ1FnMGmxYwTKysx9US1burxJj4fFwOje4LZBUFKJS1XrXlBl
+payMobOutClientSecrret='xyjjRlkahJM0Xc38WjApCOh8bvgL9slFpNdM9YeCu9AhLqboKMPtmSvc2N9O4tXxFLV2JAV6stBSTAGFGCVubGe6MNpc7MzJnZ3SiT6GpavBoCLWkUvVbdSDaM0zHvuBOXrXlBl'
+payMobOutClient_id='Z05ut48dVkkS2gI2zenFFcKsfDKfHAU0WELqKyJ0LXrXlBl'
+payMobOutPassword='D2zJFxkE#LNk3vz38z2dYxpNfWXrXlBl'
+payMobOutUserName='zjujl_qvo_fwkjfgjlXrXlBl'
keyOfApp=nqryjpb@1737wqlnmqqsQ5nuJeIYhMN4PDYr7qjyzjujljksvceiXrXlBl
-initializationVector=abcdefghijklkko90
-privateKeyFCM="-----BEGIN PRIVATE KEY-----\\nMIIEvQIBAkki5DANBgkqhjbjhbjbhjhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsT9GZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vgio9lQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n"
-sss_pass=wqnmqqsjyvwv:nqrYJP@17378XrXlBl
-sss_encryptionSalt=zg-vlie-2l1ZlpxiLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl
+initializationVector=adcfgdefghijklkko90
+privateKeyFCM="-----BEGIN PRIVATE KEY-----\\nMIIEvQIBkhkAkki5DANBgkqhjbjhbjbhjhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD0zH9TQGDQHUv3\\na3/JAD1UKPwAp3wNKT0a6fxiIzjI3JxQWI30QvZCcfl6CdMhIcydX1ncSaYTcEeC\\n/AdPVCPkqyJx1YIGGg6P/mRzCWeaN8fsp6z250m5vcObDCZc3dbJEkepbep+6FPY\\n21m3KO+AHh1glgsT9GZOTm5xiU8NGXpdk2QEh8wpiIIlR/HuKwVw9g8urNe3Sno+U\\nDm3z37iFqvZdmpqO8aWTJu6beb3hsREK9XK2I9JqC2JUwiGQRo3idOvPP6hkqrWx\\nKSX96vgio9lQFYfakvJdDp2ZATOlpBYPMtS/IWhJ985u58TSS+Kl8qpnpaZBSxgJirf\\nhWzhnKLfAgMBAAECggEAJP785SePGhS7ZN6ltspm+l+hSjYFrPWFCxq+rlQ1YkHZ\\nC9l+RqKSFhOkiPmQI2s4wbXl3kFxLHHlFNoi/q2wKQBmGb8TQfnRJpjjNHGA61Ev\\n0Ue7/6qPvVb9B2MsLw/FxKiTFPuMG3bgKR9pbSFuJLYoaW7zqITOhVnYphGTqwAY\\nBVVcvISSLvELDmH9VZcv/9DVqVlqbbESHWh1Z4W6XGPoEqeDH/upNTyQQ/46Msgm\\nTGE6VqLHpWuSf6SqHp+r0Y0lI3vIPM1vz5FAJDJbOE/enHa0fSup0OHSMxl0HVMn\\nnO1yrGF3vsIPOej5HKr5d71bEIckzk73/yjNC1/mDQKBgQD7RtUvc9omsSsFMJ6e\\nBASAn6Dktx/QY/XNJjFzHQj69cywLDe5t5AL2gUi3phQ2oqB5XJdwnd5bTIEPEPZ\\nDOuOai2802p6FJk6kjmZAMVGx5JtXBH+vs6jrmQQSMiKbjwN1TT6xIWakvLOonUi\\nX6ZvjYYjU/E0YJU3jSiXWEr76wKBgQD5Zn4SouJ6BCDZMbausJVMBkk3qxsYooip\\np89WakC6e7AZinpkRcqjGGV9GOvc8crJs6fyXAA9ORepGP47Mc0ZrDssOkstznsM\\npr8R0S6MKwEZaT9ixOHdOcLZ47ps+JzA2Wr4KN2OvFHksUkB/46ATD1j9WZVgB8M\\namsYp/Y73QKBgHOo+PvsoZ9psVmkNX6abtAdqdtdB0HOoRea2uwXk0ig12TIFaZg\\nfedWpUKVnxqoXVTJHklV99RmlL0qWDiSH+LfsMnXro0e6iDxqZ1po2Se/CFmXcoa\\nXdctsFVmixhdATuExewfhTfPKABA+xWlXWC/jdy5CK+JPWXijaqMM4edAoGAE5Bj\\nsWiPpYyvWvpYX0nA3G7dzX0hqgQN/mkIjbnWDArp3IcNZNJIvBSM2Yxb7EAXbU0n\\njo6DAkp5Pa2VO+WDNlFZbvW/sf8xjeOCt44WPa6d7nVgIIpbQXRngZoopKW3/jTP\\n/FmQT8McFXmGxZ5belsAsdetSGW9icbLUerTGQ0CgYEAmf/G8Ag3XxmqTXvvHuv2\\n14OP7WnrVqkEMnydrftEwn4peXd/Lz+/GYX5Zc4ZoNgbN8IvZ5z0+OmRsallsbiW\\nBw0/tc68CjzxXOvReWxDluUopqWVGj5tlGqE5xUDku9SWJSxbkiQ3rqutzBdPXpr\\noqHwPyDrmK/Zgqn+uiIm4Ck=\\n-----END PRIVATE KEY-----\\n"
+sss_pass=wqnmqqsjyvwv:nqrmYJP@17378XrXlBl
+sss_encryptionSalt=zg-vklie-2l1ZlpxiLJ6wQOvbb4TnC9XrxgUEyVQIu6TID4qP4FUUqoS5XrXlBl
addd=BlBlNl
getLocationAreaLinks =https://server.sefer.click/sefer.click/sefer/ride/location/get_location_area_links.php
allowed=mobile-app:
diff --git a/android/app/.cxx/tools/release/arm64-v8a/compile_commands.json b/android/app/.cxx/tools/release/arm64-v8a/compile_commands.json
index 0493d7e..a918e0f 100644
--- a/android/app/.cxx/tools/release/arm64-v8a/compile_commands.json
+++ b/android/app/.cxx/tools/release/arm64-v8a/compile_commands.json
@@ -1,8 +1,8 @@
[
{
- "directory": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/RelWithDebInfo/1q1i5a06/arm64-v8a",
- "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c \"/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp\"",
- "file": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp",
+ "directory": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/.cxx/RelWithDebInfo/i2v2a536/arm64-v8a",
+ "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=aarch64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
+ "file": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
"output": "CMakeFiles/native-lib.dir/native-lib.cpp.o"
}
]
\ No newline at end of file
diff --git a/android/app/.cxx/tools/release/armeabi-v7a/compile_commands.json b/android/app/.cxx/tools/release/armeabi-v7a/compile_commands.json
index eda7f16..291ce3f 100644
--- a/android/app/.cxx/tools/release/armeabi-v7a/compile_commands.json
+++ b/android/app/.cxx/tools/release/armeabi-v7a/compile_commands.json
@@ -1,8 +1,8 @@
[
{
- "directory": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/RelWithDebInfo/1q1i5a06/armeabi-v7a",
- "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c \"/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp\"",
- "file": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp",
+ "directory": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/.cxx/RelWithDebInfo/i2v2a536/armeabi-v7a",
+ "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -march=armv7-a -mthumb -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
+ "file": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
"output": "CMakeFiles/native-lib.dir/native-lib.cpp.o"
}
]
\ No newline at end of file
diff --git a/android/app/.cxx/tools/release/x86/compile_commands.json b/android/app/.cxx/tools/release/x86/compile_commands.json
index 3fa2387..65b04c6 100644
--- a/android/app/.cxx/tools/release/x86/compile_commands.json
+++ b/android/app/.cxx/tools/release/x86/compile_commands.json
@@ -1,8 +1,8 @@
[
{
- "directory": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/RelWithDebInfo/1q1i5a06/x86",
- "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c \"/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp\"",
- "file": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp",
+ "directory": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/.cxx/RelWithDebInfo/i2v2a536/x86",
+ "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=i686-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
+ "file": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
"output": "CMakeFiles/native-lib.dir/native-lib.cpp.o"
}
]
\ No newline at end of file
diff --git a/android/app/.cxx/tools/release/x86_64/compile_commands.json b/android/app/.cxx/tools/release/x86_64/compile_commands.json
index 1f5b6f7..1563c4a 100644
--- a/android/app/.cxx/tools/release/x86_64/compile_commands.json
+++ b/android/app/.cxx/tools/release/x86_64/compile_commands.json
@@ -1,8 +1,8 @@
[
{
- "directory": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/.cxx/RelWithDebInfo/1q1i5a06/x86_64",
- "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c \"/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp\"",
- "file": "/Users/hamzaaleghwairyeen/development/App/ride 2/android/app/src/main/cpp/native-lib.cpp",
+ "directory": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/.cxx/RelWithDebInfo/i2v2a536/x86_64",
+ "command": "/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=x86_64-none-linux-android23 --sysroot=/Users/hamzaaleghwairyeen/Library/Android/sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dnative_lib_EXPORTS -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -O2 -g -DNDEBUG -fPIC -o CMakeFiles/native-lib.dir/native-lib.cpp.o -c /Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
+ "file": "/Users/hamzaaleghwairyeen/development/App/ride/android/app/src/main/cpp/native-lib.cpp",
"output": "CMakeFiles/native-lib.dir/native-lib.cpp.o"
}
]
\ No newline at end of file
diff --git a/android/app/build.gradle b/android/app/build.gradle
index e95c03b..219d123 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -23,6 +23,9 @@ if (flutterVersionName == null) {
}
apply plugin: 'com.android.application'
+// START: FlutterFire Configuration
+apply plugin: 'com.google.gms.google-services'
+// END: FlutterFire Configuration
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
@@ -50,8 +53,8 @@ android {
applicationId = "com.mobileapp.store.ride"
minSdk = 23
targetSdk = flutter.targetSdkVersion // Use flutter.targetSdkVersion
- versionCode = 127
- versionName = '2.0.127'
+ versionCode = 130
+ versionName = '2.0.130'
multiDexEnabled = true
ndk {
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 0da24fd..b987148 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -41,11 +41,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 100
+ 102
CFBundleSignature
????
CFBundleVersion
- 5.0.990
+ 5.0.992
NSHumanReadableCopyright
FirebaseAppDelegateProxyEnabled
diff --git a/lib/constant/box_name.dart b/lib/constant/box_name.dart
index 02c1ada..c7e2c4a 100644
--- a/lib/constant/box_name.dart
+++ b/lib/constant/box_name.dart
@@ -24,6 +24,7 @@ class BoxName {
static const String isSavedPhones = 'isSavedPhones';
static const String statusDriverLocation = "statusDriverLocation";
static const String isTest = "isTest";
+ static const String hmac = "hmac";
static const String password = "password";
static const String validity = "validity";
static const String promo = "promo";
diff --git a/lib/constant/links.dart b/lib/constant/links.dart
index 390d0c2..0861c0a 100644
--- a/lib/constant/links.dart
+++ b/lib/constant/links.dart
@@ -54,6 +54,12 @@ class AppLink {
"$wallet/getAllPassengerTransaction.php";
static String getWalletByPassenger = "$wallet/getWalletByPassenger.php";
static String getPassengersWallet = "$wallet/get.php";
+ static String payWithPayMobWalletPasenger =
+ '$seferPaymentServer/ride/payMob/wallet/payWithPayMob.php';
+ static String payWithPayMobCardPassenger =
+ '$seferPaymentServer/ride/payMob/payWithPayMob.php';
+ static String paymetVerifyPassenger =
+ "$seferPaymentServer/ride/payMob/paymet_verfy.php";
static String getPassengerWalletArchive =
"$wallet/getPassengerWalletArchive.php";
@@ -321,6 +327,10 @@ class AppLink {
//////////Sms egypt///////////
static String sendSms = "https://sms.kazumi.me/api/sms/send-sms";
+ static String sendSmsFromPHP =
+ '$server/auth/sms_new_backend/sendOtpPassenger.php';
+ static String verifyOtpPassenger =
+ '$server/auth/passengerOTP/verifyOtpPassenger.php';
static String senddlr = "https://sms.kazumi.me/api/sms/send-dlr";
static String sendvalidity = "https://sms.kazumi.me/api/sms/send-validity";
static String sendmany = "https://sms.kazumi.me/api/sms/send-many";
diff --git a/lib/controller/auth/login_controller.dart b/lib/controller/auth/login_controller.dart
index d345870..cacc9ca 100644
--- a/lib/controller/auth/login_controller.dart
+++ b/lib/controller/auth/login_controller.dart
@@ -109,6 +109,8 @@ class LoginController extends GetxController {
Uri.parse(AppLink.loginJwtWalletRider),
body: payload,
);
+ await box.write(BoxName.hmac, jsonDecode(response1.body)['hmac']);
+ // Log.print('jsonDecoeded[hmac]: ${jsonDecoeded['hmac']}');
// Log.print('req: ${response1.request}');
// Log.print('response: ${response1.body}');
// Log.print('payload: ${payload}');
diff --git a/lib/controller/auth/register_controller.dart b/lib/controller/auth/register_controller.dart
index ff3cee7..f164bf1 100644
--- a/lib/controller/auth/register_controller.dart
+++ b/lib/controller/auth/register_controller.dart
@@ -198,13 +198,17 @@ class RegisterController extends GetxController {
'token': EncryptionHelper.instance.encryptData(otp.toString()),
});
Log.print('dd: ${dd}');
- if (isEgyptian) {
+
+ // Common Registration Logic (extracted for reuse)
+ Future registerUser() async {
await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: {
"phone_number": EncryptionHelper.instance
.encryptData(Get.find().phoneController.text)
});
+
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
+
var nameParts = EncryptionHelper.instance
.decryptData(box.read(BoxName.name))
.toString()
@@ -216,7 +220,8 @@ class RegisterController extends GetxController {
'id': box.read(BoxName.passengerID),
'phone': EncryptionHelper.instance.encryptData(phoneController.text),
'email': box.read(BoxName.email),
- 'password': EncryptionHelper.instance.encryptData('unknown'),
+ 'password': EncryptionHelper.instance.encryptData(
+ 'unknown'), //Consider if you *really* want to store 'unknown' passwords
'gender': EncryptionHelper.instance.encryptData('unknown'),
'birthdate': EncryptionHelper.instance.encryptData('2002-01-01'),
'site': box.read(BoxName.passengerPhotoUrl) ?? 'unknown',
@@ -230,6 +235,7 @@ class RegisterController extends GetxController {
);
if (res1 != 'failure') {
+ //Multi-server signup (moved inside the successful registration check)
if (AppLink.tripzAlexandriaServer != AppLink.tripzCairoServer) {
List signUp = [
CRUD().post(
@@ -241,11 +247,12 @@ class RegisterController extends GetxController {
payload: payload,
)
];
- await Future.wait(signUp);
+ await Future.wait(signUp); // Wait for both sign-ups to complete.
}
box.write(BoxName.isVerified, '1');
- box.write(BoxName.isFirstTime, '0');
+ box.write(
+ BoxName.isFirstTime, '0'); //Double-check the logic for isFirstTime
box.write(BoxName.phone,
EncryptionHelper.instance.encryptData(phoneController.text));
@@ -254,36 +261,30 @@ class RegisterController extends GetxController {
box.read(BoxName.email).toString(),
);
}
- // await controller.sendSmsEgypt(phoneNumber, otp.toString());
- } else if (phoneController.text.toString().length >= 10) {
- box.write(BoxName.isVerified, '1');
- box.write(BoxName.isFirstTime, '0'); //todo check if first or not
- box.write(BoxName.phone,
- EncryptionHelper.instance.encryptData(phoneController.text));
+ }
- Get.put(LoginController()).loginUsingCredentials(
- box.read(BoxName.passengerID).toString(),
- box.read(BoxName.email).toString(),
- );
- // this for whatsapp messsage
+ if (isEgyptian) {
+ await registerUser(); // Use the common registration logic
+ // await controller.sendSmsEgypt(phoneNumber, otp.toString()); // Optional: Send SMS if Egyptian
+ } else if (phoneController.text.toString().length >= 10) {
+ await registerUser(); // Use the common registration logic for non-Egyptian users as well.
+ // this for whatsapp messsage // Optional: Send WhatsApp message
// await CRUD().sendWhatsAppAuth(phoneNumber, otp.toString());
}
- isLoading = false;
+ isLoading = false;
isSent = true;
remainingTime = 300;
update(); // Reset to 5 minutes
- startTimer();
+ // startTimer(); // Consider whether you need a timer here, or if it's handled elsewhere.
}
verifySMSCode() async {
try {
if (formKey3.currentState!.validate()) {
- var res = await CRUD().post(link: AppLink.verifyOtpMessage, payload: {
- 'phone_number':
- EncryptionHelper.instance.encryptData(phoneController.text),
- 'token':
- EncryptionHelper.instance.encryptData(verifyCode.text.toString()),
+ var res = await CRUD().post(link: AppLink.verifyOtpPassenger, payload: {
+ 'phone_number': "201023248456",
+ 'token': ("74787"),
});
if (res != 'failure') {
diff --git a/lib/controller/functions/crud.dart b/lib/controller/functions/crud.dart
index 578f227..75a0be2 100644
--- a/lib/controller/functions/crud.dart
+++ b/lib/controller/functions/crud.dart
@@ -71,6 +71,8 @@ class CRUD {
Map? payload,
}) async {
var s = await LoginController().getJwtWallet();
+ final hmac = box.read(BoxName.hmac);
+ // Log.print('hmac: ${hmac}');
var url = Uri.parse(
link,
);
@@ -79,7 +81,8 @@ class CRUD {
body: payload,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
- 'Authorization': 'Bearer $s'
+ 'Authorization': 'Bearer $s',
+ 'X-HMAC-Auth': hmac.toString(),
},
);
// print('req: ${response.request}');
@@ -87,6 +90,7 @@ class CRUD {
// Log.print('payload: ${payload}');
if (response.statusCode == 200) {
var jsonData = jsonDecode(response.body);
+ Log.print('jsonData: $jsonData');
if (jsonData['status'] == 'success') {
return response.body;
}
@@ -139,7 +143,7 @@ class CRUD {
return jsonData['status'];
}
} catch (e) {
- addError(e.toString(), 'crud().post - JSON decoding');
+ // addError(e.toString(), 'crud().post - JSON decoding');
return 'failure';
}
} else if (response.statusCode == 401) {
@@ -162,16 +166,16 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration
} else {
// Other 401 errors
- addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
+ // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure';
}
} else {
- addError('Non-200 response code: ${response.statusCode}',
- 'crud().post - Other');
+ // addError('Non-200 response code: ${response.statusCode}',
+ // 'crud().post - Other');
return 'failure';
}
} catch (e) {
- addError('HTTP request error: $e', 'crud().post - HTTP');
+ // addError('HTTP request error: $e', 'crud().post - HTTP');
return 'failure';
}
}
@@ -179,6 +183,9 @@ class CRUD {
Future postWallet(
{required String link, Map? payload}) async {
var s = await LoginController().getJwtWallet();
+
+ final hmac = box.read(BoxName.hmac);
+
var url = Uri.parse(link);
try {
var response = await http.post(
@@ -186,7 +193,8 @@ class CRUD {
body: payload,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
- 'Authorization': 'Bearer $s'
+ 'Authorization': 'Bearer $s',
+ 'X-HMAC-Auth': hmac.toString(),
},
);
// print('req: ${response.request}');
@@ -224,16 +232,16 @@ class CRUD {
return 'token_expired'; // Return a specific value for token expiration
} else {
// Other 401 errors
- addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
+ // addError('Unauthorized: ${jsonData['error']}', 'crud().post - 401');
return 'failure';
}
} else {
- addError('Non-200 response code: ${response.statusCode}',
- 'crud().post - Other');
+ // addError('Non-200 response code: ${response.statusCode}',
+ // 'crud().post - Other');
return 'failure';
}
} catch (e) {
- addError('HTTP request error: $e', 'crud().post - HTTP');
+ // addError('HTTP request error: $e', 'crud().post - HTTP');
return 'failure';
}
}
diff --git a/lib/controller/functions/sms_controller.dart b/lib/controller/functions/sms_controller.dart
index c20f61c..eed6d8b 100644
--- a/lib/controller/functions/sms_controller.dart
+++ b/lib/controller/functions/sms_controller.dart
@@ -28,24 +28,41 @@ class SmsEgyptController extends GetxController {
}
Future sendSmsEgypt(String phone, otp) async {
- String sender = await getSender();
- var body = jsonEncode({
- "username": 'Sefer',
- "password": AK.smsPasswordEgypt,
- "message": "${AppInformation.appName} app code is $otp\ncopy it to app",
+ // String sender = await getSender();
+ // var body = jsonEncode({
+ // "username": 'Sefer',
+ // "password": AK.smsPasswordEgypt,
+ // "message": "${AppInformation.appName} app code is $otp\ncopy it to app",
+ // "language": box.read(BoxName.lang) == 'en' ? "e" : 'r',
+ // "sender": sender, //"Sefer Egy",
+ // "receiver": phone
+ // });
+
+ var res = await CRUD().post(link: AppLink.sendSmsFromPHP, payload: {
"language": box.read(BoxName.lang) == 'en' ? "e" : 'r',
- "sender": sender, //"Sefer Egy",
- "receiver": phone
+ "receiver": phone,
});
+ if (res != 'failure') {
+ // var res = await http.post(
+ // Uri.parse(AppLink.sendSms),
+ // body: body,
+ // headers: headers,
+ // );
- var res = await http.post(
- Uri.parse(AppLink.sendSms),
- body: body,
- headers: headers,
- );
-
- if (jsonDecode(res.body)['message'].toString() ==
- "Invalid Sender with Connection") {
+ // else if (jsonDecode(res)['message'].toString() ==
+ // "Invalid Sender with Connection") {
+ //
+ // }
+ // else {
+ Get.defaultDialog(
+ title: 'You will receive a code in SMS message'.tr,
+ middleText: '',
+ confirm: MyElevatedButton(
+ title: 'OK'.tr,
+ onPressed: () {
+ Get.back();
+ }));
+ } else {
await CRUD().post(link: AppLink.updatePhoneInvalidSMSPassenger, payload: {
"phone_number":
'+2${Get.find().phoneController.text}'
@@ -58,15 +75,6 @@ class SmsEgyptController extends GetxController {
box.read(BoxName.driverID).toString(),
box.read(BoxName.emailDriver).toString(),
);
- } else {
- Get.defaultDialog(
- title: 'You will receive a code in SMS message'.tr,
- middleText: '',
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- onPressed: () {
- Get.back();
- }));
}
}
diff --git a/lib/controller/payment/payment_controller.dart b/lib/controller/payment/payment_controller.dart
index 11b0c9f..6e9b8b4 100644
--- a/lib/controller/payment/payment_controller.dart
+++ b/lib/controller/payment/payment_controller.dart
@@ -2,10 +2,8 @@ import 'dart:convert';
import 'package:Tripz/constant/api_key.dart';
import 'package:Tripz/constant/style.dart';
import 'package:Tripz/controller/firebase/firbase_messge.dart';
-import 'package:Tripz/controller/functions/tts.dart';
import 'package:Tripz/controller/payment/paymob/paymob_response.dart';
import 'package:Tripz/views/home/map_page_passenger.dart';
-import 'package:Tripz/views/widgets/elevated_btn.dart';
import 'package:http/http.dart' as http;
import 'package:flutter/material.dart';
import 'package:flutter_paypal/flutter_paypal.dart';
@@ -23,7 +21,6 @@ import '../../print.dart';
import '../functions/crud.dart';
import '../functions/encrypt_decrypt.dart';
import '../functions/toast.dart';
-import 'paymob/paymob_wallet.dart';
class PaymentController extends GetxController {
bool isLoading = false;
@@ -88,7 +85,7 @@ class PaymentController extends GetxController {
Future addSeferWallet(String paymentMethod, point) async {
var seferToken = await generateTokenPassenger(point);
- await CRUD().post(link: AppLink.addSeferWallet, payload: {
+ await CRUD().postWallet(link: AppLink.addSeferWallet, payload: {
'amount': point.toString(),
'paymentMethod': paymentMethod,
'passengerId': box.read(BoxName.passengerID).toString(),
@@ -99,7 +96,7 @@ class PaymentController extends GetxController {
Future addPassengersWallet(String point) async {
var token = await generateTokenPassenger(point);
- await CRUD().post(link: AppLink.addPassengersWallet, payload: {
+ await CRUD().postWallet(link: AppLink.addPassengersWallet, payload: {
'passenger_id': box.read(BoxName.passengerID).toString(),
'balance': point,
'token': token,
@@ -114,7 +111,8 @@ class PaymentController extends GetxController {
: (4 * .06) + (5 * .06); //for Eygpt other like jordan .06 per minute
var paymentTokenWait =
await generateTokenDriver(costOfWaiting5Minute.toString());
- var res = await CRUD().post(link: AppLink.addDrivePayment, payload: {
+ var res =
+ await CRUD().postWallet(link: AppLink.addDrivePayment, payload: {
'rideId': rideId,
'amount': costOfWaiting5Minute.toString(),
'payment_method': 'cancel-from-near',
@@ -124,8 +122,8 @@ class PaymentController extends GetxController {
});
var paymentTokenWait1 =
await generateTokenDriver(costOfWaiting5Minute.toString());
- var res1 =
- await CRUD().post(link: AppLink.addDriversWalletPoints, payload: {
+ var res1 = await CRUD()
+ .postWallet(link: AppLink.addDriversWalletPoints, payload: {
'paymentID': 'rideId$rideId',
'amount': (costOfWaiting5Minute).toStringAsFixed(0),
'paymentMethod': 'cancel-from-near',
@@ -546,7 +544,7 @@ class PaymentController extends GetxController {
// 'https://accept.paymob.com/unifiedcheckout/?publicKey=egy_pk_live_mbjDC9Ni6FSHKmsz8sOHiVk2xd7oWRve&clientSecret=egy_sk_live_c0904e9cf04506ae64f818d4e075b4a957e3713fdf7a22cb7da30a29e72442b5'
Future payWithPayMob(
- BuildContext context, String amount, currency, Function method) async {
+ BuildContext context, String amount, currency) async {
String newAmount = (double.parse(amount) * 100).toStringAsFixed(2);
try {
bool isAvailable = await LocalAuthentication().isDeviceSupported();
@@ -556,119 +554,33 @@ class PaymentController extends GetxController {
localizedReason: 'Use Touch ID or Face ID to confirm payment',
);
if (didAuthenticate) {
- final PaymobResponse? response = await PaymobPayment.instance.pay(
- context: context,
- currency: currency, //"EGP",
- amountInCents: newAmount, // 19.00 EGP
-
- billingData: PaymobBillingData(),
- onPayment: (PaymobResponse response) {},
+ var res = await CRUD().postWallet(
+ // link: AppLink.payWithPayMobWalletPasenger,
+ link: AppLink.payWithPayMobCardPassenger,
+ payload: {
+ "amount": newAmount,
+ "email":
+ box.read(BoxName.email) ?? box.read(BoxName.emailDriver),
+ "first_name": EncryptionHelper.instance
+ .decryptData(
+ box.read(BoxName.name).toString().split(' ')[0])
+ .toString(),
+ "last_name": EncryptionHelper.instance
+ .decryptData(
+ box.read(BoxName.name).toString().split(' ')[1])
+ .toString(),
+ "phone_number": EncryptionHelper.instance
+ .decryptData(box.read(BoxName.phone)),
+ });
+ // var d = jsonDecode(res);
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => PaymentScreen(iframeUrl: res['message'])),
);
-
- if (response!.responseCode == 'APPROVED') {
- Get.defaultDialog(
- barrierDismissible: false,
- title: 'Payment Successful'.tr,
- titleStyle: AppStyle.title,
- content: Text(
- 'The payment was approved.'.tr,
- style: AppStyle.title,
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- kolor: AppColor.greenColor,
- onPressed: () async {
- Get.back();
- method();
- },
- ),
- );
- } else {
- Get.defaultDialog(
- barrierDismissible: false,
- // backgroundColor: AppColor.redColor,
- title: 'Payment Failed'.tr,
- content: Text(
- 'The payment was not approved. Please try again.'.tr,
- textAlign: TextAlign.center,
- style: AppStyle.title,
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- kolor: AppColor.redColor,
- onPressed: () async {
- Get.back();
- },
- ),
- );
- }
} else {
// Authentication failed, handle accordingly
}
- } else {
- final PaymobResponse? response = await PaymobPayment.instance.pay(
- context: context,
- currency: currency, //"EGP",
- amountInCents: newAmount, // 19.00 EGP
- billingData: PaymobBillingData(),
- onPayment: (PaymobResponse response) {},
- );
-
- if (response!.responseCode == 'APPROVED') {
- Get.defaultDialog(
- barrierDismissible: false,
- title: 'Payment Successful'.tr,
- titleStyle: AppStyle.title,
- // backgroundColor: AppColor.greenColor,
- content: Text(
- 'The payment was approved.'.tr,
- style: AppStyle.title,
- ),
- confirm: MyElevatedButton(
- kolor: AppColor.greenColor,
- title: 'OK'.tr,
- onPressed: () async {
- Get.back();
- method();
- },
- ),
- );
- } else {
- Get.defaultDialog(
- barrierDismissible: false,
- // backgroundColor: AppColor.redColor,
- title: 'Payment Failed'.tr,
- content: Column(
- children: [
- IconButton(
- onPressed: () {
- Get.find().speakText(
- 'The payment was not approved. Please try again.'.tr,
- );
- },
- icon: const Icon(Icons.headphones),
- ),
- Text(
- 'The payment was not approved. Please try again.'.tr,
- textAlign: TextAlign.center,
- style: AppStyle.title,
- ),
- Text(
- '${'The reason is'.tr} ${response.message!.tr}',
- textAlign: TextAlign.center,
- style: AppStyle.title.copyWith(color: AppColor.redColor),
- ),
- ],
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- kolor: AppColor.redColor,
- onPressed: () async {
- Get.back();
- },
- ),
- );
- }
}
} catch (e) {
Get.defaultDialog(
@@ -683,7 +595,7 @@ class PaymentController extends GetxController {
}
Future payWithPayMobWallet(
- BuildContext context, String amount, currency, Function method) async {
+ BuildContext context, String amount, currency) async {
String newAmount = (double.parse(amount) * 100).toStringAsFixed(2);
try {
bool isAvailable = await LocalAuthentication().isDeviceSupported();
@@ -693,130 +605,30 @@ class PaymentController extends GetxController {
localizedReason: 'Use Touch ID or Face ID to confirm payment',
);
if (didAuthenticate) {
- final PaymobResponseWallet? response =
- await PaymobPaymentWallet.instance.pay(
- context: context,
- currency: currency, //"EGP",
- amountInCents: newAmount, // 19.00 EGP
-
- billingData: PaymobBillingDataWallet(),
- onPayment: (PaymobResponseWallet response) {},
+ var res = await CRUD().postWallet(
+ link: AppLink.payWithPayMobWalletPasenger,
+ // link: AppLink.payWithPayMobCardPassenger,
+ payload: {
+ "amount": newAmount,
+ "email": box.read(BoxName.email),
+ "first_name": EncryptionHelper.instance
+ .decryptData(
+ box.read(BoxName.name).toString().split(' ')[0])
+ .toString(),
+ "last_name": EncryptionHelper.instance
+ .decryptData(
+ box.read(BoxName.name).toString().split(' ')[1])
+ .toString(),
+ "phone_number": (box.read(BoxName.phoneWallet)),
+ });
+ Navigator.push(
+ context,
+ MaterialPageRoute(
+ builder: (context) => PaymentScreen(iframeUrl: res['message'])),
);
- // Log.print('response.message!: ${response!.responseCode!}');
- // if (response!.success == true && response.responseCode == '200') {
-
- if (response!.success == true &&
- response!.message.toString() == 'Approved') {
- // Log.print('transactionID wewer: ${response.transactionID}');
- Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor);
- method();
- // Get.defaultDialog(
- // barrierDismissible: false,
- // title: 'Payment Successful'.tr,
- // titleStyle: AppStyle.title,
- // content: Text(
- // 'The payment was approved.'.tr,
- // style: AppStyle.title,
- // ),
- // confirm: MyElevatedButton(
- // title: 'OK'.tr,
- // kolor: AppColor.greenColor,
- // onPressed: () async {
- // Get.back();
- // method();
- // },
- // ),
- // );
- } else {
- Get.defaultDialog(
- barrierDismissible: false,
- // backgroundColor: AppColor.redColor,
- title: 'Payment Failed'.tr,
- content: Column(
- children: [
- IconButton(
- onPressed: () {
- Get.find().speakText(
- 'The payment was not approved. Please try again.'.tr,
- );
- },
- icon: const Icon(Icons.headphones),
- ),
- Text(
- 'The payment was not approved. Please try again.'.tr,
- textAlign: TextAlign.center,
- style: AppStyle.title,
- ),
- Text(
- '${'The reason is'.tr} ${response.message!.tr}',
- textAlign: TextAlign.center,
- style: AppStyle.title.copyWith(color: AppColor.redColor),
- ),
- ],
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- kolor: AppColor.redColor,
- onPressed: () async {
- Get.back();
- },
- ),
- );
- }
} else {
// Authentication failed, handle accordingly
}
- } else {
- final PaymobResponse? response = await PaymobPayment.instance.pay(
- context: context,
- currency: currency, //"EGP",
- amountInCents: newAmount, // 19.00 EGP
- billingData: PaymobBillingData(),
- onPayment: (PaymobResponse response) {},
- );
- if (response!.responseCode == '200' && response.success == true) {
- // if (response!.success == true && response.responseCode == '200') {
- // if (response!.responseCode == 'APPROVED') {
- Toast.show(context, 'Payment Successful'.tr, AppColor.greenColor);
- method();
- // Get.defaultDialog(
- // barrierDismissible: false,
- // title: 'Payment Successful'.tr,
- // titleStyle: AppStyle.title,
- // // backgroundColor: AppColor.greenColor,
- // content: Text(
- // 'The payment was approved.'.tr,
- // style: AppStyle.title,
- // ),
- // confirm: MyElevatedButton(
- // kolor: AppColor.greenColor,
- // title: 'OK'.tr,
- // onPressed: () async {
- // Get.back();
- // method();
- // },
- // ),
- // );
- } else {
- Get.defaultDialog(
- barrierDismissible: false,
- // backgroundColor: AppColor.redColor,
- title: 'Payment Failed'.tr,
- content: Text(
- 'The payment was not approved. Please try again.'.tr,
- textAlign: TextAlign.center,
- style: AppStyle.title,
- ),
- confirm: MyElevatedButton(
- title: 'OK'.tr,
- kolor: AppColor.redColor,
- onPressed: () async {
- Get.back();
- },
- ),
- );
- }
- // }
}
} catch (e) {
Get.defaultDialog(
diff --git a/lib/controller/payment/paymob/paymob_response.dart b/lib/controller/payment/paymob/paymob_response.dart
index d0e391e..aac9c23 100644
--- a/lib/controller/payment/paymob/paymob_response.dart
+++ b/lib/controller/payment/paymob/paymob_response.dart
@@ -1,9 +1,15 @@
+import 'dart:convert';
+
import 'package:Tripz/constant/box_name.dart';
+import 'package:Tripz/constant/links.dart';
+import 'package:Tripz/controller/functions/crud.dart';
import 'package:Tripz/main.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
+import 'package:get/get.dart';
import 'package:webview_flutter/webview_flutter.dart';
-
+import 'package:http/http.dart' as http;
+import '../../../print.dart';
import '../../functions/encrypt_decrypt.dart';
class PaymobResponse {
@@ -242,7 +248,7 @@ class PaymobBillingData {
"city": city ?? "NA",
"state": state ?? "NA",
"country": country ?? "NA",
- "shipping_method": shippingMethod ?? "NA",
+ "shipping_method": box.read(BoxName.passengerID) ?? "NA",
};
}
}
@@ -330,3 +336,157 @@ class _PaymobIFrameState extends State {
return data;
}
}
+
+class PaymentScreen extends StatefulWidget {
+ final String iframeUrl;
+
+ const PaymentScreen({required this.iframeUrl, Key? key}) : super(key: key);
+
+ @override
+ State createState() => _PaymentScreenState();
+}
+
+class _PaymentScreenState extends State {
+ late final WebViewController _controller;
+
+ @override
+ void initState() {
+ super.initState();
+ _controller = WebViewController()
+ ..setJavaScriptMode(JavaScriptMode.unrestricted)
+ ..setNavigationDelegate(NavigationDelegate(
+ onPageFinished: (url) {
+ Log.print('url onPageFinished : ${url}');
+ if (url.contains("success")) {
+ _fetchPaymentStatus(); // ✅ استدعاء الويب هوك بعد نجاح الدفع
+ } else if (url.contains("failed")) {
+ showCustomDialog(
+ title: "Error".tr,
+ message: 'Payment Failed'.tr, // يتم جلب رسالة الخطأ من الخادم
+ isSuccess: false,
+ );
+ }
+ },
+ ))
+ ..loadRequest(Uri.parse(widget.iframeUrl));
+ }
+
+ // ✅ استدعاء الويب هوك بعد انتهاء الدفع
+ Future _fetchPaymentStatus() async {
+ final String userId = EncryptionHelper.instance
+ .decryptData(box.read(BoxName.phoneWallet)); // ضع user_id الحقيقي
+ final String apiUrl = AppLink.paymetVerifyPassenger;
+
+ try {
+ final response = await CRUD().getWallet(link: apiUrl, payload: {
+ 'user_id': userId,
+ 'passengerId': box.read(BoxName.passengerID),
+ 'paymentMethod': 'visa-in',
+ });
+
+ if (response != 'failure' && response != 'token_expired') {
+ try {
+ final jsonData = jsonDecode(response);
+
+ if (jsonData['status'] == 'success') {
+ // تأكد أن 'message' هو String وليس Map
+ // final message = jsonData['message'];
+ showCustomDialog(
+ title: "Payment Status",
+ message: jsonData['message'], // يتم جلب الرسالة من الخادم
+ isSuccess: true,
+ );
+ } else {
+ showCustomDialog(
+ title: "Error",
+ message: jsonData['message'], // يتم جلب رسالة الخطأ من الخادم
+ isSuccess: false,
+ );
+ }
+ } catch (e) {
+ showCustomDialog(
+ title: "Error",
+ message: response, // يتم جلب رسالة الخطأ من الخادم
+ isSuccess: false,
+ );
+ }
+ } else {
+ showCustomDialog(
+ title: "Error".tr,
+ message: response, // يتم جلب رسالة الخطأ من الخادم
+ isSuccess: false,
+ );
+ }
+ } catch (e) {
+ showCustomDialog(
+ title: "Error".tr,
+ message: 'Server error'.tr, // يتم جلب رسالة الخطأ من الخادم
+ isSuccess: false,
+ );
+ }
+ }
+
+ void showCustomDialog({
+ required String title,
+ required String message,
+ required bool isSuccess,
+ }) {
+ showDialog(
+ barrierDismissible: false,
+ context: Get.context!,
+ builder: (BuildContext context) {
+ return AlertDialog(
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(12.0),
+ ),
+ title: Row(
+ children: [
+ Icon(
+ isSuccess ? Icons.check_circle : Icons.error,
+ color: isSuccess ? Colors.green : Colors.red,
+ ),
+ const SizedBox(width: 8),
+ Text(
+ title,
+ style: TextStyle(
+ color: isSuccess ? Colors.green : Colors.red,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
+ ],
+ ),
+ content: Text(
+ message,
+ style: const TextStyle(fontSize: 16),
+ ),
+ actions: [
+ TextButton(
+ onPressed: () {
+ Navigator.pop(context);
+ Navigator.pop(context);
+ },
+ style: TextButton.styleFrom(
+ backgroundColor: isSuccess ? Colors.green : Colors.red,
+ shape: RoundedRectangleBorder(
+ borderRadius: BorderRadius.circular(8.0),
+ ),
+ ),
+ child: Text(
+ "OK",
+ style: const TextStyle(color: Colors.white),
+ ),
+ ),
+ ],
+ );
+ },
+ );
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(title: const Text('إتمام الدفع')),
+ body: WebViewWidget(controller: _controller),
+ );
+ }
+}
diff --git a/lib/main.dart b/lib/main.dart
index ede2d3b..f9dc6e3 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -83,22 +83,6 @@ void main() async {
]);
}
- String? key = (await storage.read(key: BoxName.payMobApikey));
-
- String? apiKey = EncryptionHelper.instance.decryptData(key!);
- PaymobPayment.instance.initialize(
- apiKey: apiKey,
- integrationID: int.parse(AK.integrationIdPayMob),
- userTokenExpiration: 200,
- iFrameID: 837992,
- );
-
- PaymobPaymentWallet.instance.initialize(
- apiKey: apiKey,
- integrationID: int.parse(AK.integrationIdPayMobWallet),
- userTokenExpiration: 200,
- iFrameID: 837992,
- );
await notificationController.initNotifications();
// Generate a random index to pick a message
diff --git a/lib/views/auth/login_page.dart b/lib/views/auth/login_page.dart
index 4d27f0d..d7faefe 100644
--- a/lib/views/auth/login_page.dart
+++ b/lib/views/auth/login_page.dart
@@ -1,9 +1,7 @@
import 'dart:io';
-import 'package:Tripz/constant/char_map.dart';
import 'package:Tripz/controller/functions/crud.dart';
import 'package:Tripz/controller/functions/encrypt_decrypt.dart';
-import 'package:Tripz/env/env.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
@@ -15,13 +13,11 @@ import 'package:Tripz/constant/colors.dart';
import 'package:Tripz/constant/style.dart';
import 'package:Tripz/main.dart';
import 'package:Tripz/views/widgets/my_scafold.dart';
-import 'package:secure_string_operations/secure_string_operations.dart';
import '../../constant/info.dart';
import '../../controller/auth/apple_signin_controller.dart';
import '../../controller/auth/google_sign.dart';
import '../../controller/auth/login_controller.dart';
-import '../../print.dart';
import '../home/HomePage/contact_us.dart';
import '../home/profile/passenger_profile_page.dart';
@@ -334,7 +330,8 @@ class LoginPage extends StatelessWidget {
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async => await controller.getLocationPermission(),
- child: Text('Allow Location Access'.tr),
+ child: Text('Next'.tr),
+ // child: Text('Allow Location Access'.tr),
),
// TextButton(
// onPressed: () => openAppSettings(),
diff --git a/lib/views/home/map_widget.dart/left_main_menu_icons.dart b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
index 94bbcc3..fe18320 100644
--- a/lib/views/home/map_widget.dart/left_main_menu_icons.dart
+++ b/lib/views/home/map_widget.dart/left_main_menu_icons.dart
@@ -1,3 +1,10 @@
+import 'dart:io';
+
+import 'package:Tripz/constant/links.dart';
+import 'package:Tripz/controller/auth/login_controller.dart';
+import 'package:Tripz/controller/functions/crud.dart';
+import 'package:Tripz/controller/functions/sms_controller.dart';
+import 'package:Tripz/views/widgets/error_snakbar.dart';
import 'package:flutter/services.dart';
import 'package:Tripz/constant/box_name.dart';
import 'package:Tripz/main.dart';
@@ -5,13 +12,17 @@ import 'package:flutter/material.dart';
import 'package:flutter_font_icons/flutter_font_icons.dart';
import 'package:get/get.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
+import 'package:jwt_decoder/jwt_decoder.dart';
+import 'package:secure_string_operations/secure_string_operations.dart';
+import '../../../constant/char_map.dart';
import '../../../constant/colors.dart';
-import '../../../controller/auth/login_controller.dart';
+import '../../../constant/info.dart';
import '../../../controller/functions/encrypt_decrypt.dart';
-import '../../../controller/functions/package_info.dart';
import '../../../controller/functions/tts.dart';
import '../../../controller/home/map_passenger_controller.dart';
import '../../../controller/home/vip_waitting_page.dart';
+import '../../../controller/payment/paymob/paymob_response.dart';
+import '../../../print.dart';
GetBuilder leftMainMenuIcons() {
Get.put(TextToSpeechController());
@@ -59,15 +70,15 @@ GetBuilder leftMainMenuIcons() {
onPressed: () => Get.to(() => VipWaittingPage()),
tooltip: 'VIP Waiting Page', // More descriptive tooltip
),
- // const SizedBox(width: 8),
- // _buildIconButtonWithAnimation(
- // controller: controller,
- // icon: Octicons.screen_full,
- // onPressed: () async {
- // Get.to(() => TestPage());
- // },
- // tooltip: 'Recent Locations', // More descriptive tooltip
- // ),
+ const SizedBox(width: 8),
+ _buildIconButtonWithAnimation(
+ controller: controller,
+ icon: Octicons.screen_full,
+ onPressed: () async {
+ Get.to(() => TestPage());
+ },
+ tooltip: 'Recent Locations', // More descriptive tooltip
+ ),
],
),
),
@@ -86,11 +97,34 @@ class TestPage extends StatelessWidget {
body: Center(
child: TextButton(
onPressed: () async {
- // await DeviceHelper.getDeviceFingerprint();
- // await SecurityHelper.performSecurityChecks();
- LoginController().getJwtWallet();
- // addFingerPrint() async {
+ // bool isTokenExpired = JwtDecoder.isExpired(X
+ // .r(X.r(X.r(box.read(BoxName.jwt), cn), cC), cs)
+ // .toString()
+ // .split(AppInformation.addd)[0]);
+
+ // if (isTokenExpired) {
+ // Log.print(
+ // 'isTokenExpired loginUsingCredentials: ${isTokenExpired}');
+ // await LoginController().getJWT();
+ // }
+
+ // var res = await CRUD().get(
+ // link: 'https://server.sefer.click/sefer.click/sefer/test.php',
+ // payload: {
+ // 'email': box.read(BoxName.email).toString(),
+ // 'id': box.read(BoxName.passengerID).toString(),
+ // "platform": Platform.isAndroid ? 'android' : 'ios',
+ // "appName": AppInformation.appName,
+ // });
+ // Log.print('res: ${res}');
+ // var s = EncryptionHelper.instance.encryptData('Female');
+ Log.print('s: ${box.read(BoxName.hmac)}');
},
+
+ // uDG41L0K5vrem0eh87ZAf9leTrDUW0+twVRHQIQtxOWn4L6J5seU9x1tnRUUbGBb
+
+ // uDG41L0K5vrem0eh87ZAf9leTrDUW0+twVRHQIQtxOU=
+
child: Text(
"Text Button",
),
diff --git a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart
index ad6093b..0e265e9 100644
--- a/lib/views/home/my_wallet/passenger_wallet_dialoge.dart
+++ b/lib/views/home/my_wallet/passenger_wallet_dialoge.dart
@@ -243,18 +243,17 @@ void showPaymentOptions(BuildContext context, PaymentController controller) {
box.read(BoxName.countryCode) == 'Egypt'
? CupertinoActionSheetAction(
child: Text('💳 Pay with Credit Card'.tr),
- onPressed: () {
+ onPressed: () async {
if (controller.selectedAmount != 0) {
controller.payWithPayMob(
context,
controller.selectedAmount.toString(),
box.read(BoxName.countryCode) == 'Egypt' ? 'EGP' : 'JOD',
- () async {
- await controller.addPassengerWallet();
- controller.changePromoSheetDialogue();
- await controller.getPassengerWallet();
- },
+ // () async {
+ // await controller.addPassengerWallet();
+ // controller.changePromoSheetDialogue();
);
+ await controller.getPassengerWallet();
} else {
Toast.show(context, '⚠️ You need to choose an amount!'.tr,
AppColor.redColor);
@@ -278,7 +277,7 @@ void showPaymentOptions(BuildContext context, PaymentController controller) {
box.read(BoxName.phoneWallet) != null
? CupertinoActionSheetAction(
child: Text('💰 Pay with Wallet'.tr),
- onPressed: () {
+ onPressed: () async {
if (controller.selectedAmount != 0) {
controller.isLoading = true;
controller.update();
@@ -286,12 +285,8 @@ void showPaymentOptions(BuildContext context, PaymentController controller) {
context,
controller.selectedAmount.toString(),
box.read(BoxName.countryCode) == 'Egypt' ? 'EGP' : 'JOD',
- () async {
- await controller.addPassengerWallet();
- controller.changePromoSheetDialogue();
- await controller.getPassengerWallet();
- },
);
+ await controller.getPassengerWallet();
controller.isLoading = false;
controller.update();
} else {