package Ġorg . dd os ol it ary . gre end rag on fly Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . core . content . edit Ċ import Ġkotlinx . serialization . Serializable Ċ import Ġkotlinx . serialization . Serialization Exception Ċ import Ġkotlinx . serialization . json . Json Ċ import Ġjava . time . DayOfWeek Ċ Ċ enum Ġclass ĠGender Ġ{ Ċ ĉ Male , Ċ ĉ Female Ċ } Ċ Ċ @ Serializable Ċ data Ġclass ĠRunning Plan ( Ċ ĉ val Ġname : ĠString , Ċ ĉ val Ġevent Id : ĠString , Ċ ĉ val Ġatt Type : ĠString , Ċ ĉ val Ġmin Distance : ĠDouble , Ċ ĉ val Ġmin Speed : ĠDouble , Ċ ĉ val Ġmax Speed : ĠDouble , Ċ ĉ val Ġmax Times Per Day : ĠInt ?, Ċ ĉ val ĠstartDate : ĠLong , Ċ ĉ val ĠendDate : ĠLong , Ċ ĉ val ĠstartTime : ĠInt , Ċ ĉ val ĠendTime : ĠInt , Ċ ĉ val Ġweek Days : ĠList < DayOfWeek >, Ċ ) Ċ Ċ @ Serializable Ċ data Ġclass ĠUserInfo ( Ċ ĉ val Ġstudent Id : ĠString , Ċ ĉ val Ġname : ĠString , Ċ ĉ val Ġgender : ĠGender , Ċ ĉ val Ġad mission Year : ĠString , Ċ ĉ val Ġtoken : ĠString , Ċ ĉ val Ġclass Id : ĠString , Ċ ĉ val Ġschool Id : ĠString , Ċ ĉ val Ġschool Name : ĠString , Ċ ĉ val Ġapi Url : ĠString , Ċ ĉ val Ġplan : ĠRunning Plan ?, Ċ ) Ġ{ Ċ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ private Ġvar Ġuser : ĠUserInfo ? Ġ= Ġnull ĊĊĉ ĉ fun ĠgetUser ( context : ĠContext ): ĠUserInfo ? Ġ{ Ċĉĉ ĉ if Ġ( user Ġ== Ġnull ) Ġ{ Ċĉĉĉ ĉ context . get SharedPreferences ( Ċĉĉĉĉ ĉ context . getString ( R . string . pref _ main ), Ċĉĉĉĉ ĉ Context . MODE _ PRIVATE Ċĉĉĉ ĉ ). getString ( context . getString ( R . string . pref _ key _ user ), Ġnull )?. let Ġ{ Ċĉĉĉĉ ĉ try Ġ{ Ċĉĉĉĉĉ ĉ user Ġ= ĠJson . decode FromString ( serializer (), Ġit ) Ċĉĉĉĉ ĉ } Ġcatch Ġ(_ : ĠSerialization Exception ) Ġ{ Ċĉĉĉĉĉ ĉ // ĠProbably Ġit 's Ġfrom Ġan Ġolder Ġversion , Ġso Ġjust Ġignore Ġit . Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉĉ ĉ return Ġuser Ċĉ ĉ } ĊĊĉ ĉ fun Ġsave User ( context : ĠContext , Ġuser : ĠUserInfo ) Ġ{ Ċĉĉ ĉ this . user Ġ= Ġuser Ċĉĉ ĉ val Ġjson Ġ= ĠJson . encode ToString ( serializer (), Ġuser ) Ċĉĉ ĉ context . get SharedPreferences ( Ċĉĉĉ ĉ context . getString ( R . string . pref _ main ), Ċĉĉĉ ĉ Context . MODE _ PRIVATE Ċĉĉ ĉ ). edit Ġ{ Ċĉĉĉ ĉ putString ( context . getString ( R . string . pref _ key _ user ), Ġjson ) Ċĉĉĉ ĉ apply () Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } Ċ } Ċ