package Ġcom . jud op ay . jud okit . android . ui . payment methods . components Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . core . view . children Ċ import Ġcom . jud op ay . jud okit . android . R Ċ import Ġcom . jud op ay . jud okit . android . inflate Ċ import Ġcom . jud op ay . jud okit . android . ui . common . Button State Ċ import Ġkotlinx . android . synt hetic . main . payment _ call _ to _ action _ view . view .* Ċ Ċ enum Ġclass ĠPayment Button Type Ġ{ ĊĠĠĠ ĠP LA IN , ĊĠĠĠ ĠIDE AL , ĊĠĠĠ ĠGOOGLE _ PAY , ĊĠĠĠ ĠP AY _ BY _ BANK Ċ } Ċ Ċ enum Ġclass ĠPayment Call To ActionType Ġ{ ĊĠĠĠ ĠP AY _ WITH _ CARD , ĊĠĠĠ ĠP AY _ WITH _ GOOGLE _ PAY , ĊĠĠĠ ĠP AY _ WITH _ IDE AL , ĊĠĠĠ ĠP AY _ WITH _ PAY _ BY _ BANK Ċ } Ċ Ċ type alias ĠPayment Call ToAction View Listener Ġ= Ġ( action : ĠPayment Call To ActionType ) Ġ-> ĠUnit Ċ Ċ data Ġclass ĠPayment Call ToAction ViewModel ( ĊĠĠĠ Ġval Ġamount : ĠString Ġ= Ġ"", ĊĠĠĠ Ġval Ġbutton Type : ĠPayment Button Type Ġ= ĠPayment Button Type . PLAIN , ĊĠĠĠ Ġval Ġpayment Button State : ĠButton State Ġ= ĠButton State . Disabled ( R . string . pay _ now ), ĊĠĠĠ Ġval Ġshould Display Amount : ĠBoolean Ġ= Ġfalse Ċ ) Ċ Ċ class ĠPayment Call ToAction View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt Ġ= Ġ 0 Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs , Ġdef Style ) Ġ{ ĊĊĠĠĠ Ġvar Ġcallback Listener : ĠPayment Call ToAction View Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinf late ( R . layout . payment _ call _ to _ action _ view , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġpay Button . setOnClickListener Ġ{ Ġon Payment Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġgoogle Pay Button . setOnClickListener Ġ{ Ġon Payment Button Click () Ġ} ĊĠĠĠĠĠĠĠ Ġpay By Bank Button . setOnClickListener Ġ{ Ġon Payment Button Click () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġmodel Ġ= ĠPayment Call ToAction ViewModel () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ= Ġwith ( model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġamount TextView . text Ġ= Ġamount ĊĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġif Ġ( should Display Amount ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠ Ġyou Will Pay TextView . visibility Ġ= Ġvisibility ĊĠĠĠĠĠĠĠ Ġamount TextView . visibility Ġ= Ġvisibility ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( button Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PLAIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . IDE AL Ġ-> Ġpay Button . state Ġ= Ġpayment Button State ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . GOOGLE _ PAY Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Pay Button . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Button State Ġis ĠButton State . Enabled ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PAY _ BY _ BANK Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpay By Bank Button . isEnabled Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpayment Button State Ġis ĠButton State . Enabled ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbutton To Show Ġ= Ġwhen Ġ( button Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PLAIN , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . IDE AL Ġ-> Ġpay Button ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . GOOGLE _ PAY Ġ-> Ġgoogle Pay Button ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PAY _ BY _ BANK Ġ-> Ġpay By Bank Button ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( buttons Animator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current View Ġ!= Ġbutton To Show ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren . forEach Indexed Ġ{ Ġindex , Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ== Ġbutton To Show ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplayed Child Ġ= Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Payment Button Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Type Ġ= Ġwhen Ġ( model . button Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PLAIN Ġ-> ĠPayment Call To ActionType . PAY _ WITH _ CARD ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . GOOGLE _ PAY Ġ-> ĠPayment Call To ActionType . PAY _ WITH _ GOOGLE _ PAY ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . IDE AL Ġ-> ĠPayment Call To ActionType . PAY _ WITH _ IDE AL ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPayment Button Type . PAY _ BY _ BANK Ġ-> ĠPayment Call To ActionType . PAY _ WITH _ PAY _ BY _ BANK ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcallback Listener ?. invoke ( action Type ) ĊĠĠĠ Ġ} Ċ } Ċ