package Ġcom . android . input method . use cases Ċ Ċ import Ġarrow . core . Either Ċ import Ġarrow . core . left Ċ import Ġcom . l eng uy ent han h . rx arrow . z Ċ import Ġio . reactivex . Single Ċ import Ġno . div v un . dictionary . personal . Dictionary Word Ċ import Ġno . div v un . dictionary . personal . Personal Dictionary Database Ċ Ċ class ĠBlack list Word UseCase ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdatabase : ĠPersonal Dictionary Database , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġvalidate Word UseCase : ĠValidate Word UseCase ) Ġ{ ĊĊĠĠĠ Ġfun Ġexecute ( language Id : ĠLong , Ġword : ĠString ): ĠSingle < Either < Add Black list Word Exception , ĠAdd Black list Word Success >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvalidate Word UseCase . execute ( word ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġvalidation E Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation E . fold ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( Add Black list Word Exception . Validation ( it ). left ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . dictionary Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Word S ( language Id , Ġword ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first OrNull ()?. copy ( black listed Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDictionary Word ( word , Ġ 0 , Ġmanually Added Ġ= Ġtrue , Ġblack listed Ġ= Ġtrue , Ġlanguage Id Ġ= Ġlanguage Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . dictionary Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. upsert Word ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single Ġ{ ĠAdd Black list Word Success Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. z Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Black list Word Exception . Unknown ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ sealed Ġclass ĠAdd Black list Word Exception Ġ{ ĊĠĠĠ Ġclass ĠValidation ( val Ġvalidation Exception : ĠValidation Exception ) Ġ: ĠAdd Black list Word Exception () ĊĠĠĠ Ġdata Ġclass ĠUnknown ( val Ġcause : ĠThrowable ) Ġ: ĠAdd Black list Word Exception () Ċ } Ċ Ċ object ĠAdd Black list Word Success