package Ġmy . it gun gn ir . rx mv vm . core . redux Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . google . gson . Gson Ċ Ċ @ Target ( Annotation Target . FIELD ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ annotation Ġclass ĠDo Persist Ċ Ċ class ĠRedux Persist Util < T Ġ: ĠAny >( context : ĠApplication ) Ġ{ ĊĊĠĠĠ Ġval Ġsp Key Ġ= Ġ" rx mv vm _ redux _ key " ĊĊĠĠĠ Ġval Ġsp : ĠSharedPreferences Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . get SharedPreferences (" rx _ mv vm _ sp ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġserialize ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvalue . java Class . declared Fields . filter Ġ{ Ġprop Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprop . annotations . any Ġ{ Ġit . annotation Class Ġ== ĠDo Persist :: class Ġ} ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġto Ġit . get ( value ) ĊĠĠĠĠĠĠĠ Ġ}. fold ( hash Map Of < String , ĠAny ?> ()) Ġ{ Ġmap , Ġpair Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap . apply Ġ{ Ġput ( pair . first , Ġpair . second ) Ġ} ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsp . edit (). putString ( sp Key , ĠGson (). toJson ( this )). apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcurr State (): ĠString Ġ= Ġsp . getString ( sp Key , Ġ"") Ġ?: Ġ"" Ċ }