package Ġnet . y uz um one . berg am io . activity Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġnet . y uz um one . berg am io . Build Config Ċ import Ġnet . y uz um one . berg am io . Main App Ċ import Ġnet . y uz um one . berg am io . R Ċ import Ġnet . y uz um one . berg am io . api . Mi op on Client Ċ import Ġnet . y uz um one . berg am io . databinding . Activity App Shortcut Binding Ċ import Ġnet . y uz um one . berg am io . di . Activity Component Ċ import Ġnet . y uz um one . berg am io . di . Activity Module Ċ import Ġnet . y uz um one . berg am io . fragment . Confirm Dialog Fragment Ċ import Ġnet . y uz um one . berg am io . model . H do Info Ċ import Ġnet . y uz um one . berg am io . model . Toggle Ċ import Ġnet . y uz um one . berg am io . model . Toggle Coupon Info Ċ import Ġnet . y uz um one . berg am io . model . Toggle H do Info Ċ import Ġnet . y uz um one . berg am io . util . Preference Util Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠApp Shortcut Activity Ġ: ĠAppCompatActivity (), ĠDialog Interface . On Dismiss Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity App Shortcut Binding ĊĠĠĠ Ġprivate Ġval Ġnumber : ĠString Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġintent . getString Extra ( ARG _ NUMBER ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġpref : ĠPreference Util Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠPreference Util ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġvar Ġis Canceled Ġ= Ġfalse ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġclient : ĠM iop on Client ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġcomposite Disposable : ĠComposite Disposable ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG _ NUMBER Ġ= Ġ" number " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCON FIRM _ DIALOG _ REQUEST Ġ= Ġ 4 5 4 5 ĊĠĠĠĠĠĠĠ Ġfun Ġcre te Intent ( context : ĠContext , Ġnumber : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠApp Shortcut Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠIntent . ACTION _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( ARG _ NUMBER , Ġnumber ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ app _ shortcut ) ĊĠĠĠĠĠĠĠ Ġget Component (). inject ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Preference Util ( this ). has Available Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Ġ= ĠBuild Config . DE VELO PER _ ID ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġpref . token ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( fetch ( dev , Ġtoken )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠAuth Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( request Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCON FIRM _ DIALOG _ REQUEST Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġh do Info Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Parcelable Extra < H do Info >( Confirm Dialog Fragment . ARG _ H DO _ INFO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuse Coupon Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getBoolean Extra ( Confirm Dialog Fragment . ARG _ USE _ CO UP ON , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġcreate Body ( h do Info . h do Service Code , Ġuse Coupon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Ġ= ĠBuild Config . DE VELO PER _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġpref . token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( put Toggle Coupon ( dev , Ġtoken , Ġbody )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ C ANCE LED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Canceled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfetch ( developer : ĠString , Ġtoken : ĠString ): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . get Coupon ( developer , Ġtoken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġbinding . progress . visibility Ġ= ĠView . VISIBLE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ Ġbinding . progress . visibility Ġ= ĠView . GONE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . coupon Info . forEach Ġcoupon @ Ġ{ Ġcoupon Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoupon Info . h do Info . forEach Ġ{ Ġh do Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( h do Info . number Ġ== Ġnumber ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠConfirm Dialog Fragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newInstance ( null , ĠCON FIRM _ DIALOG _ REQUEST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! h do Info . coupon Use , Ġh do Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . show ( support FragmentManager , Ġ" confirm ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ coupon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġerror . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Body ( h do : ĠString , Ġbool : ĠBoolean ): ĠToggle Coupon Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoggle Ġ= ĠToggle ( h do , Ġbool ) ĊĠĠĠĠĠĠĠ Ġval Ġh do Info Ġ= ĠToggle H do Info ( array ListOf ( toggle )) ĊĠĠĠĠĠĠĠ Ġreturn ĠToggle Coupon Info ( array ListOf ( h do Info )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġput Toggle Coupon ( developer : ĠString , Ġtoken : ĠString , Ġbody : ĠToggle Coupon Info ): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . put Toggle Coupon ( developer , Ġtoken , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . new Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġbinding . progress . visibility Ġ= ĠView . VISIBLE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Complete Ġ{ Ġbinding . progress . visibility Ġ= ĠView . GONE Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( R . string . success ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish And Remove Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġerror . message , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish And Remove Task () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Dismiss ( dialog : ĠDialog Interface ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Canceled ) Ġfinish And Remove Task () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfinish And Remove Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġsuper . finish And Remove Task () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Component (): ĠActivity Component Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Application Ġ= Ġapplication Ġas ĠMain App ĊĠĠĠĠĠĠĠ Ġreturn Ġmain Application . app Component . plus ( Activity Module ( this )) ĊĠĠĠ Ġ} Ċ }