package Ġcom . kw dev . eas yp refs . rx Ċ Ċ import Ġcom . kw dev . eas yp refs . Easy Prefs Rx Ċ import Ġcom . kw dev . eas yp refs . Type Adapter Ċ import Ġcom . kw dev . eas yp refs . getKey For Ċ import Ġio . reactivex . rx java 3 . core . Observable Ċ import Ġkotlin . reflect . K Property Ċ Ċ internal Ġclass ĠEasy Custom Type Property Observable < T >( ĊĠĠĠ Ġprivate Ġval Ġkey : ĠK Property < T >, ĊĠĠĠ Ġprivate Ġval Ġtype Adapter : ĠType Adapter < T >, ĊĠĠĠ Ġprivate Ġval Ġdefault : ĠT ?, Ċ ) Ġ: ĠEasy Property Observable < Nullable < T >> Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstring Default Ġby Ġlazy Ġ{ Ġdefault ?. let ( type Adapter :: toString ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠ Ġthis Ref : ĠEasy Prefs Rx , ĊĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠ Ġ): ĠObservable < Nullable < T >> Ġ= ĊĠĠĠĠĠĠĠ Ġthis Ref . property Observable ( getKey For ( this Ref , Ġkey )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNullable ( this Ref . prefs . getString ( it , Ġstring Default )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start With Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNullable ( this Ref . prefs . getString ( getKey For ( this Ref , Ġkey ), Ġstring Default )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNullable ( type Adapter . fromString ( it . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ } Ċ