Skip to content

Commit a81e3a2

Browse files
authoredMar 20, 2025
Merge pull request #302 from codeismail-waver/bugfix/fix-exception-crash
Bugfix/fix exception crash
2 parents 171cc85 + 0e8bc23 commit a81e3a2

File tree

11 files changed

+88
-57
lines changed

11 files changed

+88
-57
lines changed
 

‎rave_android/src/main/java/com/flutterwave/raveandroid/account/AccountFragment.java

+7-3
Original file line numberDiff line numberDiff line change
@@ -401,8 +401,10 @@ public void onGetBanksRequestFailed(String message) {
401401
public void collectOtp(String publicKey, String flutterwaveReference, String validateInstruction) {
402402
this.flwRef = flutterwaveReference;
403403

404-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
405-
.showOtpScreen(validateInstruction);
404+
if (isAdded()){
405+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
406+
.showOtpScreen(validateInstruction);
407+
}
406408
}
407409

408410
@Override
@@ -424,8 +426,10 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
424426
@Override
425427
public void displayInternetBankingPage(String authurl, String flwRef) {
426428
this.flwRef = flwRef;
427-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
429+
if(isAdded()){
430+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
428431
.showWebpageVerificationScreen(authurl);
432+
}
429433
}
430434

431435
@Override

‎rave_android/src/main/java/com/flutterwave/raveandroid/ach/AchFragment.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,10 @@ public void showRedirectMessage(boolean active) {
157157

158158
@Override
159159
public void showWebView(String authUrl, String flwRef) {
160-
161-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
162-
.showWebpageVerificationScreen(authUrl);
160+
if (isAdded()){
161+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
162+
.showWebpageVerificationScreen(authUrl);
163+
}
163164
}
164165

165166
private void dismissDialog() {

‎rave_android/src/main/java/com/flutterwave/raveandroid/barter/BarterFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,10 @@ public void showFetchFeeFailed(String message) {
169169
public void loadBarterCheckout(String authUrlCrude, String flwRef) {
170170

171171
this.flwRef = flwRef;
172-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
173-
.showBarterCheckoutScreen(authUrlCrude, flwRef);
172+
if(isAdded()){
173+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
174+
.showBarterCheckoutScreen(authUrlCrude, flwRef);
175+
}
174176

175177
}
176178

‎rave_android/src/main/java/com/flutterwave/raveandroid/card/CardFragment.java

+48-37
Original file line numberDiff line numberDiff line change
@@ -421,8 +421,10 @@ public void onPaymentError(String errorMessage) {
421421
@Override
422422
public void collectCardPin(final Payload payload) {
423423
this.payLoad = payload; //added so as to get back in onActivityResult
424-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
425-
.showPinScreen();
424+
if (isAdded()){
425+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
426+
.showPinScreen();
427+
}
426428
}
427429

428430
@Override
@@ -485,7 +487,9 @@ public void onSaveInstanceState(Bundle outState) {
485487
* @param message = text to display
486488
*/
487489
public void showToast(String message) {
488-
Toast.makeText(requireContext(), message+"", Toast.LENGTH_SHORT).show();
490+
if(isAdded()){
491+
Toast.makeText(requireContext(), message+"", Toast.LENGTH_SHORT).show();
492+
}
489493
}
490494

491495
/**
@@ -508,15 +512,19 @@ private void dismissDialog() {
508512
public void collectOtp(String flwRef, String message) {
509513
this.flwRef = flwRef;
510514
dismissDialog();
511-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
512-
.showOtpScreen(message);
515+
if(isAdded()){
516+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
517+
.showOtpScreen(message);
518+
}
513519
}
514520

515521
public void showOTPLayoutForSavedCard(Payload payload, String authInstruction) {
516522
this.payLoad = payload;
517523
dismissDialog();
518-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
519-
.showOtpScreenForSavedCard(authInstruction);
524+
if(isAdded()){
525+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
526+
.showOtpScreenForSavedCard(authInstruction);
527+
}
520528
}
521529

522530
@Override
@@ -576,8 +584,10 @@ public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction)
576584
public void showWebPage(String authenticationUrl, String flwRef) {
577585

578586
this.flwRef = flwRef;
579-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
580-
.showWebpageVerificationScreen(authenticationUrl);
587+
if(isAdded()){
588+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
589+
.showWebpageVerificationScreen(authenticationUrl);
590+
}
581591
}
582592

583593
@Override
@@ -774,19 +784,17 @@ public void onClick(DialogInterface dialog, int which) {
774784
public void collectCardAddressDetails(final Payload payload, String authModel) {
775785
this.payLoad = payload;
776786
this.authModel = authModel;
777-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
778-
.showAddressScreen();
787+
if(isAdded()){
788+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
789+
.showAddressScreen();
790+
}
779791
}
780792

781793
private class ExpiryWatcher implements TextWatcher {
782794

783-
private final Calendar calendar;
784-
private final SimpleDateFormat simpleDateFormat;
785795
private String lastInput = "";
786796

787797
public ExpiryWatcher() {
788-
calendar = Calendar.getInstance();
789-
simpleDateFormat = new SimpleDateFormat("MM/yy");
790798
}
791799

792800
@Override
@@ -803,44 +811,47 @@ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
803811
public void afterTextChanged(Editable editable) {
804812
String input = editable.toString();
805813
String cardExpiryToSet = cardExpiryTv.getText().toString() + "/";
814+
String defaultExpiry = "12";
806815

807-
try {
808-
calendar.setTime(simpleDateFormat.parse(input));
809-
} catch (ParseException e) {
810-
811-
if (editable.length() == 2 && !lastInput.endsWith("/")) {
816+
if (editable.length() == 2 && !lastInput.endsWith("/")) {
812817

818+
try {
813819
int month = Integer.parseInt(input);
814820
if (month <= 12) {
815821
cardExpiryTv.setText(cardExpiryToSet);
816822
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
817823
} else {
818-
cardExpiryTv.setText(getResources().getString(R.string.defaultCardExpiry));
824+
cardExpiryTv.setText(defaultExpiry);
819825
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
820826
}
821-
} else if (editable.length() == 2 && lastInput.endsWith("/")) {
822-
try {
823-
int month = Integer.parseInt(input);
824-
if (month <= 12) {
825-
cardExpiryTv.setText(cardExpiryTv.getText().toString().substring(0, 1));
826-
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
827-
} else {
828-
cardExpiryTv.setText(getResources().getString(R.string.defaultCardExpiry));
829-
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
830-
}
831-
} catch (NumberFormatException ex) {
832-
cardExpiryTv.setText(input.replace("/", ""));
827+
}catch (NumberFormatException ex){
828+
cardExpiryTv.setText(defaultExpiry);
829+
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
830+
}
831+
} else if (editable.length() == 2 && lastInput.endsWith("/")) {
832+
try {
833+
int month = Integer.parseInt(input);
834+
if (month <= 12) {
835+
cardExpiryTv.setText(cardExpiryTv.getText().toString().substring(0, 1));
836+
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
837+
} else {
838+
cardExpiryTv.setText(defaultExpiry);
833839
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
834-
} catch (Resources.NotFoundException ex) {
835-
ex.printStackTrace();
836840
}
841+
} catch (NumberFormatException ex) {
842+
cardExpiryTv.setText(input.replace("/", ""));
843+
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
844+
}
837845

838-
} else if (editable.length() == 1) {
846+
} else if (editable.length() == 1) {
847+
try {
839848
int month = Integer.parseInt(input);
840849
if (month > 1) {
841-
cardExpiryTv.setText("0" + cardExpiryTv.getText().toString() + "/");
850+
cardExpiryTv.setText(String.format(getString(R.string.formatted_expiry), input));
842851
cardExpiryTv.setSelection(cardExpiryTv.getText().toString().length());
843852
}
853+
}catch (NumberFormatException ignored){
854+
844855
}
845856
}
846857

‎rave_android/src/main/java/com/flutterwave/raveandroid/francMobileMoney/FrancMobileMoneyFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -203,8 +203,10 @@ public void showProgressIndicator(boolean active) {
203203
public void showWebPage(String authenticationUrl, String flwRef) {
204204

205205
this.flwRef = flwRef;
206-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
207-
.showWebpageVerificationScreen(authenticationUrl,flwRef);
206+
if (isAdded()){
207+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
208+
.showWebpageVerificationScreen(authenticationUrl,flwRef);
209+
}
208210
}
209211

210212

‎rave_android/src/main/java/com/flutterwave/raveandroid/ghmobilemoney/GhMobileMoneyFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,10 @@ public void showWebPage(String authenticationUrl
232232
) {
233233

234234
// this.flwRef = flwRef;
235-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
236-
.showWebpageVerificationScreen(authenticationUrl);
235+
if(isAdded()){
236+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
237+
.showWebpageVerificationScreen(authenticationUrl);
238+
}
237239
}
238240

239241

‎rave_android/src/main/java/com/flutterwave/raveandroid/rwfmobilemoney/RwfMobileMoneyFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -219,8 +219,10 @@ public void showToast(String message) {
219219

220220
@Override
221221
public void showWebPage(String authenticationUrl) {
222-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
223-
.showWebpageVerificationScreen(authenticationUrl);
222+
if (isAdded()){
223+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
224+
.showWebpageVerificationScreen(authenticationUrl);
225+
}
224226
}
225227

226228
@Override

‎rave_android/src/main/java/com/flutterwave/raveandroid/sabankaccount/SaBankAccountFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,10 @@ public void showPollingIndicator(boolean active) {
137137
@Override
138138
public void showWebView(String authUrl, String flwRef){
139139
this.flwRef = flwRef;
140-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
141-
.showWebpageVerificationScreen(authUrl);
140+
if (isAdded()){
141+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
142+
.showWebpageVerificationScreen(authUrl);
143+
}
142144
}
143145

144146
@Override

‎rave_android/src/main/java/com/flutterwave/raveandroid/ugmobilemoney/UgMobileMoneyFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,10 @@ public void showToast(String message) {
234234

235235
@Override
236236
public void showWebPage(String authenticationUrl) {
237-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
238-
.showWebpageVerificationScreen(authenticationUrl);
237+
if(isAdded()){
238+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
239+
.showWebpageVerificationScreen(authenticationUrl);
240+
}
239241
}
240242

241243
@Override

‎rave_android/src/main/java/com/flutterwave/raveandroid/zmmobilemoney/ZmMobileMoneyFragment.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,10 @@ public void showToast(String message) {
267267

268268
@Override
269269
public void showWebPage(String authenticationUrl) {
270-
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
271-
.showWebpageVerificationScreen(authenticationUrl);
270+
if(isAdded()){
271+
new RaveVerificationUtils(this, ravePayInitializer.isStaging(), ravePayInitializer.getPublicKey(), ravePayInitializer.getTheme())
272+
.showWebpageVerificationScreen(authenticationUrl);
273+
}
272274
}
273275

274276
@Override

‎rave_android/src/main/res/values/strings.xml

+1
Original file line numberDiff line numberDiff line change
@@ -203,5 +203,6 @@
203203
<string name="please_select_a_card">Please select a card</string>
204204
<string name="barter_funding">Barter Funding</string>
205205
<string name="verifying_transaction">Verifying transaction...</string>
206+
<string name="formatted_expiry">0%1$s/</string>
206207

207208
</resources>

0 commit comments

Comments
 (0)
Please sign in to comment.