Skip to content

Commit d36c729

Browse files
committed
implement null object pattern
1 parent d77cb5f commit d36c729

File tree

8 files changed

+283
-3
lines changed

8 files changed

+283
-3
lines changed

raveandroid/src/main/java/com/flutterwave/raveandroid/account/AccountContract.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import com.flutterwave.raveandroid.Payload;
5+
import com.flutterwave.raveandroid.card.CardContract;
56
import com.flutterwave.raveandroid.data.Bank;
67

78
import java.util.List;
@@ -48,6 +49,10 @@ interface UserActionsListener {
4849
void validateAccountCharge(String flwRef, String otp, String publicKey);
4950

5051
void fetchFee(Payload body, boolean internetbanking);
52+
53+
void onAttachView(AccountContract.View view);
54+
55+
void onDetachView();
5156
}
5257

5358
}

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.flutterwave.raveandroid.RavePayActivity;
4040
import com.flutterwave.raveandroid.RavePayInitializer;
4141
import com.flutterwave.raveandroid.Utils;
42+
import com.flutterwave.raveandroid.card.CardPresenter;
4243
import com.flutterwave.raveandroid.data.Bank;
4344
import com.flutterwave.raveandroid.data.Callbacks;
4445

@@ -478,6 +479,24 @@ public void showFetchFeeFailed(String s) {
478479

479480
}
480481

482+
@Override
483+
public void onResume() {
484+
super.onResume();
485+
if (presenter != null) {
486+
presenter = new AccountPresenter(getActivity(), this);
487+
}
488+
assert presenter != null;
489+
presenter.onAttachView(this);
490+
}
491+
492+
@Override
493+
public void onDetach() {
494+
super.onDetach();
495+
if (presenter != null) {
496+
presenter.onDetachView();
497+
}
498+
}
499+
481500
@SuppressLint("SetTextI18n")
482501
@Override
483502
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {

raveandroid/src/main/java/com/flutterwave/raveandroid/account/AccountPresenter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,4 +205,14 @@ public void onError(String message, String responseAsJSONString) {
205205
}
206206
});
207207
}
208+
209+
@Override
210+
public void onAttachView(AccountContract.View view) {
211+
this.mView = view;
212+
}
213+
214+
@Override
215+
public void onDetachView() {
216+
this.mView = new NullAccountView();
217+
}
208218
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.flutterwave.raveandroid.account;
2+
3+
import android.support.v4.app.Fragment;
4+
5+
import com.flutterwave.raveandroid.Payload;
6+
import com.flutterwave.raveandroid.data.Bank;
7+
8+
import java.util.List;
9+
10+
/**
11+
* Created by hfetuga on 06/02/2018.
12+
*/
13+
14+
public class NullAccountView extends Fragment implements AccountContract.View {
15+
16+
@Override
17+
public void showToast(String message) {
18+
19+
}
20+
21+
@Override
22+
public void showBanks(List<Bank> banks) {
23+
24+
}
25+
26+
@Override
27+
public void showProgressIndicator(boolean active) {
28+
29+
}
30+
31+
@Override
32+
public void onGetBanksRequestFailed(String message) {
33+
34+
}
35+
36+
@Override
37+
public void validateAccountCharge(String pbfPubKey, String flwRef) {
38+
39+
}
40+
41+
@Override
42+
public void onDisplayInternetBankingPage(String authurl, String flwRef) {
43+
44+
}
45+
46+
@Override
47+
public void onChargeAccountFailed(String message, String responseAsJSONString) {
48+
49+
}
50+
51+
@Override
52+
public void onPaymentSuccessful(String status, String responseAsJSONString) {
53+
54+
}
55+
56+
@Override
57+
public void onPaymentFailed(String status, String responseAsJSONString) {
58+
59+
}
60+
61+
@Override
62+
public void onValidateSuccessful(String flwRef, String responseAsJSONString) {
63+
64+
}
65+
66+
@Override
67+
public void onValidateError(String message, String responseAsJSONString) {
68+
69+
}
70+
71+
@Override
72+
public void onPaymentError(String s) {
73+
74+
}
75+
76+
@Override
77+
public void displayFee(String charge_amount, Payload payload, boolean internetbanking) {
78+
79+
}
80+
81+
@Override
82+
public void showFetchFeeFailed(String s) {
83+
84+
}
85+
}

raveandroid/src/main/java/com/flutterwave/raveandroid/card/CardContract.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ interface UserActionsListener {
8080
void fetchFee(Payload payload, int reason);
8181

8282
void checkForSavedCards(String email);
83+
84+
void onAttachView(CardContract.View view);
85+
86+
void onDetachView();
8387
}
8488

8589
}

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,24 @@ public void onClick(View v) {
242242

243243
}
244244

245+
@Override
246+
public void onResume() {
247+
super.onResume();
248+
if (presenter != null) {
249+
presenter = new CardPresenter(getActivity(), this);
250+
}
251+
assert presenter != null;
252+
presenter.onAttachView(this);
253+
}
254+
255+
@Override
256+
public void onDetach() {
257+
super.onDetach();
258+
if (presenter != null) {
259+
presenter.onDetachView();
260+
}
261+
}
262+
245263
@Override
246264
public void onValidateCardChargeFailed(String flwRef, String responseAsJSON) {
247265

raveandroid/src/main/java/com/flutterwave/raveandroid/card/CardPresenter.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import com.flutterwave.raveandroid.RavePayActivity;
1111
import com.flutterwave.raveandroid.RavePayInitializer;
1212
import com.flutterwave.raveandroid.Utils;
13+
import com.flutterwave.raveandroid.account.NullAccountView;
1314
import com.flutterwave.raveandroid.data.Callbacks;
1415
import com.flutterwave.raveandroid.data.CardDetsToSave;
1516
import com.flutterwave.raveandroid.data.NetworkRequestImpl;
@@ -39,7 +40,6 @@ public CardPresenter(Context context, CardContract.View mView) {
3940
this.mView = mView;
4041
}
4142

42-
4343
@Override
4444
public void chargeCard(final Payload payload) {
4545

@@ -385,8 +385,6 @@ public void onError(String message, String tokenResponseAsJSONString) {
385385
});
386386
}
387387

388-
389-
390388
@Override
391389
public void chargeToken(Payload payload) {
392390

@@ -422,4 +420,13 @@ else if (responseAsJSONString.contains("expired")) {
422420

423421
}
424422

423+
@Override
424+
public void onDetachView() {
425+
this.mView = new NullCardView();
426+
}
427+
428+
@Override
429+
public void onAttachView(CardContract.View view) {
430+
this.mView = view;
431+
}
425432
}
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
package com.flutterwave.raveandroid.card;
2+
3+
import android.support.v4.app.Fragment;
4+
import android.view.View;
5+
6+
import com.flutterwave.raveandroid.Payload;
7+
import com.flutterwave.raveandroid.data.SavedCard;
8+
import com.flutterwave.raveandroid.responses.ChargeResponse;
9+
10+
import java.util.List;
11+
12+
/**
13+
* Created by hfetuga on 06/02/2018.
14+
*/
15+
16+
public class NullCardView extends Fragment implements View.OnClickListener, CardContract.View {
17+
18+
@Override
19+
public void onClick(View v) {
20+
21+
}
22+
23+
@Override
24+
public void showProgressIndicator(boolean active) {
25+
26+
}
27+
28+
@Override
29+
public void onPaymentError(String message) {
30+
31+
}
32+
33+
@Override
34+
public void onPinAuthModelSuggested(Payload payload) {
35+
36+
}
37+
38+
@Override
39+
public void showToast(String message) {
40+
41+
}
42+
43+
@Override
44+
public void showOTPLayout(String flwRef) {
45+
46+
}
47+
48+
@Override
49+
public void onValidateSuccessful(String message, String responseAsString) {
50+
51+
}
52+
53+
@Override
54+
public void onValidateError(String message) {
55+
56+
}
57+
58+
@Override
59+
public void onVBVAuthModelUsed(String authUrlCrude, String flwRef) {
60+
61+
}
62+
63+
@Override
64+
public void onPaymentSuccessful(String status, String flwRef, String responseAsString) {
65+
66+
}
67+
68+
@Override
69+
public void onPaymentFailed(String status, String responseAsString) {
70+
71+
}
72+
73+
@Override
74+
public void showFullProgressIndicator(boolean active) {
75+
76+
}
77+
78+
@Override
79+
public void showSavedCards(List<SavedCard> cards) {
80+
81+
}
82+
83+
@Override
84+
public void onTokenRetrieved(String flwRef, String cardBIN, String token) {
85+
86+
}
87+
88+
@Override
89+
public void onTokenRetrievalError(String s) {
90+
91+
}
92+
93+
@Override
94+
public void displayFee(String charge_amount, Payload payload, int why) {
95+
96+
}
97+
98+
@Override
99+
public void showFetchFeeFailed(String s) {
100+
101+
}
102+
103+
@Override
104+
public void hideSavedCardsButton() {
105+
106+
}
107+
108+
@Override
109+
public void onChargeTokenComplete(ChargeResponse response) {
110+
111+
}
112+
113+
@Override
114+
public void onChargeCardSuccessful(ChargeResponse response) {
115+
116+
}
117+
118+
@Override
119+
public void onAVS_VBVSECURECODEModelSuggested(Payload payload) {
120+
121+
}
122+
123+
@Override
124+
public void onAVSVBVSecureCodeModelUsed(String authurl, String flwRef) {
125+
126+
}
127+
128+
@Override
129+
public void onValidateCardChargeFailed(String flwRef, String responseAsJSON) {
130+
131+
}
132+
}

0 commit comments

Comments
 (0)