package Ġcom . gmail . to fib ash ers . blacklist . domain Ċ Ċ import Ġcom . gmail . to fib ash ers . blacklist . Time And Ignore Settings By Week day Id Ċ import Ġcom . gmail . to fib ash ers . blacklist . entity . Activity Time Interval With Ignore Settings Ċ import Ġcom . gmail . to fib ash ers . blacklist . entity . PhoneNumber Type WithValue Ċ import Ġcom . gmail . to fib ash ers . blacklist . utils . PhoneNumber Format Utils Ċ import Ġcom . gmail . to fib ash ers . blacklist . utils . Time Format Utils Ċ import Ġio . reactivex . Maybe Ċ import Ġio . reactivex . Single Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠT of iB ash ers Ġon Ġ 2 8 . 0 1 . 2 0 1 8 . Ċ Ġ*/ Ċ Ċ @ Singleton Ċ class ĠCheck Number Must Be Ignored Now Sync UseCase Ċ @ Inject Ċ constructor ( private Ġval Ġtime Format Utils : ĠTime Format Utils , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠphoneNumber Format Utils : ĠPhone NumberFormat Utils ): ĠI Check Number Must Be Ignored Now Sync UseCase Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġbuild ( number : ĠString ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Sms : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignored Settings By Numbers : ĠHashMap < PhoneNumber Type WithValue , ĠTime And Ignore Settings By Week day Id >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Phone Country : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Hidden Numbers : ĠBoolean ): ĠSingle < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . defer < Boolean > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( number Ġ!= Ġnull Ġ&& Ġignored Settings By Numbers . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif ( number . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . just ( ignore Hidden Numbers ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĠphoneNumber Format Utils . to PhoneNumber Type WithValue ( number !! , Ġdefault Phone Country ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ ĠphoneNumber WithValue : ĠPhone Number Type WithValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMaybe . from Callable Ġ{ Ġignored Settings By Numbers [ phoneNumber WithValue ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. switch If Empty ( Maybe . defer Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( phoneNumber WithValue ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPhone Number Type WithValue . Invalid Ġ-> ĠMaybe . empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠPhone Number Type WithValue . Valid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ ĠphoneNumber Format Utils . to Invalid PhoneNumber Type WithValue ( number !! ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ ĠMaybe . from Callable Ġ{ Ġignored Settings By Numbers [ phoneNumber WithValue ] Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġtime Settings By Week day Id : ĠTime And Ignore Settings By Week day Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle . from Callable Ġ{ Ġtime Format Utils . current Week day As Activity Interval Format () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Maybe Ġ{ Ġcurrent Day : ĠInt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime And Settings Ġ= Ġtime Settings By Week day Id [ current Day ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time And Settings Ġ== Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( is Sms Ġ&& Ġ! time And Settings . is Sms Blocked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ(! is Sms Ġ&& Ġ! time And Settings . is Calls Blocked )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Maybe ĠMaybe . empty < Activity Time Interval With Ignore Settings >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ flatMap Maybe ĠMaybe . just ( time And Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġsettings : ĠActivity Time Interval With Ignore Settings Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Format Utils . is Current TimeIn Interval ( settings . begin Time , Ġsettings . endTime ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }