package Ġdev . p iment el . data . sources . local Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġdev . p iment el . data . dto . Filter DTO Ċ Ċ interface ĠFilter Local DataSource Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġsave Filter ( filter : ĠFilter DTO ) ĊĠĠĠ Ġsuspend Ġfun Ġget Filters ( type : ĠFilter DTO . Type ): ĠList < Filter DTO > Ċ } Ċ Ċ class ĠFilter Local DataSource Impl ( ĊĠĠĠ Ġprivate Ġval Ġshared Preferences : ĠSharedPreferences , ĊĠĠĠ Ġprivate Ġval Ġjson Adapter : ĠJson Adapter < List < Filter DTO >> Ċ ) Ġ: ĠFilter Local DataSource Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġall Filters : ĠList < Filter DTO > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter List Json Ġ= Ġshared Preferences . getString ( FILTER _ KEY , Ġnull ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjson Adapter . fromJson ( filter List Json ) !! ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġsave Filter ( filter : ĠFilter DTO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Filter List : ĠList < Filter DTO > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences . contains ( FILTER _ KEY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġall Filters . to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshared Preferences ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. edit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString ( FILTER _ KEY , Ġjson Adapter . toJson ( new Filter List )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Filters ( type : ĠFilter DTO . Type ): ĠList < Filter DTO > Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences . contains ( FILTER _ KEY )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġall Filters . filter Ġ{ Ġfilter Ġ-> Ġfilter . type Ġ== Ġtype Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFILTER _ KEY Ġ= Ġ" FILTER " ĊĠĠĠ Ġ} Ċ } Ċ