package Ġcom . my ku y ade mo Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . my ku y ade mo . network . Ret rofit Service Ċ import Ġcom . my ku y ade mo . utils . Progress Dialog Utils Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠHome Presenter : ĠViewModel (){ ĊĠĠĠ Ġval Ġproduct Adapter = ĠProduct Adapter () ĊĠĠĠ Ġval Ġnews Adapter = ĠNews Adapter () ĊĠĠĠ Ġfun Ġinit Data ( context : ĠContext ){ ĊĠĠĠĠĠĠĠ ĠProgress Dialog Utils . instance ?. show Progress Dialog ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġservices Api = ĠRet rofit Service . newInstance (). services Api ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Product Ġ= Ġservices Api . get Product List Async ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult News Ġ= Ġservices Api . get News ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Dialog Utils . instance ?. close Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproduct Adapter . update Data ( result Product ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnews Adapter . update Data ( result News ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// handle Ġerror Ġin Ġhere ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Dialog Utils . instance ?. close Progress Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Ex pend ( view : ĠView ){ ĊĠĠĠĠĠĠĠ Ġproduct Adapter . update Expand List () ĊĠĠĠĠĠĠĠ Ġif ( product Adapter . is Expand List ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠImageView ). setImage Resource ( R . drawable . ic _ up ) ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( view Ġas ĠImageView ). setImage Resource ( R . drawable . ic _ down ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġopen Map ( view : ĠView ){ ĊĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( R . id . action _ home Fragment _ to _ map Fragment ) ĊĠĠĠ Ġ} Ċ }