@@ -12,105 +12,103 @@ import com.google.gson.Gson
1212/* *
1313 * This webinterface handles events from the webview
1414 */
15- internal class WebInterface (private val activity : FragmentActivity ) {
15+ internal class WebInterface (private val redirect : ( ThePeerResult ) -> Unit ) {
1616
1717
1818 private val SEND_INSUFFICIENT_FUNDS = " send.insufficient_funds"
1919 private val SEND_USER_INSUFFICIENT_FUNDS = " send.user_insufficient_funds"
20- val SEND_SUCCESS = " send.success"
20+ private val SEND_SUCCESS = " send.success"
2121 private val DIRECT_CHARGE_INSUFFICIENT_FUNDS = " direct_debit.insufficient_funds"
2222 private val DIRECT_CHARGE_USER_INSUFFICIENT_FUNDS =
2323 " direct_debit.user_insufficient_funds"
24- private val DIRECT_CHARGE_SUCCESS = " direct_debit.success"
24+ private val DIRECT_DEBIT_SUCCESS = " direct_debit.success"
2525 private val DIRECT_CHARGE_BUSINESS_DECLINE = " direct_debit.business_decline"
2626 private val DIRECT_CHARGE_USER_DECLINE = " direct_debit.user_decline"
2727 private val CHECKOUT_INSUFFICIENT_FUNDS = " checkout.insufficient_funds"
2828 private val CHECKOUT_USER_INSUFFICIENT_FUNDS = " checkout.user_insufficient_funds"
2929 private val CHECKOUT_SUCCESS = " checkout.success"
3030 private val CHECKOUT_BUSINESS_DECLINE = " checkout.business_decline"
3131 private val CHECKOUT_USER_DECLINE = " checkout.user_decline"
32- private val SEND_CLOSE = " sed .close"
33- private val DIRECT_CHARGE_CLOSE = " direct_debit.close"
32+ private val SEND_CLOSE = " send .close"
33+ private val DIRECT_DEBIT_CLOSE = " direct_debit.close"
3434 private val CHECKOUT_CLOSE = " checkout.close"
3535
3636
37- private inline fun <reified T > convertToGsonFromString (json : String ): T ? =
38- try {
39- val adapter = Gson ().getAdapter(T ::class .java)
40- adapter.fromJson(json)
41- }catch (e: Exception ){
42- Log .e(" WebInterface" , e.message.toString())
43- null
44- }
37+ inline fun <reified T > convertToGsonFromString (json : String ): T {
38+ val adapter = Gson ().getAdapter(T ::class .java)
39+ return adapter.fromJson(json)
40+ }
4541
4642
47- private fun handleSendEvent (event : ThePeerEvent ) {
43+ fun handleSendEvent (event : ThePeerEvent ) {
4844 when (event.event) {
4945 SEND_SUCCESS -> {
50- redirectWithResult (ThePeerResult .Success (event.data))
46+ redirect (ThePeerResult .Success (event.data))
5147 }
5248 SEND_CLOSE -> {
53- redirectWithResult (ThePeerResult .Cancelled )
49+ redirect (ThePeerResult .Cancelled )
5450 }
5551 else -> {
56- redirectWithResult (ThePeerResult .Error (Throwable (event.event.getLastPart() )))
52+ redirect (ThePeerResult .Error (Throwable (event.event)))
5753 }
5854 }
5955
6056 }
6157
62- private fun handleCheckoutEvent (event : ThePeerEvent ) {
58+ fun handleCheckoutEvent (event : ThePeerEvent ) {
6359 when (event.event) {
6460 CHECKOUT_SUCCESS -> {
65- redirectWithResult (ThePeerResult .Success (event.data))
61+ redirect (ThePeerResult .Success (event.data))
6662 }
6763 CHECKOUT_CLOSE -> {
68- redirectWithResult (ThePeerResult .Cancelled )
64+ redirect (ThePeerResult .Cancelled )
6965 }
7066 else -> {
71- redirectWithResult (ThePeerResult .Error (Throwable (event.event.getLastPart())))
67+ redirect (ThePeerResult .Error (Throwable (event.event.getLastPart())))
7268 }
7369 }
7470
7571 }
7672
77- private fun handleDirectChargeEvent (event : ThePeerEvent ) {
73+ fun handleDirectDebitEvent (event : ThePeerEvent ) {
7874
7975 when (event.event) {
80- DIRECT_CHARGE_SUCCESS -> {
81- redirectWithResult (ThePeerResult .Success (event.data))
76+ DIRECT_DEBIT_SUCCESS -> {
77+ redirect (ThePeerResult .Success (event.data))
8278 }
83- DIRECT_CHARGE_CLOSE -> {
84- redirectWithResult (ThePeerResult .Cancelled )
79+ DIRECT_DEBIT_CLOSE -> {
80+ redirect (ThePeerResult .Cancelled )
8581 }
8682 else -> {
87- redirectWithResult (ThePeerResult .Error (Throwable (event.event.getLastPart())))
83+ redirect (ThePeerResult .Error (Throwable (event.event.getLastPart())))
8884 }
8985 }
9086
9187 }
9288
93- private fun redirectWithResult (result : ThePeerResult ) {
94- val resultData = Intent ()
95- resultData.putExtra(ThePeerConstants .TRANSACTION_RESULT , result)
96- activity.setResult(AppCompatActivity .RESULT_OK , resultData)
97- activity.finish()
98- }
89+
9990
10091 @JavascriptInterface
10192 fun sendResponse (response : String ) {
10293 Logger .log(this , response)
103- val event: ThePeerEvent ? = convertToGsonFromString(response)
104- when (event?.data?.channel) {
105- " send" -> {
106- handleSendEvent(event)
107- }
108- " checkout" -> {
109- handleCheckoutEvent(event)
110- }
111- " direct_charge" -> {
112- handleDirectChargeEvent(event)
94+ try {
95+ val event: ThePeerEvent = convertToGsonFromString(response)
96+ when (event.event.getFirstPart()) {
97+ " send" -> {
98+ handleSendEvent(event)
99+ }
100+ " checkout" -> {
101+ handleCheckoutEvent(event)
102+ }
103+ " direct_debit" -> {
104+ handleDirectDebitEvent(event)
105+ }
113106 }
107+ } catch (e: Exception ) {
108+ Log .e(" WebInterface" , e.message.toString())
109+
114110 }
111+
112+
115113 }
116114}
0 commit comments