package Ġsample . k anda . mv vm . register Ċ Ċ import Ġandroid . arch . lifecycle . ViewModel Ċ import Ġsample . k anda . domain . Label Ċ import Ġsample . k anda . domain . Retrieve Labels Ċ import Ġsample . k anda . domain . Save Contacts Ċ import Ġsample . k anda . mv vm . register . validators . Fields Validator Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġj cos il va Ġon Ġ 2 / 1 5 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠRegister ViewModel ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontact DataSource : ĠSave Contacts , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfield DataSource : ĠRetrieve Labels , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġfields Validator : ĠFields Validator ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġvar Ġcontact Ġ= ĠUser Contact Input () ĊĊĠĠĠ Ġfun Ġget Labels (): ĠLabel Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfield DataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Screen Labels () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. first () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave ( user Contact Input : ĠUser Contact Input ): ĠState Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . contact Ġ= Ġuser Contact Input ĊĠĠĠĠĠĠĠ Ġval Ġcheck Fields Ġ= Ġfields Validator . check Fields ( contact ) ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( check Fields . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontact DataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. save ( Contact Input To Domain Mapper ( contact )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Success ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠState . Invalid Field ( check Fields ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ