Skip to content

Commit 88a51f1

Browse files
committed
if save cards exists for a number,show the saved cards first.
1 parent 2ecb552 commit 88a51f1

File tree

5 files changed

+69
-19
lines changed

5 files changed

+69
-19
lines changed

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

Lines changed: 56 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,22 @@
1818
import android.widget.EditText;
1919
import android.widget.FrameLayout;
2020
import android.widget.LinearLayout;
21+
import android.widget.ScrollView;
2122
import android.widget.TextView;
2223
import android.widget.Toast;
2324

2425
import androidx.appcompat.app.AlertDialog;
2526
import androidx.appcompat.widget.SwitchCompat;
27+
import androidx.core.widget.NestedScrollView;
2628
import androidx.fragment.app.Fragment;
29+
import androidx.recyclerview.widget.LinearLayoutManager;
30+
import androidx.recyclerview.widget.RecyclerView;
2731

2832
import com.flutterwave.raveandroid.R;
2933
import com.flutterwave.raveandroid.RavePayActivity;
3034
import com.flutterwave.raveandroid.RavePayInitializer;
3135
import com.flutterwave.raveandroid.ViewObject;
36+
import com.flutterwave.raveandroid.card.savedcards.SavedCardRecyclerAdapter;
3237
import com.flutterwave.raveandroid.card.savedcards.SavedCardsActivity;
3338
import com.flutterwave.raveandroid.card.savedcards.SavedCardsFragment;
3439
import com.flutterwave.raveandroid.data.EmailObfuscator;
@@ -40,6 +45,7 @@
4045
import com.flutterwave.raveandroid.rave_logger.events.StartTypingEvent;
4146
import com.flutterwave.raveandroid.rave_presentation.data.AddressDetails;
4247
import com.flutterwave.raveandroid.rave_presentation.data.events.ErrorEvent;
48+
import com.flutterwave.raveandroid.rave_remote.Callbacks;
4349
import com.flutterwave.raveandroid.rave_remote.responses.SaveCardResponse;
4450
import com.flutterwave.raveutils.verification.AVSVBVFragment;
4551
import com.flutterwave.raveutils.verification.OTPFragment;
@@ -53,6 +59,7 @@
5359
import java.lang.reflect.Type;
5460
import java.text.ParseException;
5561
import java.text.SimpleDateFormat;
62+
import java.util.ArrayList;
5663
import java.util.Calendar;
5764
import java.util.HashMap;
5865
import java.util.List;
@@ -125,6 +132,8 @@ public class CardFragment extends Fragment implements View.OnClickListener, Card
125132
private TextInputLayout saveCardPhoneNoTil;
126133
private String responseAsJsonString;
127134
private SavedCard selectedSavedCard;
135+
private ScrollView newCardOverallLay;
136+
private NestedScrollView savedCardOverallLay;
128137

129138
@Override
130139
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -176,6 +185,7 @@ private void setListeners() {
176185
cardExpiryTv.addTextChangedListener(new ExpiryWatcher());
177186
payButton.setOnClickListener(this);
178187
useASavedCardTv.setOnClickListener(this);
188+
useAnotherCardTv.setOnClickListener(this);
179189

180190
cardExpiryTv.setOnFocusChangeListener(this);
181191
cardNoTv.setOnFocusChangeListener(this);
@@ -237,8 +247,8 @@ private void initializeViews() {
237247
saveCardPhoneNoTil = (TextInputLayout) v.findViewById(R.id.save_card_phoneNoTil);
238248
saveCardEmailTil = (TextInputLayout) v.findViewById(R.id.save_card_emailTil);
239249
saveNewCardLayout = (LinearLayout) v.findViewById(R.id.rave_layout_for_saving_card);
240-
241-
250+
newCardOverallLay = (ScrollView) v.findViewById(R.id.new_card_overall_lay);
251+
savedCardOverallLay = (NestedScrollView) v.findViewById(R.id.saved_card_overall_lay);
242252
}
243253

244254

@@ -257,6 +267,19 @@ public void onClick(View view) {
257267
collectDataForSavedCardCharge();
258268
}
259269
}
270+
if(i == R.id.rave_use_new_card_tv){
271+
switchToSaveCards(false);
272+
}
273+
}
274+
275+
private void switchToSaveCards(boolean switchToSaveCards){
276+
if(switchToSaveCards){
277+
savedCardOverallLay.setVisibility(VISIBLE);
278+
newCardOverallLay.setVisibility(GONE);
279+
} else {
280+
savedCardOverallLay.setVisibility(GONE);
281+
newCardOverallLay.setVisibility(VISIBLE);
282+
}
260283
}
261284

262285
private void collectDataForSavedCardCharge() {
@@ -496,20 +519,41 @@ public void showOTPLayoutForSavedCard(Payload payload, String authInstruction) {
496519

497520
@Override
498521
public void showSavedCardsLayout(List<SavedCard> savedCardsList) {
499-
Intent intent = new Intent(getContext(), SavedCardsActivity.class);
500-
Type savedCardsListType = new TypeToken<List<SavedCard>>() {
501-
}.getType();
502-
intent.putExtra(SavedCardsFragment.EXTRA_SAVED_CARDS,
503-
(new Gson()).toJson(savedCardsList, savedCardsListType));
504-
intent.putExtra(SavedCardsActivity.ACTIVITY_MOTIVE, SavedCardsFragment.SAVED_CARD_MOTIVE);
505-
startActivityForResult(intent, FOR_SAVED_CARDS);
522+
switchToSaveCards(true);
523+
// Intent intent = new Intent(getContext(), SavedCardsActivity.class);
524+
// Type savedCardsListType = new TypeToken<List<SavedCard>>() {
525+
// }.getType();
526+
// intent.putExtra(SavedCardsFragment.EXTRA_SAVED_CARDS,
527+
// (new Gson()).toJson(savedCardsList, savedCardsListType));
528+
// intent.putExtra(SavedCardsActivity.ACTIVITY_MOTIVE, SavedCardsFragment.SAVED_CARD_MOTIVE);
529+
// startActivityForResult(intent, FOR_SAVED_CARDS);
506530
}
507531

508532
@Override
509-
public void setHasSavedCards(boolean b) {
533+
public void setHasSavedCards(boolean b, List<SavedCard> savedCards) {
510534
hasSavedCards = b;
511-
if (b) useASavedCardTv.setVisibility(VISIBLE);
512-
else useASavedCardTv.setVisibility(GONE);
535+
switchToSaveCards(b);
536+
if (b) {
537+
useASavedCardTv.setVisibility(VISIBLE);
538+
setUpSavedCardsAdapter(savedCards);
539+
} else {
540+
useASavedCardTv.setVisibility(GONE);
541+
}
542+
}
543+
544+
private void setUpSavedCardsAdapter(List<SavedCard> savedCards){
545+
if (savedCards == null) savedCards = new ArrayList<>();
546+
SavedCardRecyclerAdapter adapter = new SavedCardRecyclerAdapter();
547+
adapter.set(savedCards);
548+
adapter.setSavedCardSelectedListener(new Callbacks.SavedCardSelectedListener() {
549+
@Override
550+
public void onCardSelected(SavedCard savedCard) {
551+
onSavedCardSelected(savedCard);
552+
}
553+
});
554+
RecyclerView recyclerView = (RecyclerView) v.findViewById(R.id.rave_recycler);
555+
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
556+
recyclerView.setAdapter(adapter);
513557
}
514558

515559
/**

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ interface View extends CardContract.CardInteractor {
3232

3333
void showCardSavingOption(boolean b);
3434

35-
void setHasSavedCards(boolean b);
35+
void setHasSavedCards(boolean b, List<SavedCard> savedCards);
3636

3737
void setSavedCardsLayoutVisibility(boolean showPhoneEmailFields);
3838
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ public void checkForSavedCardsInMemory(RavePayInitializer ravePayInitializer) {
303303
}
304304

305305
if (!savedCards.isEmpty()) {
306-
mView.setHasSavedCards(true);
306+
mView.setHasSavedCards(true, savedCards);
307307
}
308308
}
309309

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ public void showProgressIndicator(boolean active) {
2626

2727
}
2828

29+
@Override
30+
public void setHasSavedCards(boolean b, List<SavedCard> savedCards) {
31+
32+
}
33+
2934
@Override
3035
public void onCardSaveSuccessful(SaveCardResponse response, String phoneNumber) {
3136

@@ -56,11 +61,6 @@ public void showSavedCardsLayout(List<SavedCard> savedCardsList) {
5661

5762
}
5863

59-
@Override
60-
public void setHasSavedCards(boolean b) {
61-
62-
}
63-
6464
@Override
6565
public void onValidationSuccessful(HashMap<String, ViewObject> dataHashMap) {
6666

rave_android/src/main/res/layout/rave_sdk_fragment_card.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
tools:context=".card.CardFragment">
1010

1111
<ScrollView
12+
android:id="@+id/new_card_overall_lay"
1213
android:layout_width="match_parent"
1314
android:layout_height="match_parent"
1415
android:fillViewport="true">
@@ -279,5 +280,10 @@
279280
</ScrollView>
280281

281282

283+
<include
284+
android:id="@+id/saved_card_overall_lay"
285+
android:visibility="gone" layout="@layout/rave_sdk_pick_saved_card_layout"/>
286+
287+
282288
</androidx.coordinatorlayout.widget.CoordinatorLayout>
283289

0 commit comments

Comments
 (0)