package Ġde . gal digital . preferences Ċ Ċ import Ġkotlinx . serialization . Internal Serialization Api Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġkotlinx . serialization . serializer Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . K Property Ċ Ċ @ Internal Serialization Api Ċ class ĠSerializable Property < T Ġ: ĠAny >( ĊĠĠĠ Ġprivate Ġval Ġshared Preferences : ĠSharedPreferences , ĊĠĠĠ Ġprivate Ġval Ġjson Serializer : ĠJson , ĊĠĠĠ Ġprivate Ġval Ġname : ĠString , ĊĠĠĠ Ġprivate Ġval Ġdefault : ĠT ?, ĊĠĠĠ Ġprivate Ġval Ġtype : ĠK Class < T >, ĊĠĠĠ Ġprivate Ġval Ġlistener : Ġ( T ?) Ġ-> ĠUnit Ċ ) Ġ: ĠRead Write Property < Any ?, ĠT ?> Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property < *> ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Serializer . decode FromString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġde serializer Ġ= Ġtype . serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ= Ġshared Preferences . getString ( name ). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠAny ?, Ġproperty : ĠK Property <* >, Ġvalue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġshared Preferences . setString ( name , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserialized Ġ= Ġjson Serializer . encode ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= Ġtype . serializer (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences . setString ( name , Ġserialized ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . invoke ( value ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ(_ : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ @ Internal Serialization Api Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġserial izable ( ĊĠĠĠ Ġstorage : ĠSharedPreferences , ĊĠĠĠ Ġjson Serializer : ĠJson , ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġdefault : ĠT ?, ĊĠĠĠ Ġno inline Ġlistener : Ġ(( T ?) Ġ-> ĠUnit ) Ġ= Ġ{} Ċ ): ĠSerializable Property < T > Ġ= ĠSerializable Property ( storage , Ġjson Serializer , Ġname , Ġdefault , ĠT :: class , Ġlistener ) Ċ