package Ġcom . example . mv vm . viewModel Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel ; Ċ import Ġandroid . content . Context Ċ import Ġcom . example . mv vm . model . News Response Ċ import Ġcom . example . mv vm . network . News Repository Ċ Ċ class ĠNews Search ViewModel ( context : ĠContext ) Ġ: ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnews Repository : ĠNews Repository Ġ= ĠNews Repository . getInstance ( context ) ĊĊĠĠĠ Ġprivate Ġval Ġquery : ĠMutable LiveData < String > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġprivate Ġval Ġ_ isLoading : ĠMutable LiveData < Boolean > Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġval ĠisLoading Ġ= Ġ_ isLoading Ġas ĠLive Data < Boolean > ĊĊĠĠĠ Ġval Ġnews Data : ĠLive Data < News Response > Ġ= ĠTransform ations . switch Map ( query ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnews Repository . search News ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Query ( source : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . query . post Value ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Loading ( isLoading Ġ: ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ isLoading . post Value ( isLoading ) ĊĠĠĠ Ġ} Ċ } Ċ