package Ġcom . fro go box . kick start . mv vm . consum able Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ BUS INESS Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ ENTER TA IM ENT Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ GENERAL Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ HE ALTH Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ SCI ENCE Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ SP ORT S Ċ import Ġcom . fro go box . core api . news . News Constant . CATEGORY _ TE CH NO LOG Y Ċ import Ġcom . fro go box . core api . news . News Constant . COUNTRY _ ID Ċ import Ġcom . fro go box . core api . news . model . Article Ċ import Ġcom . fro go box . core api . news . response . Article Response Ċ import Ġcom . fro go box . kick start . core . Base ViewModel Ċ import Ġcom . fro go box . kick start . source . Project Data Repository Ċ import Ġcom . fro go box . kick start . source . callback . Project Consume Api Callback Ċ import Ġcom . fro go box . sdk . util . F ro go Mutable LiveData Ċ Ċ class ĠCon sum able ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġcontext : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠProject Data Repository Ċ ) Ġ: ĠBase ViewModel ( context , Ġrepository ) Ġ{ ĊĊĠĠĠ Ġvar Ġlist Article Random Ġ= ĠF ro go Mutable LiveData < List < Article >>() ĊĠĠĠ Ġvar Ġlist Article Ġ= ĠF ro go Mutable LiveData < List < Article >>() ĊĠĠĠ Ġvar Ġlist Category Ġ= ĠF ro go Mutable LiveData < Mutable List < String >>() ĊĊĠĠĠ Ġfun Ġget Category () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ BUS INESS ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ HE ALTH ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ ENTER TA IM ENT ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ GENERAL ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ SCI ENCE ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ SP ORT S ) ĊĠĠĠĠĠĠĠ Ġcategories . add ( CATEGORY _ TE CH NO LOG Y ) ĊĠĠĠĠĠĠĠ Ġlist Category . post Value ( categories ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Top Head line ( category : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġrepository . consume News Api . get Top Head line ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOUN TRY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠProject Consume Api Callback < Article Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠArticle Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . articles ?. let Ġ{ Ġlist Article . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failed ( statusCode : ĠInt , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Failed . post Value ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Empty Data ( check : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Empty . post Value ( check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show Progress () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Hide Progress () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetRandom Top Head line () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . consume News Api . get Top Head line ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOUN TRY _ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠProject Consume Api Callback < Article Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( data : ĠArticle Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . articles ?. let Ġ{ Ġlist Article Random . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failed ( statusCode : ĠInt , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Failed . post Value ( errorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Finish () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Empty Data ( check : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Empty . post Value ( check ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show Progress () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . post Value ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Hide Progress () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Show Progress . post Value ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ }