package Ġcom . ud acity . aster oid radar . ui . main Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . ud acity . aster oid radar . api . N asa Api Ċ import Ġcom . ud acity . aster oid radar . database . A ster oid Rad ar Database Ċ import Ġcom . ud acity . aster oid radar . domain . A ster oid Ċ import Ġcom . ud acity . aster oid radar . domain . Picture OfDay Ċ import Ġcom . ud acity . aster oid radar . get Today DateFormat ted Ċ import Ġcom . ud acity . aster oid radar . repository . A ster oids Repository Ċ import Ġcom . ud acity . aster oid radar . repository . Picture OfDay Repository Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠStatus Ġof Ġselected ĠUI Ġmode : Ġshow Ġall , Ġshow Ġweekly , Ġshow Ġto days Ċ Ġ*/ Ċ enum Ġclass ĠA ster oids Ui Filter Ġ{ ĊĠĠĠ ĠSHOW _ AST ERO IDS _ ALL , ĊĠĠĠ ĠSHOW _ AST ERO IDS _ TO DAYS , ĊĠĠĠ ĠSHOW _ AST ERO IDS _ W EE KS Ċ } Ċ Ċ class ĠMain ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġaster oids Repository : ĠA ster oids Repository ĊĠĠĠ Ġprivate Ġval Ġpicture OfDay Repository : ĠPicture OfDay Repository ĊĊĠĠĠ Ġval Ġaster oids : ĠLive Data < List < A ster oid >> ĊĠĠĠ Ġval Ġpicture Of The Day : ĠLive Data < Picture OfDay > ĊĊĠĠĠ Ġprivate Ġval Ġaster oids Ui Filter Ġ= ĠMutable LiveData ( A ster oids Ui Filter . SHOW _ AST ERO IDS _ W EE KS ) ĊĊĠĠĠ Ġprivate Ġval Ġ_ navigate To Selected A ster oid Ġ= ĠMutable LiveData < A ster oid ?> () ĊĠĠĠ Ġval Ġnavigate To Selected A ster oid : ĠLive Data < A ster oid ?> Ġ= Ġ_ navigate To Selected A ster oid ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCall Ġrefresh A ster oids () Ġon Ġinit Ġso Ġwe Ġcan Ġdisplay Ġstatus Ġimmediately . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Ġ= ĠA ster oid Rad ar Database . get Database ( application ) ĊĊĠĠĠĠĠĠĠ Ġaster oids Repository Ġ= ĠA ster oids Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . aster oid Dao , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN asa Api . service ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpicture OfDay Repository Ġ= ĠPicture OfDay Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . picture OfDay Dao , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN asa Api . service ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġaster oids Ġ= ĠTransform ations . switch Map ( aster oids Ui Filter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ster oids Ui Filter . SHOW _ AST ERO IDS _ ALL Ġ-> Ġaster oids Repository . get A ster oids All () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ster oids Ui Filter . SHOW _ AST ERO IDS _ TO DAYS Ġ-> Ġaster oids Repository . get A ster oids Today ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Today DateFormat ted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA ster oids Ui Filter . SHOW _ AST ERO IDS _ W EE KS Ġ-> Ġaster oids Repository . get A ster oids Next Week ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Today DateFormat ted () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpicture Of The Day Ġ= Ġpicture OfDay Repository . picture OfDay ĊĊĠĠĠĠĠĠĠ Ġrefresh A ster oids () ĊĠĠĠĠĠĠĠ Ġrefresh Picture Of The Day () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnavigate To A ster oid Details ( aster oid : ĠA ster oid ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Selected A ster oid . value Ġ= Ġaster oid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdone Navigate To A ster oid Details () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ navigate To Selected A ster oid . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġvalue Ġof Ġthe Ġstatus ĠLive Data Ġto Ġthe ĠNeo Ws ĠAPI Ġstatus . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrefresh A ster oids () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaster oids Repository . refresh A ster oids () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Main ViewModel ", Ġ"$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrefresh Picture Of The Day () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpicture OfDay Repository . refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Main ViewModel ", Ġ"$ e ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset A ster oids List Ui Filter ( filter : ĠA ster oids Ui Filter ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġset Ġvalue Ġto Ġlive Ġdata Ġasynchronously ĊĠĠĠĠĠĠĠ Ġaster oids Ui Filter . post Value ( filter ) ĊĠĠĠ Ġ} Ċ } Ċ