package Ġcom . android . sample . game . base Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . android . sample . game . util . Resource Ċ import Ġcom . android . sample . game . util . scheduler . Base Scheduler Provider Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġtim ber . log . Tim ber Ċ Ċ open Ġclass ĠBase ViewModel < T >( ĊĠĠĠ Ġprivate Ġval Ġscheduler Provider : ĠBase Scheduler Provider , ĊĠĠĠ Ġprivate Ġval Ġrequest Single : ĠSingle < T > Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġval Ġ_ live Data Ġ= ĠMutable LiveData < Resource < T >>() ĊĠĠĠ Ġval Ġlive Data : ĠLive Data < Resource < T >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ live Data ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Request () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ live Data . value Ġ= ĠResource . Loading ĊĠĠĠĠĠĠĠ Ġrequest Single . subscribe On ( scheduler Provider . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( scheduler Provider . ui ()). subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ live Data . post Value ( Resource . Success ( it )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ live Data . post Value ( Resource . Error ( it . localized Message )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġcomposite Disposable . add ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe ĠViewModel Ġis Ġdis m ant led . ĊĠĠĠĠ Ġ* ĠAt Ġthis Ġpoint , Ġwe Ġwant Ġto Ġcancel Ġall Ġdis pos ables ; ĊĠĠĠĠ Ġ* Ġotherwise Ġwe Ġend Ġup Ġwith Ġprocesses Ġthat Ġhave Ġnow here Ġto Ġreturn Ġto ĊĠĠĠĠ Ġ* Ġusing Ġmemory Ġand Ġresources . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠ Ġ} Ċ }