/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠC EX . âĢĭ IO ĠLtd Ġ( UK ) Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . c ex direct . lib . error Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġcom . c ex direct . lib . Base Activity Ċ import Ġcom . c ex direct . lib . Direct Ċ import Ġcom . c ex direct . lib . R Ċ import Ġcom . c ex direct . lib . buy . Calc Activity . Companion . start Buy Activity Ċ import Ġcom . c ex direct . lib . databinding . Activity Error Binding Ċ import Ġcom . c ex direct . lib . di . annotation . Error Activity Factory Ċ import Ġcom . c ex direct . lib . network . models . Order Status Ċ import Ġcom . mc xiao ke . ko i . ext . Bundle Ċ import Ġcom . mc xiao ke . ko i . ext . finish Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠError Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġ@ field :[ Inject ĠError Activity Factory ] ĊĠĠĠ Ġlateinit Ġvar Ġmodel Factory : ĠViewModel Provider . Factory ĊĊĠĠĠ Ġprivate Ġval Ġmodel : ĠError Activity ViewModel Ġby ĠviewModel Provider Ġ{ Ġmodel Factory Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Error Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠDirect . direct Component . inject ( this ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ error ) ĊĊĠĠĠĠĠĠĠ Ġintent . getString Extra (" reason ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ Ġit . isNotBlank () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmodel . reason . set ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġmodel . reason . set (" Unknown ĠError ") ĊĠĠĠĠĠĠĠ Ġintent . get Parcelable Extra < Last Known Order Info >(" info ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . orderId . set ( it . orderId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . order Amount s . selected Crypto Amount Ġ= Ġit . crypto Amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . order Amount s . selected Crypto Currency Ġ= Ġit . crypto Currency ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . order Amount s . selected Fi at Amount Ġ= Ġit . fi at Amount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . order Amount s . selected Fi at Currency Ġ= Ġit . fi at Currency ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . apply Legal Observer s () ĊĊĠĠĠĠĠĠĠ Ġmodel . try Again Event . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Buy Activity ( data Ġ= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . model Ġ= Ġmodel ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( ErrorType . valueOf ( intent . getString Extra (" type ") !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . PUR CH ASE _ FAILED Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠPurchase Failed Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . FAIL Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠGeneric Error Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . NOT _ VER IFI ED Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠVerification Rejected Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . LOCATION _ NOT _ SUPPORTED Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠLocation NotSupported Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . PROCESS ING _ RE JECT ED Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠProcessing Rejected Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠError Type . REF UND Ġ-> Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( binding . ae Error Frame . id , ĠRef und Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Parcelable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" refund _ extras ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . get Parcelable Extra < Refund Extras >(" refund _ extras ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel . clear Data () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠContext . payment Rejected ( ĊĠĠĠ Ġreject Status : ĠOrder Status , ĊĠĠĠ Ġorder Info : ĠLast Known Order Info , ĊĠĠĠ Ġrefund Extras : ĠRef und Extras Ċ ) Ġ{ ĊĠĠĠ Ġwhen Ġ( reject Status ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOrder Status . IV S _ RE JECT ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . NOT _ VER IFI ED . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOrder Status . IV S _ FAILED , ĠOrder Status . PSS _ FAILED , ĠOrder Status . CR ASH ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . FAIL . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOrder Status . PSS _ RE JECT ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . PROCESS ING _ RE JECT ED . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOrder Status . RE JECT ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . PUR CH ASE _ FAILED . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" reason ", Ġ" Rejected ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠOrder Status . REF UND _ PENDING , ĠOrder Status . REF UN DED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . REF UND . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" refund _ extras ", Ġrefund Extras ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Illegal Ġreject Ġstatus : Ġ${ reject Status . name }") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠFragment . purchase Failed ( reason : ĠString ?, Ġorder Info : ĠLast Known Order Info ) Ġ{ ĊĠĠĠ Ġthis . require Context (). show Purchase Failed Screen ( reason , Ġorder Info ) ĊĠĠĠ Ġfinish () Ċ } Ċ Ċ fun ĠActivity . purchase Failed ( reason : ĠString ?, Ġorder Info : ĠLast Known Order Info ) Ġ{ ĊĠĠĠ Ġshow Purchase Failed Screen ( reason , Ġorder Info ) ĊĠĠĠ Ġfinish () Ċ } Ċ Ċ internal Ġfun ĠContext . show Purchase Failed Screen ( reason : ĠString ?, Ġorder Info : ĠLast Known Order Info ) Ġ{ ĊĠĠĠ ĠIntent ( this , ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . FAIL . name ) ĊĠĠĠĠĠĠĠ Ġput Extra (" reason ", Ġreason ) ĊĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠ Ġ}. let Ġ{ ĠstartActivity ( it ) Ġ} Ċ } Ċ Ċ fun ĠFragment . location NotSupported ( ĊĠĠĠ Ġorder Info : ĠLast Known Order Info , ĊĠĠĠ Ġcountry Code : ĠString , ĊĠĠĠ Ġstate Code : ĠString , ĊĠĠĠ Ġemail : ĠString Ċ ) Ġ{ ĊĠĠĠ ĠIntent ( require Context (), ĠError Activity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput Extra (" type ", ĠError Type . LOCATION _ NOT _ SUPPORTED . name ) ĊĠĠĠĠĠĠĠ Ġput Extra (" info ", Ġorder Info ) ĊĠĠĠĠĠĠĠ Ġput Extra (" code ", Ġcountry Code ) ĊĠĠĠĠĠĠĠ Ġput Extra (" state ", Ġstate Code ) ĊĠĠĠĠĠĠĠ Ġput Extra (" email ", Ġemail ) ĊĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( it ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ } Ċ Ċ enum Ġclass ĠError Type Ġ{ ĊĠĠĠ ĠFAIL , ĊĠĠĠ ĠNOT _ VER IFI ED , ĊĠĠĠ ĠLOC ATION _ NOT _ SUPPORTED , ĊĠĠĠ ĠP UR CH ASE _ FAILED , ĊĠĠĠ ĠPROCESS ING _ RE JECT ED , ĊĠĠĠ ĠREF UND Ċ } Ċ