/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠN ie k ĠH aar man Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . n ha ar man . ac orn . notes app . presentation . edit item Ċ Ċ import Ġcom . n ha ar man . ac orn . notes app . main Thread Ċ import Ġcom . n ha ar man . ac orn . notes app . note . Note Items Repository Ċ import Ġcom . n ha ar man . ac orn . presentation . Rx Scene Ċ import Ġcom . n ha ar man . ac orn . presentation . S av able Scene Ċ import Ġcom . n ha ar man . ac orn . presentation . Scene Key . Companion . default Key Ċ import Ġcom . n ha ar man . ac orn . state . Scene State Ċ import Ġcom . n ha ar man . ac orn . state . get Ċ import Ġio . reactivex . rx kotlin . plus Assign Ċ Ċ class ĠEdit Item Scene ( ĊĠĠĠ Ġprivate Ġval ĠitemId : ĠLong , ĊĠĠĠ Ġprivate Ġval Ġnote Items Repository : ĠNote Items Repository , ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠEvents , ĊĠĠĠ Ġsaved State : ĠScene State ? Ġ= Ġnull Ċ ) Ġ: ĠRx Scene < Edit Item Container >( saved State ), ĊĠĠĠ ĠS av able Scene Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġoriginal Item Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġnote Items Repository . find ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Thread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replay ( 1 ). auto Connect ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsave Click s Ġ= Ġview . when Available Ġ{ Ġit . save Click s Ġ} ĊĠĠĠ Ġprivate Ġval Ġdelete Click s Ġ= Ġview . when Available Ġ{ Ġit . delete Click s Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġoriginal Item ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. combine With Latest View () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Element () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġ( item , Ġview ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. initial Text Ġ= Ġitem . or Null ()?. text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġsave Click s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Single Ġ{ Ġtext Ġ-> Ġnote Items Repository . update ( itemId , Ġtext ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( main Thread ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġ_ Ġ-> Ġlistener . saved () Ġ} ĊĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġdelete Click s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first Element () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Items Repository . delete ( itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . deleted () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave InstanceState (): ĠScene State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . save InstanceState () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit [" item _ id "] Ġ= ĠitemId Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Edit Item Scene ( itemId =$ itemId ) @ ${ Integer . to HexString ( hashCode ()) }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠEvents Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġsaved () ĊĠĠĠĠĠĠĠ Ġfun Ġdeleted () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġdefault Key < Edit Item Scene >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnote Items Repository : ĠNote Items Repository , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener : ĠEvents , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate : ĠScene State ĊĠĠĠĠĠĠĠ Ġ): ĠEdit Item Scene Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEdit Item Scene ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate [" item _ id "] !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnote Items Repository , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ