package Ġcom . wiz eline . simple apollo sample . main čĊč Ċ import Ġandroidx . lifecycle . LiveData č Ċ import Ġandroidx . lifecycle . Mutable LiveData č Ċ import Ġandroidx . lifecycle . ViewModel č Ċ import Ġandroidx . lifecycle . viewModel Scope č Ċ import Ġcom . wiz eline . simple apollo . exceptions . Empty Response č Ċ import Ġcom . wiz eline . simple apollo sample . entities . Post č Ċ import Ġcom . wiz eline . simple apollo sample . entities . responses . ApiResponse č Ċ import Ġcom . wiz eline . simple apollo sample . graphql . type . Post OrderBy č Ċ import Ġcom . wiz eline . simple apollo sample . use cases . All Posts č Ċ import Ġkotlinx . coroutines . launch č Ċ import Ġkotlin . coroutines . Coroutine Context čĊč Ċ class ĠMain ViewModel ( čĊĠĠĠ Ġprivate Ġval Ġbackground Dispatcher : ĠCor outine Context , čĊĠĠĠ Ġprivate Ġval Ġall Posts : ĠAll Posts č Ċ ) Ġ: ĠViewModel () Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġposts List Ġ= ĠMutable LiveData < Posts ViewState >() čĊĠĠĠ Ġval Ġposts : ĠLive Data < Posts ViewState > čĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġposts List čĊčĊĠĠĠ Ġfun ĠgetAll Posts () Ġ= ĠviewModel Scope . launch ( background Dispatcher ) Ġ{ čĊĠĠĠĠĠĠĠ Ġwhen Ġ( val Ġresponse Ġ= Ġall Posts ( čĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Ġ= Ġ 5 0 , čĊĠĠĠĠĠĠĠĠĠĠĠ ĠorderBy Ġ= ĠPost OrderBy . UPDATED AT _ DESC čĊĠĠĠĠĠĠĠ Ġ)) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApiResponse . Success Ġ-> Ġposts List . post Value ( Posts ViewState . Success ( response . data )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApiResponse . Error Ġ-> Ġwhen Ġ( val Ġerror Ġ= Ġresponse . error ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠEmpty Response Ġ-> Ġposts List . post Value ( Posts ViewState . Empty ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġposts List . post Value ( Posts ViewState . Error ( error )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġsealed Ġclass ĠPosts ViewState Ġ{ čĊĠĠĠĠĠĠĠ Ġclass ĠSuccess ( val Ġposts : ĠList < Post >) Ġ: ĠPosts ViewState () čĊĠĠĠĠĠĠĠ Ġobject ĠEmpty Ġ: ĠPosts ViewState () čĊĠĠĠĠĠĠĠ Ġclass ĠError ( val Ġthrowable : ĠThrowable ) Ġ: ĠPosts ViewState () čĊĠĠĠ Ġ} č Ċ } čĊ