Skip to content

Commit d76a178

Browse files
committed
make optional mutability of emails and phone numbers for saving cards
1 parent 310fdb1 commit d76a178

File tree

9 files changed

+59
-16
lines changed

9 files changed

+59
-16
lines changed

app/src/main/java/com/flutterwave/rave_android/MainActivity.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -301,7 +301,7 @@ private void validateEntries() {
301301
.acceptMpesaPayments(isMpesaSwitch.isChecked())
302302
.acceptAccountPayments(accountSwitch.isChecked())
303303
.acceptCardPayments(cardSwitch.isChecked())
304-
.allowSaveCardFeature(allowSavedCardsSwitch.isChecked())
304+
.allowSaveCardFeature(allowSavedCardsSwitch.isChecked(), true)
305305
.acceptAchPayments(accountAchSwitch.isChecked())
306306
.acceptGHMobileMoneyPayments(ghMobileMoneySwitch.isChecked())
307307
.acceptUgMobileMoneyPayments(ugMobileMoneySwitch.isChecked())
@@ -320,7 +320,7 @@ private void validateEntries() {
320320
.setEmail(email)
321321
.setfName(fName)
322322
.setlName(lName)
323-
.setPhoneNumber(phoneNumber)
323+
.setPhoneNumber(phoneNumber, false)
324324
.setNarration(narration)
325325
.setPublicKey(publicKey)
326326
.setEncryptionKey(encryptionKey)

rave_android/src/main/java/com/flutterwave/raveandroid/RavePayActivity.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.flutterwave.raveandroid.francMobileMoney.FrancMobileMoneyFragment;
3838
import com.flutterwave.raveandroid.ghmobilemoney.GhMobileMoneyFragment;
3939
import com.flutterwave.raveandroid.mpesa.MpesaFragment;
40+
import com.flutterwave.raveandroid.rave_cache.SharedPrefsRepo;
4041
import com.flutterwave.raveandroid.rave_core.di.DeviceIdGetterModule;
4142
import com.flutterwave.raveandroid.rave_java_commons.RaveConstants;
4243
import com.flutterwave.raveandroid.rave_logger.Event;
@@ -107,6 +108,9 @@ public class RavePayActivity extends AppCompatActivity {
107108
@Inject
108109
EventLogger eventLogger;
109110

111+
@Inject
112+
SharedPrefsRepo sharedManager;
113+
110114
@Override
111115
protected void onCreate(Bundle savedInstanceState) {
112116
super.onCreate(savedInstanceState);

rave_android/src/main/java/com/flutterwave/raveandroid/RavePayInitializer.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class RavePayInitializer {
1616
private boolean isPhoneEditable = true;
1717
String phoneNumber = "";
1818
private boolean saveCardFeatureAllowed = true;
19+
private boolean usePhoneAndEmailSuppliedToSaveCards = true;
1920
String email;
2021
double amount;
2122
String publicKey;
@@ -41,7 +42,8 @@ public class RavePayInitializer {
4142
public RavePayInitializer(String email, double amount, String publicKey,
4243
String encryptionKey, String txRef, String narration,
4344
String currency, String country, String fName,
44-
String lName, int theme, String phoneNumber, boolean isPhoneEditable, boolean saveCardFeatureAllowed,
45+
String lName, int theme, String phoneNumber,
46+
boolean isPhoneEditable, boolean saveCardFeatureAllowed, boolean usePhoneAndEmailSuppliedToSaveCards,
4547
boolean isPermanent, int duration, int frequency,
4648
boolean staging, String meta, String subAccounts, String payment_plan, boolean isPreAuth,
4749
boolean showStagingLabel, boolean displayFee, ArrayList<Integer> orderedPaymentTypesList) {
@@ -67,6 +69,7 @@ public RavePayInitializer(String email, double amount, String publicKey,
6769
this.phoneNumber = phoneNumber;
6870
this.isPhoneEditable = isPhoneEditable;
6971
this.saveCardFeatureAllowed = saveCardFeatureAllowed;
72+
this.usePhoneAndEmailSuppliedToSaveCards = usePhoneAndEmailSuppliedToSaveCards;
7073
this.showStagingLabel = showStagingLabel;
7174
this.displayFee = displayFee;
7275
if (!orderedPaymentTypesList.isEmpty())
@@ -260,4 +263,8 @@ public void setDuration(int duration) {
260263
public boolean isSaveCardFeatureAllowed() {
261264
return saveCardFeatureAllowed;
262265
}
266+
267+
public boolean isUsePhoneAndEmailSuppliedToSaveCards() {
268+
return usePhoneAndEmailSuppliedToSaveCards;
269+
}
263270
}

rave_android/src/main/java/com/flutterwave/raveandroid/RaveUiManager.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ public class RaveUiManager extends RavePayManager {
4242
private android.app.Fragment fragment;
4343
private int theme = R.style.DefaultTheme;
4444
private boolean allowSaveCard = true;
45+
private boolean usePhoneAndEmailSuppliedToSaveCards = true;
4546
protected boolean showStagingLabel = true;
4647
private Boolean allowEditPhone = true;
4748

@@ -189,6 +190,12 @@ public RaveUiManager allowSaveCardFeature(boolean allowSaveCard) {
189190
return this;
190191
}
191192

193+
public RaveUiManager allowSaveCardFeature(boolean allowSaveCard, boolean usePhoneAndEmailSuppliedToSaveCards) {
194+
this.allowSaveCard = allowSaveCard;
195+
this.usePhoneAndEmailSuppliedToSaveCards = usePhoneAndEmailSuppliedToSaveCards;
196+
return this;
197+
}
198+
192199
public RaveUiManager acceptAchPayments(boolean withAch) {
193200
if (!orderedPaymentTypesList.contains(PAYMENT_TYPE_ACH) && withAch)
194201
orderedPaymentTypesList.add(PAYMENT_TYPE_ACH);
@@ -347,6 +354,7 @@ private RavePayInitializer createRavePayInitializer() {
347354
getPhoneNumber(),
348355
allowEditPhone,
349356
allowSaveCard,
357+
usePhoneAndEmailSuppliedToSaveCards,
350358
isPermanent(),
351359
getDuration(),
352360
getFrequency(),

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

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ private void setListeners() {
187187
@Override
188188
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
189189
if (b) {
190-
saveNewCardLayout.setVisibility(VISIBLE);
190+
presenter.onSavedCardSwitchSwitchedOn(ravePayInitializer);
191191
shouldISaveThisCard = true;
192192
} else {
193193
saveNewCardLayout.setVisibility(View.GONE);
@@ -197,6 +197,15 @@ public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
197197
});
198198
}
199199

200+
@Override
201+
public void setSavedCardsLayoutVisibility(boolean showPhoneEmailFields) {
202+
if (showPhoneEmailFields) {
203+
saveNewCardLayout.setVisibility(VISIBLE);
204+
} else {
205+
saveNewCardLayout.setVisibility(View.GONE);
206+
}
207+
}
208+
200209
private void onSavedCardSelected(SavedCard savedCard) {
201210
selectedSavedCard = savedCard;
202211
chargeType = SAVED_CARD_CHARGE;

rave_android/src/main/java/com/flutterwave/raveandroid/card/CardUiContract.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ interface View extends CardContract.CardInteractor {
3333
void showCardSavingOption(boolean b);
3434

3535
void setHasSavedCards(boolean b);
36+
37+
void setSavedCardsLayoutVisibility(boolean showPhoneEmailFields);
3638
}
3739

3840
interface UserActionsListener extends CardContract.CardPaymentHandler {
@@ -45,6 +47,8 @@ interface UserActionsListener extends CardContract.CardPaymentHandler {
4547

4648
void init(RavePayInitializer ravePayInitializer);
4749

50+
void onSavedCardSwitchSwitchedOn(RavePayInitializer ravePayInitializer);
51+
4852
void onDataCollected(HashMap<String, ViewObject> dataHashMap);
4953

5054
void saveCardToSharedPreferences(List<SavedCard> cards, String phoneNumber, String publicKey);

rave_android/src/main/java/com/flutterwave/raveandroid/card/CardUiPresenter.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -288,16 +288,8 @@ public void saveCardToSharedPreferences(List<SavedCard> cards, String phoneNumbe
288288

289289
@Override
290290
public void retrieveSavedCardsFromMemory(String phoneNumber, String publicKey) {
291-
if (phoneNumber != null)
292-
if (!phoneNumber.isEmpty())
293-
savedCards = sharedManager.getSavedCards(phoneNumber, publicKey);
294-
}
295-
296-
private void retrievePhoneNumberFromMemory(RavePayInitializer ravePayInitializer) {
297-
String phoneNumber = sharedManager.fetchPhoneNumber();
298-
if (ravePayInitializer.getPhoneNumber() == null || ravePayInitializer.getPhoneNumber().isEmpty()) {
299-
ravePayInitializer.setPhoneNumber(phoneNumber);
300-
}
291+
if (phoneNumber != null && !phoneNumber.isEmpty())
292+
savedCards = sharedManager.getSavedCards(phoneNumber, publicKey);
301293
}
302294

303295
@Override
@@ -306,8 +298,9 @@ public void checkForSavedCardsInMemory(RavePayInitializer ravePayInitializer) {
306298
savedCards = new ArrayList<>();
307299
}
308300

309-
retrievePhoneNumberFromMemory(ravePayInitializer);
310-
retrieveSavedCardsFromMemory(ravePayInitializer.getPhoneNumber(), ravePayInitializer.getPublicKey());
301+
if(ravePayInitializer.getPhoneNumber().equals(sharedManager.fetchPhoneNumber())){
302+
retrieveSavedCardsFromMemory(ravePayInitializer.getPhoneNumber(), ravePayInitializer.getPublicKey());
303+
}
311304

312305
if (!savedCards.isEmpty()) {
313306
mView.setHasSavedCards(true);
@@ -325,6 +318,15 @@ public void onAttachView(CardUiContract.View view) {
325318
this.mView = view;
326319
}
327320

321+
322+
@Override
323+
public void onSavedCardSwitchSwitchedOn(RavePayInitializer ravePayInitializer) {
324+
boolean shouldHideSavedCardsLayout = ravePayInitializer.isUsePhoneAndEmailSuppliedToSaveCards() &&
325+
emailValidator.isEmailValid(ravePayInitializer.getEmail()) &&
326+
(ravePayInitializer.getPhoneNumber() != null && !ravePayInitializer.getPhoneNumber().isEmpty());
327+
mView.setSavedCardsLayoutVisibility(!shouldHideSavedCardsLayout);
328+
}
329+
328330
@Override
329331
public void init(RavePayInitializer ravePayInitializer) {
330332

rave_android/src/main/java/com/flutterwave/raveandroid/card/NullUiCardView.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ public void onSavedCardsLookupFailed(String message) {
4646

4747
}
4848

49+
@Override
50+
public void setSavedCardsLayoutVisibility(boolean showPhoneEmailFields) {
51+
52+
}
53+
4954
@Override
5055
public void showSavedCardsLayout(List<SavedCard> savedCardsList) {
5156

rave_cache/src/main/java/com/flutterwave/raveandroid/rave_cache/SharedPrefsRepo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,8 @@ private void savePhoneNumber(String phoneNumber) {
9696
public String fetchPhoneNumber() {
9797
return sharedPreferences.getString(PHONE_NUMBER, "");
9898
}
99+
100+
public void clear(){
101+
editor.clear().apply();
102+
}
99103
}

0 commit comments

Comments
 (0)