package Ġcom . app h ud . sdk . storage Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . app h ud . sdk . domain . App sf ly er Info Ċ import Ġcom . app h ud . sdk . domain . Customer Ċ import Ġcom . app h ud . sdk . domain . Facebook Info Ċ import Ġcom . app h ud . sdk . parser . Parser Ċ import Ġcom . google . gson . reflect . Type Token Ċ Ċ class ĠSharedPreferences Storage ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġparser : ĠParser Ċ ) Ġ: ĠStorage Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNAME Ġ= Ġ" app h ud _ storage " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMODE Ġ= ĠContext . MODE _ PRIVATE ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSER _ ID _ KEY Ġ= Ġ" userId Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCUSTOM ER _ KEY Ġ= Ġ" customer Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEVICE _ ID _ KEY Ġ= Ġ" deviceId Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAD VERT ISING _ DI _ KEY Ġ= Ġ" ad vertising Id Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNE ED _ RE START _ KEY Ġ= Ġ" need Restart Key " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠFACE BOOK _ KEY Ġ= Ġ" facebook Key " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAP PS FL Y ER _ KEY Ġ= Ġ" app sf ly er Key " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġpreferences Ġ= Ġcontext . get SharedPreferences ( ĊĠĠĠĠĠĠĠ ĠNAME , ĊĠĠĠĠĠĠĠ ĠMODE ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġvar ĠuserId : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . getString ( USER _ ID _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( USER _ ID _ KEY , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġcustomer : ĠCustomer ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġpreferences . getString ( CUSTOMER _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < Customer >() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparser . fromJson < Customer >( source , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġparser . toJson ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( CUSTOMER _ KEY , Ġsource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar ĠdeviceId : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . getString ( DEVICE _ ID _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( DEVICE _ ID _ KEY , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġadvertising Id : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . getString ( AD VERT ISING _ DI _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( AD VERT ISING _ DI _ KEY , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġis Need Sync : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreferences . getBoolean ( NEED _ RE START _ KEY , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . put Boolean ( NEED _ RE START _ KEY , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġfacebook : ĠFacebook Info ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġpreferences . getString ( FACE BOOK _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < Facebook Info >() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparser . fromJson < Facebook Info >( source , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġparser . toJson ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( FACE BOOK _ KEY , Ġsource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġapp sf ly er : ĠApp sf ly er Info ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġpreferences . getString ( APPS FL Y ER _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġobject Ġ: ĠType Token < App sf ly er Info >() Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparser . fromJson < App sf ly er Info >( source , Ġtype ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġparser . toJson ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġpreferences . edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . putString ( APPS FL Y ER _ KEY , Ġsource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditor . apply () ĊĠĠĠĠĠĠĠ Ġ} Ċ }