package Ġorg . fe up . c mov . acme client . ui . main . v ouch ers Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . ActionBar Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . android . synt hetic . main . action _ bar . view .* Ċ import Ġorg . fe up . c mov . acme client . R Ċ import Ġorg . fe up . c mov . acme client . adapter . Generic ListAdapter Ċ import Ġorg . fe up . c mov . acme client . data . Status Ċ import Ġorg . fe up . c mov . acme client . data . event . Event Observer Ċ import Ġorg . fe up . c mov . acme client . databinding . Fragment V ouch ers Binding Ċ import Ġorg . fe up . c mov . acme client . databinding . V ouch ers ListItem Binding Ċ Ċ @ Android EntryPoint Ċ class ĠV ouch ers Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment V ouch ers Binding ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠV ouch ers ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment V ouch ers Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Bar Ġ= Ġ( activity Ġas ĠAppCompatActivity ). support ActionBar ĊĠĠĠĠĠĠĠ Ġval Ġaction Bar View Ġ= Ġlayout Inflater . inflate ( R . layout . action _ bar , Ġnull ) ĊĠĠĠĠĠĠĠ Ġaction Bar View . title . text Ġ= ĠgetString ( R . string . v ouch ers _ title ) ĊĠĠĠĠĠĠĠ Ġaction Bar ?. set Display Show Custom Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġaction Bar ?. custom View Ġ= Ġaction Bar View ĊĠĠĠĠĠĠĠ Ġaction Bar ?. show () ĊĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠGeneric ListAdapter < V oucher View , ĠV ouch ers ListItem Binding >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġadapter Inflater , Ġparent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV ouch ers ListItem Binding . inflate ( adapter Inflater , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġbinding , Ġv oucher Content Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( binding Ġas ĠV ouch ers ListItem Binding ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv oucher Ġ= Ġv oucher Content . content ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġicon Ġ= Ġif Ġ( voucher Content . content . type Ġ== Ġ' o ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . offer coffee ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . discount ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( icon ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. placeholder ( R . drawable . logo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. error ( R . drawable . ic _ baseline _ image _ not _ supported _ 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. center Crop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( list Item Image ); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Item Add . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . save V oucher To Order ( voucher Content . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Pending Bindings () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbinding . v ouch ers RecyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout . setOn Refresh Listener Ġ{ ĠviewModel . fetch V ouch ers () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout Empty . setOn Refresh Listener Ġ{ ĠviewModel . fetch V ouch ers () Ġ} ĊĊĠĠĠĠĠĠĠ Ġsubscribe Ui ( adapter ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui ( adapter : ĠGeneric ListAdapter < V oucher View , ĠV ouch ers ListItem Binding >) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . ui Event . observe ( view Lifecycle Owner , ĠEvent Observer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . error Ġ!= Ġnull ) ĠToast . makeText ( context , Ġit . error , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . refresh ing . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrefresh ing Ġ= Ġit Ġ?: Ġreturn @ observe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout . is Refresh ing Ġ= Ġrefresh ing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout Empty . is Refresh ing Ġ= Ġrefresh ing ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . v ouch ers . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv ouch ers Ġ= Ġit Ġ?: Ġreturn @ observe ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . has V ouch ers Ġ= Ġ! v ouch ers . data . isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout . is Refresh ing Ġ= Ġv ouch ers . status Ġ== ĠStatus . LOADING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . v ouch ers Refresh Layout Empty . is Refresh ing Ġ= Ġv ouch ers . status Ġ== ĠStatus . LOADING ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v ouch ers . status Ġ== ĠStatus . SUCCESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( v ouch ers . data ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }