package Ġmax e em . americ a . gd g . ui . adapter Ċ Ċ import Ġkotlinx . coroutines .* Ċ import Ġmax e em . americ a . gd g . domain . G dg Chapter Ċ import Ġmax e em . americ a . glob . thread Ċ import Ġorg . jetbrains . ank o . An ko Logger Ċ import Ġorg . jetbrains . ank o . info Ċ Ċ class ĠAdapter Filter ( val Ġquery : ĠString , Ġprivate Ġinline Ġval Ġon Filtered : ĠAdapter Filter .( List < G dg Chapter > )-> Unit ) ĊĠĠĠ Ġ: ĠAn ko Logger Ġ{ ĊĠĠĠ Ġvar Ġjob Ġ: ĠJob ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġfun Ġis Same ( new Query : ĠString ?) Ġ= Ġquery Ġ== Ġnew Query ĊĊĠĠĠ Ġfun Ġgo ( list : ĠList < G dg Chapter >, Ġscope : ĠCor outine Scope ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjob Ġ= Ġscope . async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo ("- Ġfilter Ġgo , Ġon : Ġ$ query , Ġjob : Ġ$ job , Ġthread : Ġ$ thread ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfiltered Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . contains ( query , Ġignore Case Ġ= Ġtrue ) Ġ|| Ġwebsite . contains ( query , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġcountry . contains ( query , Ġtrue ) Ġ|| Ġregion . contains ( query , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġcity . contains ( query , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinfo ("- Ġfilter , ĠisActive : Ġ$ isActive , Ġresult Ġsize : Ġ${ filtered . size }, Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isActive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Adapter Filter . on Filtered ( filtered ) ĊĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvoke On Completion Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo ("- Ġfilter Ġinvoke On Completion , Ġis Canceled : Ġ$ is Cancelled , Ġ$ this ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinfo ("- Ġfilter , Ġstarted : Ġ$ job ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġjob ?. cancel () ĊĠĠĠ Ġ} Ċ }