package Ġes . ad rian roman b . mar vel hero . ui . main Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġes . ad rian roman b . domain . Hero Ċ import Ġes . ad rian roman b . mar vel hero . ui . common . Scoped ViewModel Ċ import Ġes . ad rian roman b . use cases . Get Hero es Ċ import Ġkotlinx . coroutines . Coroutine Dispatcher Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMain ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget Hero es : ĠGet Hero es , ĊĠĠĠ Ġui Dispatcher : ĠCor outine Dispatcher Ċ ) Ġ: ĠScoped ViewModel ( ui Dispatcher ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ model Ġ= ĠMutable LiveData < Ui Model >() ĊĠĠĠ Ġval Ġmodel : ĠLive Data < Ui Model > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ model . value Ġ== Ġnull ) Ġrefresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ model ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠUi Model Ġ{ ĊĠĠĠĠĠĠĠ Ġobject ĠLoading Ġ: ĠUi Model () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠContent ( val Ġhero es : ĠList < Hero >) Ġ: ĠUi Model () ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠNavigation ( val Ġhero : ĠHero ) Ġ: ĠUi Model () ĊĠĠĠĠĠĠĠ Ġobject ĠRequest Location Permission Ġ: ĠUi Model () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Scope () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ model . value Ġ= ĠUi Model . Request Location Permission ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Hero es Called () Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ model . value Ġ= ĠUi Model . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ model . value Ġ= ĠUi Model . Content ( get Hero es . invoke ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Movie Clicked ( hero : ĠHero ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ model . value Ġ= ĠUi Model . Navigation ( hero ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġdestroy Scope () ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ }