package Ġbr . com . ed sil fer . emo j ili brary . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . SharedPreferences Ċ import Ġbr . com . ed sil fer . emo j ili brary . model . Emoji Ċ import Ġbr . com . ed sil fer . emo j ili brary . util . Constants Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġjava . util .* Ċ Ċ class ĠEmoji Store Ġprivate Ġconstructor ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠEmoji Store ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġinstance ( context : ĠContext ): ĠEmoji Store Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠEmoji Store ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġgson Ġ= ĠGson () ĊĠĠĠ Ġprivate Ġvar Ġrecent Used E moj is : ĠMutable List < Emoji > Ġ= Ġmutable ListOf () ĊĠĠĠ Ġprivate Ġval Ġwriter : ĠSharedPreferences . Editor Ġ= Ġcontext . get SharedPreferences ( Constants . PREFER ENCES _ FILE , ĠContext . MODE _ PRIVATE ). edit () ĊĠĠĠ Ġprivate Ġval Ġreader : ĠSharedPreferences Ġ= Ġcontext . get SharedPreferences ( Constants . PREFER ENCES _ FILE , ĠContext . MODE _ PRIVATE ) ĊĊĊĠĠĠ Ġfun Ġsave ( emoji : ĠEmoji ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrecent Used E moj is . remove ( emoji ) ĊĠĠĠĠĠĠĠ Ġrecent Used E moj is . add ( 0 , Ġemoji ) ĊĠĠĠĠĠĠĠ Ġwriter . putString ( Constants . REC ENT _ E MO J IS , Ġgson . toJson ( recent Used E moj is )) ĊĠĠĠĠĠĠĠ Ġwriter . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlist (): ĠMutable List < Emoji > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( recent Used E moj is . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrecent Used E moj is ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < ArrayList < Emoji ?> ?> () Ġ{} . type ĊĠĠĠĠĠĠĠ Ġval Ġjson Ġ= Ġreader . getString ( Constants . REC ENT _ E MO J IS , Ġ"") ĊĠĠĠĠĠĠĠ Ġrecent Used E moj is Ġ= Ġif Ġ( json Ġ== Ġnull Ġ|| Ġjson . isEmpty ()) Ġ Ġmutable ListOf () Ġelse Ġ Ġgson . fromJson ( json , Ġtype ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrecent Used E moj is ĊĠĠĠ Ġ} Ċ } Ċ