package Ġcom . hs uan party . basic _ app . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . hs uan party . basic _ app . utils . Default Settings Ċ import Ġorg . json . JSONObject Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠMy Preferences Ġ@ Inject Ġconstructor ( val Ġcontext : ĠContext ) Ġ: ĠPreferences Helper Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠMy Preferences :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPP _ VERSION Ġ= Ġ" version " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMY _ SETTING Ġ= Ġ" my _ setting " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSET TING _ DE VELO PER Ġ= Ġ" developer " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġdeveloper Ġ= Ġ"" ĊĠĠĠ Ġ// Ġno Ġneed Ġto Ġsave Ġinto Ġshared Preferences ĊĠĠĠ Ġ// override Ġvar Ġis Finish App Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġpack Preferences ToJson (): ĠJSONObject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġj Setting Ġ= ĠJSONObject () ĊĠĠĠĠĠĠĠ Ġj Setting . put ( SETTING _ DE VELO PER , Ġdeveloper ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġj Setting ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġdeveloper Ġ= ĠDefault Settings . DE VELO PER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġread Preferences () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġcontext . get SharedPreferences (" preference ", ĠContext . MODE _ PRIVATE ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġto Ġcheck Ġwhether Ġuse Ġthe Ġsetting Ġin Ġthe Ġsame Ġversion ĊĠĠĠĠĠĠĠ Ġval Ġversion Name Ġ= Ġpreferences . getString ( APP _ VERSION , Ġ"") ĊĠĠĠĠĠĠĠ Ġif Ġ( version Name Ġ!= Ġget Version Name ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Read Ġreference Ġfailed , Ġprevious Ġversion Ġ${ getVersion Name () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Preferences () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj Settings Ġ= ĠJSONObject ( preferences . getString ( MY _ SETTING , Ġ"")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Read Ġpreference ĠSetting : Ġ$ j Settings ") ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġread Ġsetting Ġfrom Ġpreferences Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġdeveloper Ġ= Ġj Settings . getString ( SETTING _ DE VELO PER ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġrecent Keyword List Ġ= Ġgson . fromJson ( j Settings . getString ( SETTING _ REC ENT _ KEYWORD ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġobject : ĠType Token < ArrayList < Recent Keyword Item >>() {}. type ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Preferences () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" save Preferences () ") ĊĠĠĠĠĠĠĠ Ġval Ġpreferences Ġ= Ġcontext . get SharedPreferences (" preference ", ĠContext . MODE _ PRIVATE ) ĊĠĠĠĠĠĠĠ Ġval Ġpreference Editor Ġ= Ġpreferences . edit () ĊĊĠĠĠĠĠĠĠ Ġpreference Editor . putString ( MY _ SETTING , Ġpack Preferences ToJson (). toString ()) ĊĠĠĠĠĠĠĠ Ġpreference Editor . putString ( APP _ VERSION , Ġget Version Name ()) ĊĠĠĠĠĠĠĠ Ġpreference Editor . apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet ĠApp Ġversion Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Version Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Info Ġ= Ġcontext . package Manager . get Package Info ( context . packageName , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpackage Info . version Name ĊĠĠĠ Ġ} Ċ }