package Ġcom . hack er tron ix . div oc stats . overview Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . github . mike phil . chart ing . data . Entry Ċ import Ġcom . github . mike phil . chart ing . data . Line DataSet Ċ import Ġcom . hack er tron ix . Overview Request State Ċ import Ġcom . hack er tron ix . Overview Request State . Failure Ċ import Ġcom . hack er tron ix . Overview Request State . Loading Ċ import Ġcom . hack er tron ix . Overview Request State . Success Ċ import Ġcom . hack er tron ix . Overview Request State . Success Without Result Ċ import Ġcom . hack er tron ix . data . repository . Overview Repository Ċ import Ġcom . hack er tron ix . div oc stats . common . Ui State Ċ import Ġcom . hack er tron ix . div oc stats . parse Date To Long Ċ import Ġcom . hack er tron ix . model . global . daily . Daily Ċ import Ġcom . hack er tron ix . model . global . overview . Overview Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . plus Assign Ċ import Ġio . reactivex . rx kotlin . subscribe By Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . joda . time . format . DateTime Format Ċ Ċ class ĠOverview ViewModel ( private Ġval Ġrepository : ĠOverview Repository ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġoverview Observable : ĠObservable < Overview Request State > Ġ= Ġrepository . overview Emitter ĊĠĠĠ Ġprivate Ġval Ġdaily Stats Observable : ĠObservable < List < Daily >> Ġ= Ġrepository . daily Stats Emitter ĊĠĠĠ Ġprivate Ġval Ġoverview LiveData Ġ= ĠMutable LiveData < Overview >() ĊĊĠĠĠ Ġprivate Ġval Ġconfirmed DataSet LiveData Ġ= ĠMutable LiveData < Line DataSet >() ĊĠĠĠ Ġprivate Ġval Ġre covered DataSet LiveData Ġ= ĠMutable LiveData < Line DataSet >() ĊĠĠĠ Ġprivate Ġval Ġdeath s DataSet LiveData Ġ= ĠMutable LiveData < Line DataSet >() ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġval Ġui State Ġ= ĠMutable LiveData < Ui State >() ĊĊĠĠĠ Ġfun Ġget Overview (): ĠLive Data < Overview > Ġ= Ġoverview LiveData ĊĠĠĠ Ġfun Ġget Ui State (): ĠLive Data < Ui State > Ġ= Ġui State ĊĠĠĠ Ġfun Ġget Confirmed DataSet (): ĠLive Data < Line DataSet > Ġ= Ġconfirmed DataSet LiveData ĊĠĠĠ Ġfun Ġget Re covered DataSet (): ĠLive Data < Line DataSet > Ġ= Ġre covered DataSet LiveData ĊĠĠĠ Ġfun Ġget Death s DataSet (): ĠLive Data < Line DataSet > Ġ= Ġdeath s DataSet LiveData ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . get Overview () ĊĠĠĠĠĠĠĠ Ġrepository . get Daily Stats () ĊĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġoverview Observable . subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> Ġui State . post Value ( Ui State . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠFailure Ġ-> Ġui State . post Value ( Ui State . Done ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Without Result Ġ-> Ġui State . post Value ( Ui State . Done ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSuccess Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverview LiveData . post Value ( state . overview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġui State . post Value ( Ui State . Done ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġdaily Stats Observable . subscribe By ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Next Ġ= Ġ{ Ġdaily Stats Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirmed Entries Ġ= Ġmutable ListOf < Entry >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre covered Entries Ġ= Ġmutable ListOf < Entry >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeath s Entries Ġ= Ġmutable ListOf < Entry >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdaily Stats . forEach Ġ{ Ġstat Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfirmed Entry Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntry ( stat . report Date . parse Date To Long (). toFloat (), Ġstat . total Confirmed . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed Entries . add ( confirmed Entry ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġre covered Entry Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntry ( stat . report Date . parse Date To Long (). toFloat (), Ġstat . re covered . total . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre covered Entries . add ( re covered Entry ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeath s Entry Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEntry ( stat . report Date . parse Date To Long (). toFloat (), Ġstat . deaths . total . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeath s Entries . add ( deaths Entry ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfirmed DataSet LiveData . post Value ( Line DataSet ( confirmed Entries , Ġ" confirmed ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre covered DataSet LiveData . post Value ( Line DataSet ( re covered Entries , Ġ" re covered ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeath s DataSet LiveData . post Value ( Line DataSet ( deaths Entries , Ġ" deaths ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġdis pos ables . dispose () ĊĠĠĠĠĠĠĠ Ġrepository . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Overview () Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . refresh Overview () ĊĠĠĠĠĠĠĠ Ġrepository . refresh Daily Stats () ĊĠĠĠ Ġ} Ċ }