Skip to content

Commit 2c725a9

Browse files
committed
Add cancel functionality for polling
1 parent 60fd9b5 commit 2c725a9

File tree

4 files changed

+32
-9
lines changed

4 files changed

+32
-9
lines changed

raveandroid/src/main/java/com/flutterwave/raveandroid/banktransfer/BankTransferContract.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.flutterwave.raveandroid.Payload;
44
import com.flutterwave.raveandroid.RavePayInitializer;
55
import com.flutterwave.raveandroid.ViewObject;
6-
import com.flutterwave.raveandroid.responses.ChargeResponse;
76

87
import java.util.HashMap;
98

@@ -25,6 +24,8 @@ interface View {
2524
void showFieldError(int viewID, String message, Class<?> viewType);
2625
void onValidationSuccessful(HashMap<String, ViewObject> dataHashMap);
2726
void onAmountValidationFailed();
27+
28+
void onPollingCanceled(String flwRef, String txRef, final String responseAsJSONString);
2829
}
2930

3031
interface UserActionsListener {
@@ -35,5 +36,7 @@ interface UserActionsListener {
3536
void processTransaction(HashMap<String, ViewObject> dataHashMap, RavePayInitializer ravePayInitializer);
3637
void onDataCollected(HashMap<String, ViewObject> dataHashMap);
3738
void startPaymentVerification();
39+
40+
void cancelPolling();
3841
}
3942
}

raveandroid/src/main/java/com/flutterwave/raveandroid/banktransfer/BankTransferFragment.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ public void showPollingIndicator(boolean active) {
162162
@Override
163163
public void onClick(DialogInterface dialog, int which) {
164164
pollingProgressDialog.dismiss();
165+
presenter.cancelPolling();
165166
}
166167
});
167168
pollingProgressDialog.show();
@@ -181,10 +182,20 @@ private void clearErrors() {
181182
}
182183

183184

185+
@Override
186+
public void onPollingCanceled(String flwRef, String txRef, final String responseAsJSONString) {
187+
showBackToApp(getString(R.string.bant_transfer_polling_cancelled_message), responseAsJSONString);
188+
}
189+
190+
184191

185192
@Override
186193
public void onPollingTimeout(String flwRef, String txRef, final String responseAsJSONString) {
187-
transferStatusTv.setText(getString(R.string.pay_with_bank_timeout_notification));
194+
showBackToApp(getString(R.string.pay_with_bank_timeout_notification), responseAsJSONString);
195+
}
196+
197+
private void showBackToApp(String transferStatusMessage, final String responseAsJSONString) {
198+
transferStatusTv.setText(transferStatusMessage);
188199
transferStatusTv.setVisibility(View.VISIBLE);
189200

190201
verifyPaymentButton.setText(getString(R.string.back_to_app));

raveandroid/src/main/java/com/flutterwave/raveandroid/banktransfer/BankTransferPresenter.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import com.flutterwave.raveandroid.RavePayInitializer;
1111
import com.flutterwave.raveandroid.Utils;
1212
import com.flutterwave.raveandroid.ViewObject;
13-
import com.flutterwave.raveandroid.banktransfer.BankTransferContract;
1413
import com.flutterwave.raveandroid.card.ChargeRequestBody;
1514
import com.flutterwave.raveandroid.data.Callbacks;
1615
import com.flutterwave.raveandroid.data.NetworkRequestImpl;
@@ -32,6 +31,7 @@ public class BankTransferPresenter implements BankTransferContract.UserActionsLi
3231
private AmountValidator amountValidator = new AmountValidator();
3332
private String txRef = null, flwRef = null, publicKey = null;
3433
private long requeryCountdownTime = 0;
34+
private boolean pollingCancelled = false;
3535

3636
BankTransferPresenter(Context context, BankTransferContract.View mView) {
3737
this.context = context;
@@ -123,6 +123,11 @@ public void startPaymentVerification() {
123123
requeryTx();
124124
}
125125

126+
@Override
127+
public void cancelPolling() {
128+
pollingCancelled = true;
129+
}
130+
126131
@Override
127132
public void requeryTx() {
128133

@@ -136,14 +141,17 @@ public void onSuccess(RequeryResponse response, String responseAsJSONString) {
136141
if (response.getData() == null) {
137142
mView.onPaymentFailed(response.getStatus(), responseAsJSONString);
138143
} else if (response.getData().getChargeResponseCode().equals("01")) {
139-
140-
if ((System.currentTimeMillis() - requeryCountdownTime) < 300000) {
141-
requeryTx();
142-
} else {
144+
if (pollingCancelled) {
143145
mView.showPollingIndicator(false);
144-
mView.onPollingTimeout(flwRef, txRef, responseAsJSONString);
146+
mView.onPollingCanceled(flwRef, txRef, responseAsJSONString);
147+
} else {
148+
if ((System.currentTimeMillis() - requeryCountdownTime) < 300000) {
149+
requeryTx();
150+
} else {
151+
mView.showPollingIndicator(false);
152+
mView.onPollingTimeout(flwRef, txRef, responseAsJSONString);
153+
}
145154
}
146-
147155
} else if (response.getData().getChargeResponseCode().equals("00")) {
148156
mView.showPollingIndicator(false);
149157
mView.onPaymentSuccessful(flwRef, txRef, responseAsJSONString);

raveandroid/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137
<string name="currency_placeholder">NGN</string>
138138
<string name="account_number_placeholder">0690000031</string>
139139
<string name="pay_with_bank_timeout_notification">Payments are currently slow at your bank. Slow payments are usually confirmed within 30 minutes. You will get a receipt once your payment is confirmed.</string>
140+
<string name="bant_transfer_polling_cancelled_message">You will get a receipt once your payment is confirmed.</string>
140141
<string-array name="gh_mobile_money_networks">
141142
<item>Select network</item>
142143
<item>MTN</item>

0 commit comments

Comments
 (0)