package Ġcom . ad ap ty . example Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . ad ap ty . Ad ap ty Ċ import Ġcom . ad ap ty . api . At tribution Type Ċ import Ġcom . ad ap ty . api . entity . pay wall s . On Promo Received Listener Ċ import Ġcom . ad ap ty . api . entity . pay wall s . Promo Model Ċ import Ġcom . ad ap ty . api . entity . profile . update . Date Ċ import Ġcom . ad ap ty . api . entity . profile . update . Profile Parameter Builder Ċ import Ġcom . ad ap ty . api . entity . p urch aser Info . On P urch aser Info Updated Listener Ċ import Ġcom . ad ap ty . api . entity . p urch aser Info . model . P urch aser Info Model Ċ import Ġkotlinx . android . synt hetic . main . fragment _ main .* Ċ Ċ /** Ċ Ġ* ĠIn Ġorder Ġto Ġreceive Ġfull Ġinfo Ġabout Ġthe Ġproducts Ġand Ġmake Ġpurch ases , Ċ Ġ* Ġplease Ġchange Ġsample 's Ġapplication Id Ġin Ġapp / build . gradle Ġto Ġyours Ċ Ġ*/ Ċ Ċ class ĠMain Fragment Ġ: ĠFragment ( R . layout . fragment _ main ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠMain Fragment () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġprogress Dialog : ĠProgress Dialog Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠProgress Dialog ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġrestore _ p urchases . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . restore P urchases Ġ{ Ġpurch aser Info , Ġgoogle Validation Result List , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} Ġ?: Ġ" P urch aser ĠInfo :\ n $ p urch aser Info \ n \ n Validation Results :\ n $ google Validation Result List " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget _ p urch aser _ info . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . getP urch aser Info Ġ{ Ġpurch aser Info , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" p urch aser Ġinfo : Ġ$ p urch aser Info " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget _ pay wall s . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . show () ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . get Pay wall s Ġ{ Ġpay wall s , Ġproducts , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" pay wall s : Ġ$ pay wall s \ n \ n products : Ġ$ products " ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . hide () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠMainActivity )?. add Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPay wall List Fragment . newInstance ( pay wall s ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget _ promo . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . get Promo Ġ{ Ġprom o , Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ" promo :\ n $ promo " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate _ profile . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠProfile Parameter Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Email (" email @ example . com ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Birth day ( Date ( 1 9 7 0 , Ġ 1 , Ġ 3 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Custom Attributes ( map Of (" key 1 " Ġto Ġ" test ", Ġ" key 2 " Ġto Ġ 5 )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . update Profile ( params ) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} Ġ?: Ġ" Profile Ġupdated " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate _ custom _ at tribution . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . update At tribution ( hash Map Of (" key 1 " Ġto Ġ" test 1 ", Ġ" key 2 " Ġto Ġtrue ), ĠAt tribution Type . CUSTOM ) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= Ġerror ?. message Ġ?: Ġ" success " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġidentify . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . identify ( customer _ user _ id . text . toString ()) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} Ġ?: Ġ" User Ġidentified " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġlogout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAd ap ty . logout Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast _ response _ result . text Ġ= Ġerror ?. let Ġ{ Ġ" error :\ n ${ error . message }" Ġ} Ġ?: Ġ" User Ġlogged Ġout " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠAd ap ty . setOn P urch aser Info Updated Listener ( object Ġ: ĠOn P urch aser Info Updated Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon P urch aser Info Received ( p urch aser Info : ĠP urch aser Info Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" Updated Ġpurchase Ġinfo :\ n ${ p urch aser Info }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠAd ap ty . setOn Promo Received Listener ( object Ġ: ĠOn Promo Received Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Promo Received ( promo : ĠProm o Model ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Toast (" New Ġprom o Ġreceived :\ n ${ promo }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Toast ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġtext , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġ} Ċ }