package Ġcom . now i wr 0 1 . data . storage Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . now i wr 0 1 . domain . model . user . User Ċ Ċ class ĠLocal Storage Dao ( ĊĠĠĠ Ġprivate Ġval Ġpreferences : ĠSharedPreferences Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġmapper Ġ= ĠGson Builder (). set Pretty Print ing (). create () ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > ĠgetObject ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġtype : ĠClass < T >, ĊĠĠĠĠĠĠĠ Ġprefs : ĠSharedPreferences Ġ= Ġpreferences ĊĠĠĠ Ġ): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġprefs . getString ( key , Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġ!= Ġnull ) Ġmapper . fromJson ( value , Ġtype ) Ġelse Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġput Object ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , ĊĠĠĠĠĠĠĠ Ġsaved Object : ĠT , ĊĠĠĠĠĠĠĠ Ġprefs : ĠSharedPreferences Ġ= Ġpreferences ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġmapper . toJson ( saved Object ) ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( key , Ġvalue ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetUser Reference ( user : ĠUser ) Ġ= Ġput Object ( USER _ REFERENCE , Ġuser . id ) ĊĊĠĠĠ Ġfun ĠgetUser Reference () Ġ= ĠgetObject ( USER _ REFERENCE , ĠString :: class . java ) Ġ?: Ġ"" ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠUSER _ REFERENCE Ġ= Ġ" USER _ REFERENCE " ĊĠĠĠ Ġ} Ċ }