package Ġcom . luc ian bc . receipt scan . infrastructure . dao Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . luc ian bc . receipt scan . domain . collect . Collect ing Option Ċ import Ġcom . luc ian bc . receipt scan . domain . extract . Receipt Defaults Ċ import Ġcom . luc ian bc . receipt scan . domain . model . Category Ċ import Ġjava . util .* Ċ Ċ class ĠPreferences Dao Ġ( ĊĠĠĠ Ġprivate Ġval Ġprefs : ĠSharedPreferences Ċ ) Ġ: ĠRe ceipt Defaults , ĠCollect ing Option Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġreceipt Defaults : ĠRe ceipt Defaults Value ĊĊĠĠĠ Ġprivate Ġvar Ġ_ send Receipt : ĠBoolean ĊĊĠĠĠ Ġval Ġnotification Token ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġread Notification Token () ĊĊĠĠĠ Ġoverride Ġval ĠappId : ĠString ĊĊĠĠĠ Ġoverride Ġval Ġcurrency : ĠCurrency ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġreceipt Defaults . currency ĊĠĠĠ Ġoverride Ġval Ġcategory : ĠCategory ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġreceipt Defaults . category ĊĊĠĠĠ Ġoverride Ġval Ġenabled : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ send Receipt ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġreceipt Defaults Ġ= ĠRe ceipt Defaults Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Currency (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread Category () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ_ send Receipt Ġ= Ġread Send Receipt () ĊĠĠĠĠĠĠĠ ĠappId Ġ= Ġread AppId () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Category ( category : ĠCategory ) Ġ= Ġcategory . write () ĊĊĠĠĠ Ġfun Ġset Currency ( currency : ĠCurrency ) Ġ= Ġcurrency . write () ĊĊĠĠĠ Ġfun Ġset Send Receipt ( enabled : ĠBoolean ) Ġ= Ġenabled . write () ĊĊĠĠĠ Ġprivate Ġfun Ġread Send Receipt () Ġ= ĊĠĠĠĠĠĠĠ Ġprefs . getBoolean ( SEND _ RECE IP T _ KEY , ĠDEFAULT _ SEND _ RECE IP T ) ĊĊĠĠĠ Ġprivate Ġfun ĠBoolean . write () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ send Receipt Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġprefs . edit (). put Boolean ( SEND _ RECE IP T _ KEY , Ġthis ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Category () Ġ= ĊĠĠĠĠĠĠĠ Ġprefs . getString ( CATEGORY _ KEY , Ġnull ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠDEFAULT _ CATEGORY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCategory . valueOf ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCategory . write () Ġ{ ĊĠĠĠĠĠĠĠ Ġreceipt Defaults Ġ= Ġreceipt Defaults . copy ( category Ġ= Ġthis ) ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( CATEGORY _ KEY , Ġthis . name ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Currency () Ġ= ĊĠĠĠĠĠĠĠ Ġprefs . getString ( CUR RE NCY _ KEY , Ġnull ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠDEFAULT _ CUR RE NCY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠCurrency . getInstance ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread AppId (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexisting Id Ġ= Ġprefs . getString ( APP _ ID _ KEY , Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( existing Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Id Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Id . write Id () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġexisting Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġread Notification Token (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprefs . getString ( NOTIFICATION _ TOKEN _ KEY , Ġnull ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ" None " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification Token ( new Token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( NOTIFICATION _ TOKEN _ KEY , Ġnew Token ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . write Id () Ġ= ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( APP _ ID _ KEY , Ġthis ). apply () ĊĊĠĠĠ Ġprivate Ġfun ĠCurrency . write () Ġ{ ĊĠĠĠĠĠĠĠ Ġreceipt Defaults Ġ= Ġreceipt Defaults . copy ( currency Ġ= Ġthis ) ĊĠĠĠĠĠĠĠ Ġprefs . edit (). putString ( CUR RE NCY _ KEY , Ġthis . currency Code ). apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġdata Ġclass ĠRe ceipt Defaults Value ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcurrency : ĠCurrency , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġcategory : ĠCategory ĊĠĠĠ Ġ) Ġ: ĠRe ceipt Defaults ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠC ATEG ORY _ KEY Ġ= Ġ" CATEGORY " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠCUR RE NCY _ KEY Ġ= Ġ" CUR RE NCY " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠS END _ RECE IP T _ KEY Ġ= Ġ" SEND _ RECE IP T " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAPP _ ID _ KEY Ġ= Ġ" APP _ ID " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNOT IFICATION _ TOKEN _ KEY Ġ= Ġ" NOTIFICATION _ TOKEN " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ CATEGORY Ġ= ĠCategory . Not Assigned ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ CUR RE NCY Ġ= ĠCurrency . getInstance (" RON ") !! ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ SEND _ RECE IP T Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ }