package Ġcom . k ost as dr ak on ak is . notes . ui . notes Ċ Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . lifecycle . Lifecycle Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . On Lifecycle Event Ċ import Ġcom . k ost as dr ak on ak is . notes . extensions . set Schedulers Ċ import Ġcom . k ost as dr ak on ak is . notes . managers . note . Note Manager Ċ import Ġcom . k ost as dr ak on ak is . notes . model . Create Note State Ċ import Ġcom . k ost as dr ak on ak is . notes . model . Note List State Ċ import Ġcom . k ost as dr ak on ak is . notes . network . model . Note Ċ import Ġcom . k ost as dr ak on ak is . notes . ui . Base ViewModel Ċ Ċ class ĠNote List ViewModel () Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlive Data Note List State Ġ= ĠMutable LiveData < Note List State >() ĊĠĠĠ Ġprivate Ġvar Ġlive Data Create Note State Ġ= ĠMutable LiveData < Create Note State >() ĊĠĠĠ Ġval Ġnote List State : ĠLive Data < Note List State > Ġget () Ġ= Ġlive Data Note List State ĊĠĠĠ Ġval Ġcreate Note State : ĠLive Data < Create Note State > Ġget () Ġ= Ġlive Data Create Note State ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtest Note Manager : ĠNote Manager ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġconstructor ( test Note Manager : ĠNote Manager ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . test Note Manager Ġ= Ġtest Note Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġfetch Dummy Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Note Manager . get Notes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġon Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( this :: on Success , Ġthis :: on List Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġcreate Dummy Note ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtest Note Manager . create Note ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġon Note Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( this :: on Success , Ġthis :: onError ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Note ( title : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnote Manager . create Note ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġon Note Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( this :: on Success , Ġthis :: onError ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ On Lifecycle Event ( Lifecycle . Event . ON _ START ) ĊĠĠĠ Ġfun Ġfetch Real Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġnote Manager . get Notes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġon Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Schedulers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( this :: on Success , Ġthis :: on List Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data Note List State . post Value ( Note List State . LOADING _ STATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Note Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Data Create Note State . post Value ( Create Note State . LOADING _ STATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonSuccess ( notes : ĠList < Note > ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠNote List State . SUCCESS _ STATE . data Ġ= Ġnotes ĊĠĠĠĠĠĠĠ Ġlive Data Note List State . post Value ( Note List State . SUCCESS _ STATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonSuccess ( note : ĠNote ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠCreate Note State . SUCCESS _ STATE . data Ġ= Ġnote ĊĠĠĠĠĠĠĠ Ġlive Data Create Note State . post Value ( Create Note State . SUCCESS _ STATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠonError ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠCreate Note State . ERROR _ STATE . error Ġ= Ġerror ĊĠĠĠĠĠĠĠ Ġlive Data Create Note State . post Value ( Create Note State . ERROR _ STATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon List Error ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠNote List State . ERROR _ STATE . error Ġ= Ġerror ĊĠĠĠĠĠĠĠ Ġlive Data Note List State . post Value ( Note List State . ERROR _ STATE ) ĊĠĠĠ Ġ} Ċ } Ċ