package Ġcom . jacob . material . android . r . notification Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . jacob . material . android . r . R Ċ import Ġjava . util . concurrent . Executor Ċ import Ġjava . util . concurrent . Executors Ċ Ċ class ĠNotification Chat Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġnotification Helper : ĠNotification Helper , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġexecutor : ĠExecutor Ċ ){ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠNotification Chat ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠNotification Chat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ?: ĠNotification Chat ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Helper ( context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExec utors . new Fixed ThreadPool ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠCONT ACT S Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Contact ( 1 L , Ġ" James ", Ġ" James ĠSmith ", ĠR . drawable . header _ 0 0 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Contact ( 2 L , Ġ" Michael ", Ġ" Michael ĠSmith ", ĠR . drawable . header _ 0 0 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Contact ( 3 L , Ġ" Rob ert ", Ġ" Rob ert ĠSmith ", ĠR . drawable . header _ 0 0 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Contact ( 4 L , Ġ" Mar ia ", Ġ" Mar ia ĠG arc ia ", ĠR . drawable . header _ 0 0 4 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġ_ messages Ġ= Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Message ( 1 L , Ġ" Hi , ĠI Ġam Ġ${ CONTACT S [ 1 ]. description }", ĠSystem . currentTimeMillis (), ĠCONT ACT S [ 1 ]), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Message ( 2 L , Ġ" Please Ġtalk Ġsame Ġthing ", ĠSystem . currentTimeMillis (), ĠCONT ACT S [ 1 ]) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġmessages : ĠList < Notification Message > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ messages ĊĊĊĊĠĠĠ Ġfun Ġadd Message ( sender Id : Long , Ġcontent : String ): Boolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcontacts : ĠList < Notification Contact > Ġ= ĠCONT ACT S . filter Ġ{ it . id Ġ== Ġsender Id } ĊĠĠĠĠĠĠĠ Ġif ( contacts . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġmessage Ġ= ĠNotification Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ messages . size Ġ+ Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontacts [ 0 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ_ messages . add ( message ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġauto Message Ġ= ĠNotification Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ messages . size Ġ+ Ġ 1 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" OK Ġ$ content Ġ!!! ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . currentTimeMillis (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCONT ACT S [ 3 ] ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ_ messages . add ( auto Message ) ĊĊĠĠĠĠĠĠĠ Ġnotification Helper . create Notification () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊ Ċ }