package Ġcom . kar . enes . app . data . local . prefs Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Json Parser Ċ import Ġcom . kar . enes . app . R Ċ import Ġcom . kar . enes . app . data . DataManager Ċ import Ġcom . kar . enes . app . di . annotations . Preference Info Ċ import Ġcom . kar . enes . app . data . model . User Model Ċ import Ġjava . lang . reflect . Invocation TargetException Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠM . En es Ġon Ġ 5 / 9 / 2 0 1 9 Ċ Ġ*/ Ċ class ĠApp Preferences Helper Ġ@ Inject Ġconstructor ( val Ġcontext : ĠContext , Ġ@ Preference Info Ġval Ġpref FileName : ĠString ): ĠPreferences Helper Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval ĠP REF _ KEY _ USER Ġ= Ġ" PRE F _ KEY _ USER " ĊĠĠĠ Ġprivate Ġval ĠP REF _ KEY _ LOG GED _ MODE Ġ= Ġ" PRE F _ KEY _ LOG GED _ MODE " ĊĠĠĠ Ġval Ġm Prefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( context ) ĊĊĊĠĠĠ Ġoverride Ġfun Ġis Dark Theme (): ĠBoolean Ġ= Ġm Prefs . getBoolean ( context . getString ( R . string . PRE F _ KEY _ DARK _ THEME ), false ) ĊĠĠĠ Ġoverride Ġfun Ġset Dark Theme ( boolean : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Prefs . edit (). put Boolean ( context . getString ( R . string . PRE F _ KEY _ DARK _ THEME ), boolean ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser (): ĠUser Model ? Ġ= Ġget Complex ( PRE F _ KEY _ USER , ĠUser Model :: class . java ) ĊĠĠĠ Ġoverride Ġfun ĠsetUser ( model : ĠUser Model ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsave Complex ( PRE F _ KEY _ USER , model ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetCurrent User Logged Mode (): ĠInt Ġ= Ġm Prefs . getInt ( PRE F _ KEY _ LOG GED _ MODE , ĠData Manager . Logged Mode . LOG GED _ OUT . type ) ĊĠĠĠ Ġoverride Ġfun ĠsetCurrent User Logged Mode ( mode : ĠData Manager . Logged Mode ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( mode Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Prefs . edit (). put Int ( PRE F _ KEY _ LOG GED _ MODE , Ġmode . type ). apply () ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Prefs . edit (). put Int ( PRE F _ KEY _ LOG GED _ MODE , ĠData Manager . Logged Mode . LOG GED _ OUT . type ). apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġsave Complex ( key : ĠString , Ġcomplex : ĠT ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġm Prefs . edit () ĊĠĠĠĠĠĠĠ Ġeditor . putString ( key , Ġ ĠGson (). toJson ( complex )) ĊĠĠĠĠĠĠĠ Ġreturn Ġeditor . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġfun Ġ< T > Ġget Complex ( key : ĠString , Ġtype : ĠClass < T >): ĠT ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġm Prefs . getString ( key , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( data Ġ!= Ġnull Ġ&& Ġdata Ġ!= Ġ" null ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Json Ġ= ĠJson Parser (). parse ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson < T >( m Json , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġctor Ġ= Ġtype . construct ors ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġctor [ 0 ]. newInstance () Ġas ĠT ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInstanti ation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegal AccessException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠInvocation TargetException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }