package Ġcom . she ve lev . wizard _ camera . activity _ main . fragment _ camera . model . filters _ facade Ċ Ċ import Ġcom . she ve lev . wizard _ camera . R Ċ import Ġcom . she ve lev . wizard _ camera . common _ entities . entities . Last Used Filter Ċ import Ġcom . she ve lev . wizard _ camera . common _ entities . enums . Gl Filter Code Ċ import Ġcom . she ve lev . wizard _ camera . common _ entities . filter _ settings . gl . Empty Filter Settings Ċ import Ġcom . she ve lev . wizard _ camera . common _ entities . filter _ settings . gl . Gl Filter Settings Ċ import Ġcom . she ve lev . wizard _ camera . shared . filters _ ui . filters _ carousel . Filter Favorite Type Ċ import Ġcom . she ve lev . wizard _ camera . shared . filters _ ui . filters _ carousel . Filter ListItem Ċ import Ġcom . she ve lev . wizard _ camera . shared . filters _ ui . filters _ carousel . Filters List Data Ċ import Ġcom . she ve lev . wizard _ camera . activity _ main . fragment _ camera . model . dto . Filters Mode Ċ import Ġcom . she ve lev . wizard _ camera . shared . filters _ ui . display _ data . gl . Filter Display DataList Ċ import Ġcom . she ve lev . wizard _ camera . activity _ main . fragment _ camera . model . filters _ facade . settings . Filter Settings Facade Ċ import Ġcom . she ve lev . wizard _ camera . shared . coroutines . Dispatch ers Provider Ċ import Ġcom . she ve lev . wizard _ camera . storage . repositories . Favorite Filter Repository Ċ import Ġcom . she ve lev . wizard _ camera . storage . repositories . Last Used Filter Repository Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠFilters Facade Impl Ċ @ Inject Ċ constructor ( ĊĠĠĠ Ġprivate Ġval Ġdispatch ers Provider : ĠDispatch ers Provider , ĊĠĠĠ Ġprivate Ġval Ġlast Used Filter Repository : ĠLast Used Filter Repository , ĊĠĠĠ Ġprivate Ġval Ġfavorite Filter Repository : ĠF avorite Filter Repository , ĊĠĠĠ Ġprivate Ġval Ġdisplay Data : ĠFilter Display DataList , ĊĠĠĠ Ġprivate Ġval Ġfilter Settings : ĠFilter Settings Facade Ċ ) Ġ: ĠFilters Facade Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfavor ites List : ĠMutable List < Gl Filter Code > ĊĊĠĠĠ Ġprivate Ġvar Ġselected Filter Ġ= Ġdisplay Data [ 0 ]. id . filter Code ĊĠĠĠ Ġprivate Ġvar Ġselected Favorite Filter Ġ= ĠGl Filter Code . ORIGIN AL ĊĊĠĠĠ Ġprivate Ġvar Ġprior F avorites List Data : ĠFilters List Data ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġdisplay Filter : ĠGl Filter Settings ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen ( filters Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . NO _ FILTER S Ġ-> Ġfilter Settings [ Gl Filter Code . ORIGIN AL ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . ALL -> Ġfilter Settings [ selected Filter ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . FA V OR ITE Ġ-> Ġfilter Settings [ selected Favorite Filter ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġdisplay Filter Title : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen ( filters Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . NO _ FILTER S Ġ-> ĠR . string . filter Original ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . ALL -> Ġdisplay Data [ selected Filter ]. title ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilters Mode . FA V OR ITE Ġ-> Ġif ( selected Favorite Filter Ġ== ĠGl Filter Code . ORIGIN AL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . filter Original ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Data [ selected Favorite Filter ]. title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġfilters Mode : ĠFilters Mode Ġ= ĠFilters Mode . NO _ FILTER S ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Settings . init () ĊĊĠĠĠĠĠĠĠ Ġval Ġlast Used Filters Ġ= Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filter Repository . read () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfavor ites List Ġ= Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Filter Repository . read () ĊĠĠĠĠĠĠĠ Ġ}. to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġselected Filter Ġ= Ġlast Used Filters . first OrNull Ġ{ Ġ! it . is Favorite Ġ} ?. code Ġ?: Ġdisplay Data [ 0 ]. id . filter Code ĊĊĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filters . first OrNull Ġ{ Ġit . is Favorite Ġ} ?. code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġfavor ites List . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠGl Filter Code . ORIGIN AL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġselect Filter ( code : ĠGl Filter Code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filter Repository . update ( Last Used Filter ( code , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselected Filter Ġ= Ġcode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġselect Favorite Filter ( code : ĠGl Filter Code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filter Repository . update ( Last Used Filter ( code , Ġtrue )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= Ġcode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠgetAll Filters List Data (): ĠFilters List Data Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Items Ġ= Ġdisplay Data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Favorite Ġ= Ġif ( favorites List . contains ( it . id . filter Code )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Favorite Type . FA V OR ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFilter Favorite Type . NOT _ FA V OR ITE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Data Ġ= Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Ġ= Ġis Favorite , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Settings Ġ= Ġfilter Settings [ it . id . filter Code ] Ġ! is ĠEmpty Filter Settings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilters List Data ( display Data . getIndex ( selected Filter ), Ġstart Items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Favorite Filters List Data (): ĠFilters List Data ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠstartIndex Ġ= Ġfavor ites List . indexOf ( selected Favorite Filter ) ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġfavor ites List . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFilter ListItem ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Data Ġ= Ġdisplay Data [ it ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Ġ= ĠFilter Favorite Type . HIDDEN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Settings Ġ= Ġfilter Settings [ it ] Ġ! is ĠEmpty Filter Settings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( items . isNotEmpty () Ġ&& ĠstartIndex Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartIndex Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= Ġitems [ 0 ]. display Data . id . filter Code ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnew F avorites List Data Ġ= ĠFilters List Data ( startIndex , Ġitems ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif ( new F avorites List Data Ġ!= Ġprior F avorites List Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprior F avorites List Data Ġ= Ġnew F avorites List Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew F avorites List Data ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun ĠaddTo Favorite ( code : ĠGl Filter Code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Filter Repository . create ( code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif (! favorites List . contains ( code )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavor ites List . add ( code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif ( selected Favorite Filter Ġ== ĠGl Filter Code . ORIGIN AL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= Ġcode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġremove From Favorite ( code : ĠGl Filter Code ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Filter Repository . delete ( code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfavor ites List . remove ( code ) ĊĊĠĠĠĠĠĠĠ Ġif ( favorites List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= ĠGl Filter Code . ORIGIN AL ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filter Repository . remove ( Last Used Filter ( code , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( selected Favorite Filter Ġ== Ġcode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Favorite Filter Ġ= Ġfavor ites List [ 0 ] ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( dispatch ers Provider . io Dispatcher ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Used Filter Repository . update ( Last Used Filter ( selected Favorite Filter , Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Settings ( code : ĠGl Filter Code ) Ġ= Ġfilter Settings [ code ] ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate Settings ( settings : ĠGl Filter Settings ) Ġ= Ġfilter Settings . update ( settings ) Ċ }