package Ġcom . raf ael m . dis ney mot tion sm v vm . view . ui . main Ċ Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . as LiveData Ċ import Ġandroidx . lifecycle . switch Map Ċ import Ġcom . raf ael m . dis ney mot tion sm v vm . base . Live Cor outines ViewModel Ċ import Ġcom . raf ael m . dis ney mot tion sm v vm . model . Post er Ċ import Ġcom . raf ael m . dis ney mot tion sm v vm . repository . Main Repository Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠMain ViewModel Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmain Repository : ĠMain Repository Ċ ) Ġ: ĠLive Cor outines ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġposter Fetching LiveData : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġposter List LiveData : ĠLive Data < List < Post er >> ĊĊĠĠĠ Ġprivate Ġval Ġ_ isLoading : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData ( false ) ĊĠĠĠ Ġval ĠisLoading : ĠLive Data < Boolean > Ġget () Ġ= Ġ_ isLoading ĊĊĠĠĠ Ġprivate Ġval Ġ_ toast LiveData : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġtoast LiveData : ĠLive Data < String > Ġget () Ġ= Ġ_ toast LiveData ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . d (" injection ĠMain ViewModel ") ĊĊĠĠĠĠĠĠĠ Ġposter List LiveData Ġ= Ġposter Fetching LiveData . switch Map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ isLoading . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch On ViewModel Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . main Repository . load Dis ney Post ers ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess Ġ= Ġ{ Ġ_ isLoading . post Value ( false ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġ{ Ġ_ toast LiveData . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). as LiveData () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ MainThread ĊĠĠĠ Ġfun Ġfetch Dis ney Post er List () Ġ{ ĊĠĠĠĠĠĠĠ Ġposter Fetching LiveData . value Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ