package Ġio . a 2 xe . experiments . pokemon deck . model . repositories Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . MODE _ PRIVATE Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġio . a 2 xe . experiments . pokemon deck . model . entities . Deck Ċ import Ġio . a 2 xe . experiments . pokemon deck . utilities . fromJson ToList Of Anything Ċ import Ġio . a 2 xe . experiments . pokemon deck . utilities . toJson String Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġgi org io Ġon Ġ 4 / 8 / 1 8 . Ċ Ġ*/ Ċ class ĠPokemon De cks Repository ( context : ĠContext ) Ġ: ĠDe cks Repository Ġ{ ĊĊĠĠĠ Ġ// ĠThis Ġis Ġthe Ġsaved ĠDeck DTO Ġlist Ġjson Ġstring Ġkey Ġin Ġshared Ġpreferences Ġfile ĊĠĠĠ Ġprivate Ġval ĠSHARE D _ PREFER ENCES _ KEY _ DE CK S _ LIST Ġ= Ġ" KEY _ DE CK S _ LIST " ĊĠĠĠ Ġprivate Ġval ĠFILE _ KEY _ DE CK S _ LIST Ġ= Ġ" key De cks List " ĊĊĠĠĠ Ġ// ĠCreate ĠSharedPreferences Ġobject ĊĠĠĠ Ġprivate Ġval Ġshared Preferences Ġ= Ġcontext . get SharedPreferences ( FILE _ KEY _ DE CK S _ LIST , ĠMODE _ PRIVATE ) ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( de cks : ĠList < Deck >, Ġcallback : Ġ(() Ġ-> ĠUnit )? ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġshared Preferences . register On Shared Preference ChangeListener Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠPut Ġthe Ġjson Ġformat Ġstring Ġto ĠSharedPreferences Ġobject ĊĠĠĠĠĠĠĠ Ġshared Preferences . edit (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( SHARED _ PREFER ENCES _ KEY _ DE CK S _ LIST , Ġde cks . toJson String ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġitems : ĠList < Deck > Ġ= ĠlistOf () ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġshared Preferences . getString ( SHARED _ PREFER ENCES _ KEY _ DE CK S _ LIST , Ġ" [] ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcollection Type Ġ= Ġobject Ġ: ĠType Token < List < Deck >>() {} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson . fromJson ToList Of Anything ( collection Type ) ĊĠĠĠ Ġ} Ċ }