1818import android .widget .EditText ;
1919import android .widget .FrameLayout ;
2020import android .widget .LinearLayout ;
21+ import android .widget .ScrollView ;
2122import android .widget .TextView ;
2223import android .widget .Toast ;
2324
2425import androidx .appcompat .app .AlertDialog ;
2526import androidx .appcompat .widget .SwitchCompat ;
27+ import androidx .core .widget .NestedScrollView ;
2628import androidx .fragment .app .Fragment ;
29+ import androidx .recyclerview .widget .LinearLayoutManager ;
30+ import androidx .recyclerview .widget .RecyclerView ;
2731
2832import com .flutterwave .raveandroid .R ;
2933import com .flutterwave .raveandroid .RavePayActivity ;
3034import com .flutterwave .raveandroid .RavePayInitializer ;
3135import com .flutterwave .raveandroid .ViewObject ;
36+ import com .flutterwave .raveandroid .card .savedcards .SavedCardRecyclerAdapter ;
3237import com .flutterwave .raveandroid .card .savedcards .SavedCardsActivity ;
3338import com .flutterwave .raveandroid .card .savedcards .SavedCardsFragment ;
3439import com .flutterwave .raveandroid .data .EmailObfuscator ;
4045import com .flutterwave .raveandroid .rave_logger .events .StartTypingEvent ;
4146import com .flutterwave .raveandroid .rave_presentation .data .AddressDetails ;
4247import com .flutterwave .raveandroid .rave_presentation .data .events .ErrorEvent ;
48+ import com .flutterwave .raveandroid .rave_remote .Callbacks ;
4349import com .flutterwave .raveandroid .rave_remote .responses .SaveCardResponse ;
4450import com .flutterwave .raveutils .verification .AVSVBVFragment ;
4551import com .flutterwave .raveutils .verification .OTPFragment ;
5359import java .lang .reflect .Type ;
5460import java .text .ParseException ;
5561import java .text .SimpleDateFormat ;
62+ import java .util .ArrayList ;
5663import java .util .Calendar ;
5764import java .util .HashMap ;
5865import 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 /**
0 commit comments