package Ġcom . fr ate . lux up . add item . mv vm Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġandroid . arch . lifecycle . ViewModel Provider Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . View Ċ import Ġcom . fr ate . lux up . gallery . mv vm . EXTRA _ MEDIA Ċ import Ġcom . fr ate . lux up . manager . Inventory Manager Ċ import Ġcom . fr ate . lux up . model . Article Ċ import Ġcom . fr ate . lux up . mv vm . Base ViewModel Ċ import Ġcom . fr ate . lux up . util . Event Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . File Ċ Ċ class ĠAdd Item ViewModel ( ĊĠĠĠ Ġapplication : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġinventory Manager : ĠInventory Manager ) Ġ: ĠBase ViewModel ( application ) Ġ{ ĊĠĠĠ Ġval Ġstate Ġ= ĠAdd Item State () ĊĠĠĠ Ġprivate Ġvar Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġfun Ġon Title Changed ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( text . isNotEmpty ()) Ġstate . title Error . post Value (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Price Changed ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( text . isNotEmpty ()) Ġstate . price Error . post Value (- 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Photo Result ( data : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . photo . post Value ( Uri . from File ( data . get Serializable Extra ( EXTRA _ MEDIA ) Ġas ĠFile )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Upload Click ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( inventory Manager . add Article ( title . value !! , Ġprice . value !!. toFloat (), Ġphoto . value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe (:: on Upload Success , Ġ:: on Upload Fail )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Upload Success ( article : ĠArticle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . upload Success . post Value ( Event ( true )) ĊĠĠĠĠĠĠĠ Ġ// state . photo . post Value ( Uri . parse ( article . image )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Upload Fail ( t : ĠThrowable ) Ġ= ĠTim ber . d ( t ) ĊĊĠĠĠ Ġclass ĠFactory ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġinventory Manager : ĠInventory Manager ) Ġ: ĠViewModel Provider . Android ViewModel Factory ( application ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >) Ġ= ĠAdd Item ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinventory Manager ) Ġas ĠT ĊĠĠĠ Ġ} Ċ }