package Ġcom . r avi . movies . view model Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . r avi . movies . data . repository . Movie Repository Ċ import Ġcom . r avi . movies . domain . model . Movie Ċ import Ġcom . r avi . movies . factory . base . Base ViewModel Ċ import Ġcom . r avi . movies . util . rx . Schedulers Facade Ċ import Ġcom . r avi . movies . view model . contracts . Movie List Contract Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMain List VM Ċ @ Inject Ċ constructor ( var Ġmovie Repository : ĠMovie Repository ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcontract : ĠMovie List Contract ĊĊĠĠĠ Ġvar Ġmovie List Ġ= ĠMutable LiveData < ArrayList < Movie >>() ĊĊĠĠĠ Ġfun Ġload Movies () Ġ{ ĊĠĠĠĠĠĠĠ ĠaddTo Disposable ( movie Repository . load Movies By Up coming () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers Facade . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Schedulers Facade . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Subscribe Ġ{ Ġon Loading () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmovie List . value Ġ= Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonSuccess ( null , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġthrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonError ( throwable , Ġ" Error Ġoccurred .", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊ Ċ } Ċ