/* Ċ Ġ* ĠProject : Ġmy Budget - mobile - android Ċ Ġ* ĠFile : ĠApplication Preference Manager . kt Ċ Ġ* Ċ Ġ* ĠCreated Ġby Ġfat ta zz o Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 1 8 ĠG ian luc a ĠF att ar si . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġit . ital ian coders . my budget . preferences Ċ Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġcom . my name ism id ori . currency picker . Extended Currency Ċ import Ġit . ital ian coders . my budget . Config Ċ import Ġit . ital ian coders . my budget . manager . Login Result Ċ import Ġit . ital ian coders . my budget . preferences . chart . Chart Color Theme Ċ import Ġit . ital ian coders . my budget . rest . model . Account Ċ import Ġit . ital ian coders . my budget . rest . model . User Ċ import Ġorg . android annotations . annotations . E Bean Ċ import Ġorg . android annotations . annotations . shared preferences . Pref Ċ import Ġjava . util .* ĊĊ Ċ /** Ċ Ġ* Ġ@ author Ġfat ta zz o Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ< p /> Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġdate : Ġ 2 8 / 0 3 / 1 8 Ċ Ġ*/ Ċ @ E Bean ( scope Ġ= ĠE Bean . Scope . Singleton ) Ċ open Ġclass ĠApplication Preference Manager Ġ{ ĊĊĠĠĠ Ġ@ Pref ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġprefs : ĠApplication Preference _ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġapplication Ġlanguage ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget App Locale (): ĠLocale Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġprefs . language (). get Or ( Locale . getDefault (). language ) ĊĠĠĠĠĠĠĠ Ġreturn ĠLocale ( language !!. toLowerCase ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApp Ġcurrency ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Currency (): ĠExtended Currency Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcurrency Code Ġ= Ġprefs . currency (). get () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠExtended Currency . getC urrency By ISO ( currency Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠExtended Currency . getC urrency By ISO (" EUR ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLast Ġchart Ġtype Ġselected ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Chart Type (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . last Chart Type (). get () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChart Ġcolor Ġtheme ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġchart Color Theme : ĠChart Color Theme ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidx Prefs Ġ= Ġprefs . chart Color Theme (). get () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtheme : ĠChart Color Theme ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtheme Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġidx Ġ= ĠInteger . parseInt ( idx Prefs ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Color Theme . values ()[ idx ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChart Color Theme . V OR DIP LO M ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtheme ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ---------------------------------------------------------------- -------------- ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠType Ġof Ġuser Ġaccount ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ- 1 Ġif Ġno Ġuser Ġaccount Ġconfigur ated ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Account Type (): ĠInt Ġ= Ġprefs . account Type (). get () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLast Ġaccess Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetLast AccessToken (): ĠString Ġ= Ġprefs . last AccessToken (). get () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLast Ġrefresh Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetLast RefreshToken (): ĠString Ġ= Ġprefs . last RefreshToken (). get () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLast Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetLast User (): ĠUser ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser String Ġ= Ġprefs . last User (). get () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( user String . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObjectMapper (). readValue ( user String , ĠUser :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLast Ġuser Ġaccounts ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetLast Accounts (): ĠList < Account > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaccounts String Ġ= Ġprefs . last User Accounts (). get () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( accounts String . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue : ĠList < Account > Ġ= ĠObjectMapper (). readValue ( accounts String , Ġobject Ġ: ĠType Reference < List < Account >>() Ġ{}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf < Account >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear User Information () Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . edit (). account Type (). put (- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last RefreshToken (). put ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last AccessToken (). put ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last User (). put ("") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last User Accounts (). put (" "). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstore User Information ( login Result : ĠLogin Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . edit (). account Type (). put ( login Result . social Authentication Type . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last AccessToken (). put ( login Result . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last RefreshToken (). put ( login Result . refresh Token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last User (). put ( ObjectMapper (). writeValue AsString ( login Result . user )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. last User Accounts (). put ( ObjectMapper (). writeValue AsString ( login Result . accounts )). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit User Information () Ġ{ ĊĠĠĠĠĠĠĠ ĠConfig . refresh Token Ġ= ĠgetLast RefreshToken () ĊĠĠĠĠĠĠĠ ĠConfig . accessToken Ġ= ĠgetLast AccessToken () ĊĠĠĠĠĠĠĠ ĠConfig . user Ġ= ĠgetLast User () ĊĠĠĠĠĠĠĠ ĠConfig . locale Ġ= Ġget App Locale () ĊĠĠĠĠĠĠĠ ĠConfig . accounts Ġ= ĠgetLast Accounts () ĊĠĠĠĠĠĠĠ ĠConfig . current Account Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠConfig . current Account Need Reload Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ }