package Ġde . r ki . cor on aw arn app . dead man Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġdagger . Re usable Ċ import Ġde . r ki . cor on aw arn app . R Ċ import Ġde . r ki . cor on aw arn app . notification . Notification Constants Ċ import Ġde . r ki . cor on aw arn app . ui . main . MainActivity Ċ import Ġde . r ki . cor on aw arn app . util . Foreground State Ċ import Ġde . r ki . cor on aw arn app . util . di . AppContext Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġjavax . inject . Inject Ċ Ċ @ Re usable Ċ class ĠDead man Notification Sender Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ AppContext Ġprivate Ġval Ġcontext : ĠContext , ĊĠĠĠ Ġprivate Ġval Ġforeground State : ĠFore ground State , ĊĠĠĠ Ġprivate Ġval Ġnotification Manager Compat : ĠNotification Manager Compat Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġchannel Id Ġ= ĊĠĠĠĠĠĠĠ Ġcontext . getString ( Notification Constants . NOTIFICATION _ CHANNEL _ ID ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Pending Intent To MainActivity () Ġ= ĊĠĠĠĠĠĠĠ ĠPending Intent . getActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( context , ĠMainActivity :: class . java ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Notification ( ĊĠĠĠĠĠĠĠ Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġcontent : ĠString ĊĠĠĠ Ġ): ĠNotification ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( context , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( Notification Constants . NOTIFICATION _ SMALL _ ICON ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( Notification Compat . PRIORITY _ MAX ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setVisibility ( Notification Compat . VIS IBILITY _ PUBLIC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( create Pending Intent To MainActivity ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( content ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġsend Notification () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( foreground State . isIn Foreground . first ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġcontext . getString ( R . string . risk _ details _ dead man _ notification _ title ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġcontext . getString ( R . string . risk _ details _ dead man _ notification _ body ) ĊĠĠĠĠĠĠĠ Ġval Ġnotification Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Notification ( title , Ġcontent ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġwith ( notification Manager Compat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify ( DEAD MAN _ NOTIFICATION _ ID , Ġnotification ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDead man Ġnotification Ġid ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDE AD MAN _ NOTIFICATION _ ID Ġ= Ġ 3 ĊĠĠĠ Ġ} Ċ } Ċ