package Ġeu . th om ask u enne th . compose book . compose unit converter . view models Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġeu . th om ask u enne th . compose book . compose unit converter . R Ċ import Ġeu . th om ask u enne th . compose book . compose unit converter . Repository Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠDist ances ViewModel ( private Ġval Ġrepository : ĠRepository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ unit : ĠMutable LiveData < Int > Ġ= ĠMutable LiveData ( ĊĠĠĠĠĠĠĠ Ġrepository . getInt (" unit ", ĠR . string . meter ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġunit : ĠLive Data < Int > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ unit ĊĊĠĠĠ Ġfun Ġset Unit ( value : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ unit . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġrepository . put Int (" unit ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ distance : ĠMutable LiveData < String > Ġ= ĠMutable LiveData ( ĊĠĠĠĠĠĠĠ Ġrepository . getString (" distance ", Ġ"") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġdistance : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ distance ĊĊĠĠĠ Ġfun Ġget Distance As Float (): ĠFloat Ġ= Ġ(_ distance . value Ġ?: Ġ""). let Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . toFloat () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFloat . NaN ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Distance ( value : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ distance . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġrepository . putString (" distance ", Ġvalue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ converted Distance : ĠMutable LiveData < Float > Ġ= ĠMutable LiveData ( Float . NaN ) ĊĊĠĠĠ Ġval Ġconverted Distance : ĠLive Data < Float > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ converted Distance ĊĊĠĠĠ Ġfun Ġconvert () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Distance As Float (). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ converted Distance . value Ġ= Ġif Ġ(! it . isNaN ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ unit . value Ġ== ĠR . string . meter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ* Ġ 0 . 0 0 0 6 2 1 3 7 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ/ Ġ 0 . 0 0 0 6 2 1 3 7 F ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat . NaN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }