package Ġcom . mobile health sport s . v accine pass . util . notification čĊč Ċ import Ġandroid . app . Notification Channel č Ċ import Ġandroid . app . Notification Manager č Ċ import Ġandroid . app . Pending Intent č Ċ import Ġandroid . content . Context č Ċ import Ġandroid . content . Intent č Ċ import Ġandroid . graphics . Bitmap Factory č Ċ import Ġandroid . os . Build č Ċ import Ġandroidx . core . app . Notification Compat č Ċ import Ġandroidx . core . app . Notification Manager Compat č Ċ import Ġcom . mobile health sport s . v accine pass . R č Ċ import Ġcom . mobile health sport s . v accine pass . business . models . Reminder č Ċ import Ġcom . mobile health sport s . v accine pass . ui . start . Start Activity čĊč Ċ object ĠNotification Helper Ġ{ čĊĠĠĠ Ġfun Ġcreate Notification Channel ( context : ĠContext , Ġimportance : ĠInt , Ġshow Badge : ĠBoolean , Ġname : ĠString , Ġdescription : ĠString ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠS afety Ġcheck Ġthe ĠOS Ġversion Ġfor ĠAPI Ġ 2 6 Ġand Ġgreater . čĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreated Ġa Ġunique Ġname Ġfor Ġthe Ġnotification Ġchannel . ĠThe Ġname Ġand Ġdescription Ġare Ġdisplayed Ġin Ġthe Ġapplication âĢĻ s ĠNotification Ġsettings . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġ"${ context . packageName }- $ name " čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( channelId , Ġname , Ġimportance ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . description Ġ= Ġdescription čĊĠĠĠĠĠĠĠĠĠĠĠ Ġchannel . set Show Badge ( show Badge ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġchannel Ġusing Ġthe ĠNotification Manager . čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġcontext . getSystem Service ( Notification Manager :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( channel ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġcreate Sample Data Notification ( context : ĠContext , Ġtitle : ĠString , Ġmessage : ĠString , Ġbig Text : ĠString , Ġauto Cancel : ĠBoolean ) Ġ{ čĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġunique Ġchannel Id Ġfor Ġthis Ġapp Ġusing Ġthe Ġpackage Ġname Ġand Ġapp Ġname . čĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġ"${ context . packageName }-${ context . getString ( R . string . reminder )}" čĊčĊĠĠĠĠĠĠĠ Ġ// ĠBuild Ġnotification čĊĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= ĠNotification Compat . Builder ( context , Ġchannel Id ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Small Icon ( R . drawable . ic _ sy ringe ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Title ( title ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Text ( message ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Style ( Notification Compat . Big TextStyle (). big Text ( big Text )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= ĠNotification Compat . PRIORITY _ DEFAULT čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Cancel ( auto Cancel ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġan ĠIntent Ġto Ġlaunch Ġthe ĠMainActivity čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠStart Activity :: class . java ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , Ġ 0 ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġattach Ġit Ġto Ġthe ĠNotification Compat . Builder čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Intent ( pending Intent ) čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= ĠNotification Manager Compat . from ( context ) čĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( 1 0 0 1 , Ġnotification Builder . build ()) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠBuilds Ġand Ġreturns Ġthe Ġ[ Notification Compat . Builder ] Ġfor Ġthe Ġgroup Ġnotification Ġfor Ġa ĠRem inder Ġtype . čĊĠĠĠĠ Ġ* ĠCould Ġbe Ġused Ġfor Ġgroups Ġof Ġrem inders čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġcurrent Ġapplication Ġcontext čĊĠĠĠĠ Ġ* Ġ@ param Ġreminder Data ĠRem inder Data Ġfor Ġthis Ġnotification čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġbuild Group Notification ( context : ĠContext , Ġreminder Data : ĠRem inder , Ġgroup : ĠString ): ĠNotification Compat . Builder Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġ"${ context . packageName }-${ group }" čĊĠĠĠĠĠĠĠ Ġreturn ĠNotification Compat . Builder ( context , Ġchannel Id ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Small Icon ( R . drawable . ic _ sy ringe ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Title ( reminder Data . title ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Text ( reminder Data . place ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Style ( Notification Compat . Big TextStyle (). big Text ( reminder Data . place )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Cancel ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Group Summary ( true ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Group (" reminder ") čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠBuilds Ġand Ġreturns Ġthe ĠNotification Compat . Builder Ġfor Ġthe ĠRem inder Ġnotification . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġcurrent Ġapplication Ġcontext čĊĠĠĠĠ Ġ* Ġ@ param Ġreminder Data ĠRem inder Data Ġfor Ġthis Ġnotification čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġbuild Notification For Reminder ( context : ĠContext , Ġreminder Data : ĠRem inder ): ĠNotification Compat . Builder Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġ"${ context . packageName }-${ context . getString ( R . string . reminder )}" čĊčĊĠĠĠĠĠĠĠ Ġreturn ĠNotification Compat . Builder ( context , Ġchannel Id ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Small Icon ( R . drawable . ic _ sy ringe ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Title ( reminder Data . title ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Cancel ( true ) čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Large Icon ( Bitmap Factory . decode Resource ( context . resources , ĠR . drawable . ic _ sy ringe )) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Text ( reminder Data . place ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Group (" reminder ") čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLa unches Ġthe Ġapp , Ġoptionally Ġwe Ġcould Ġdo Ġst h Ġwith Ġthe Ġreminder Ġid čĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠStart Activity :: class . java ). apply Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra (" id ", Ġreminder Data . uid ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , Ġ 0 ) čĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Content Intent ( pending Intent ) čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnotification Ġfor Ġ[ Reminder ] Ġwith Ġa Ġfull Ġnotification Ġtap Ġand Ġa Ġsingle Ġaction . čĊĠĠĠĠ Ġ* čĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠ Ġcurrent Ġapplication Ġcontext čĊĠĠĠĠ Ġ* Ġ@ param Ġreminder Data ĠRem inder Data Ġfor Ġthis Ġnotification čĊĠĠĠĠ Ġ*/ čĊčĊĠĠĠ Ġfun Ġcreate Notification For Reminder ( context : ĠContext , Ġreminder Data : ĠRem inder ) Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġgroup Ġnotification čĊĠĠĠĠĠĠĠ Ġ// Ġval Ġgroup Builder Ġ= Ġbuild Group Notification ( context , Ġreminder Data , Ġgroup ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġthe Ġreminder Ġnotification čĊĠĠĠĠĠĠĠ Ġval Ġnotification Builder Ġ= Ġbuild Notification For Reminder ( context , Ġreminder Data ) čĊčĊĠĠĠĠĠĠĠ Ġ// Ġcall Ġnotify Ġfor Ġboth Ġthe Ġgroup Ġand Ġthe Ġreminder Ġnotification čĊĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= ĠNotification Manager Compat . from ( context ) čĊĠĠĠĠĠĠĠ Ġ// notification Manager . notify (" reminder ", Ġgroup Builder . build ()) čĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( reminder Data . uid . toInt (), Ġnotification Builder . build ()) čĊĠĠĠ Ġ} č Ċ }