package Ġcom . exchange . ui Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . observe Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . exchange . R Ċ import Ġcom . exchange . domain . model . Rate Ċ import Ġcom . exchange . ui . Exchange ViewModel . Ui State Ċ import Ġcom . exchange . ui . Exchange ViewModel . Ui State . C urrencies Ċ import Ġcom . exchange . ui . Exchange ViewModel . Ui State . Error Ċ import Ġcom . exchange . ui . Exchange ViewModel . Ui State . Loading Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġkotlinx . android . synt hetic . main . exchange _ fragment . currency _ list Ċ import Ġkotlinx . android . synt hetic . main . exchange _ fragment . loading Ċ import Ġjava . util . Currency Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠExchange Fragment Ġ: ĠD agger Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġvm Factory : ĠViewModel Provider . Factory ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġby Ġview Models < Exchange ViewModel > Ġ{ Ġvm Factory Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= Ġinflater . inflate ( R . layout . exchange _ fragment , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcurrency _ list . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠCurrency Adapter ( viewModel :: on Base Rate Changed ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Created ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Created ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠviewModel . state . observe ( this , Ġ:: render ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender ( state : ĠUi State ) Ġ= Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency _ list . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠC urrencies Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency _ list . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrency _ list . setData ( state . data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġis ĠError Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Something Ġwent Ġwrong ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRecyclerView . setData ( data : ĠMap < Currency , ĠRate >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( adapter Ġas ĠCurrency Adapter ). setData ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ= ĠExchange Fragment () ĊĠĠĠ Ġ} Ċ } Ċ