// ĠCopyright Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ // Ċ // ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ // Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ // ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ // Ċ // ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ // Ċ // ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ // Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ // ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ // ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ // Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ċ package Ġcom . digital well being experiments . toolkit . notifications n oo zer Ċ Ċ import Ġandroid . service . notification . StatusBar Notification Ċ import Ġandroid . util . Log Ċ Ċ class ĠNotifications Data Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdata Map Ġ= ĠHashMap < String , ĠNotification Item >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġinit ( list : ĠList < StatusBar Notification >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Map [ it . key ] Ġ= Ġcreate Notification Item ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Item ( sb n : ĠStatus Bar Notification ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Item Ġ= Ġcreate Notification Item ( sb n ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Map [ sb n . key ]?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( Notification Listener . TAG , Ġ" UN S NO O ZE Ġ${ it . sb n Key } Ġsn oo ze EndTime : Ġ${ get Formatted Sn oo ze EndTime ( notification Item . sn oo ze EndTime )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// un sn oo zed ... Ġreset Ġsn oo ze EndTime ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Map [ sb n . key ] Ġ= Ġnotification Item ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġremove Item ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Map . remove ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetItem ( key : ĠString ) Ġ= Ġdata Map [ key ] ĊĊĠĠĠĠĠĠĠ Ġfun Ġclear All () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Map . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetAll (): ĠList < Notification Item > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata Map . values . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġcreate Notification Item ( sb n : ĠStatus Bar Notification ): ĠNotification Item Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNotification Item ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb n . key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb n . packageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ"${ sb n . getTitle Big () }\ n ${ sb n . getTitle ()} ". trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"${ sb n . getText () }\ n ${ sb n . getSub Text ()} ". trim (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Time Ġ= Ġsb n . post Time ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Formatted Sn oo ze EndTime ( sn oo ze EndTime : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( sn oo ze EndTime Ġ== ĠUNS NO O Z ED ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" UN S NO O Z ED " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Timestamp ( sn oo ze EndTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }