package Ġapp . covid shield . module Ċ Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroidx . core . app . Notification Compat Ċ import Ġandroidx . core . app . Notification Manager Compat Ċ import Ġandroidx . core . content . Context Compat . getSystem Service Ċ import Ġapp . covid shield . MainActivity Ċ import Ġapp . covid shield . R Ċ import Ġapp . covid shield . extensions . launch Ċ import Ġapp . covid shield . extensions . parse Ċ import Ġapp . covid shield . extensions . toJson Ċ import Ġcom . facebook . react . bridge . Promise Ċ import Ġcom . facebook . react . bridge . React ApplicationContext Ċ import Ġcom . facebook . react . bridge . React Context Base Java Module Ċ import Ġcom . facebook . react . bridge . React Method Ċ import Ġcom . facebook . react . bridge . Readable Map Ċ import Ġcom . google . gson . annotations . SerializedName Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ private Ġconst Ġval ĠCHAN NEL _ ID Ġ= Ġ" Cov id Shield " Ċ private Ġconst Ġval ĠCHAN NEL _ NAME Ġ= Ġ" Cov id Shield " Ċ private Ġconst Ġval ĠCHAN NEL _ DESC Ġ= Ġ" Cov id Shield " Ċ Ċ /** Ċ Ġ* ĠSee Ġhttps :// developer . android . com / training / notify - user / build - notification # kotlin Ċ Ġ*/ Ċ class ĠPush Notification Module ( context : ĠReact ApplicationContext ) Ġ: ĠReact Context Base Java Module ( context ), ĠCor outine Scope Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnotification Manager Ġ= ĠNotification Manager Compat . from ( context ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= ĠCHAN NEL _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescription Text Ġ= ĠCHAN NEL _ DESC ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimportance Ġ= ĠNotification Manager . IMPORT ANCE _ DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠNotification Channel ( CHANNEL _ ID , Ġname , Ġimportance ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription Text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager : ĠNotification Manager Ġ= Ġget System Service ( context , ĠNotification Manager :: class . java ) Ġas ĠNotification Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager . create Notification Channel ( channel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= Ġ" Push Notification " ĊĊĠĠĠ Ġoverride Ġval Ġcoroutine Context : ĠCor outine Context Ġget () Ġ= ĠDispatch ers . Default ĊĊĠĠĠ Ġ@ React Method ĊĠĠĠ Ġfun Ġrequest Permissions ( config : ĠRead able Map , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNo op Ġfor ĠAndroid ĊĠĠĠĠĠĠĠ Ġpromise . resolve ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ React Method ĊĠĠĠ Ġfun Ġpresent Local Notification ( data : ĠRead able Map , Ġpromise : ĠPromise ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpromise . launch ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġdata . to HashMap (). toJson (). parse ( Push Notification Config :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Notification ( config ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpromise . resolve ( null ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Notification ( config : ĠPush Notification Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġreact ApplicationContext . application Context ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK Ġor ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpending Intent Ġ= ĠPending Intent . getActivity ( context , Ġ 0 , Ġintent , Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠNotification Compat . Builder ( react ApplicationContext , ĠCHAN NEL _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( R . drawable . ic _ notification _ icon ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( config . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( config . body ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( config . priority ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( config . uuid . hashCode (), Ġbuilder . build ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠPush Notification Config ( ĊĠĠĠ Ġ@ SerializedName (" uuid ") Ġprivate Ġval Ġ_ uuid : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" alert Action ") Ġval Ġaction : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" alert Body ") Ġval Ġbody : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" alert Title ") Ġval Ġtitle : ĠString ?, ĊĠĠĠ Ġ@ SerializedName (" priority ") Ġval Ġ_ priority : ĠInt ? Ċ ) Ġ{ ĊĊĠĠĠ Ġval Ġuuid Ġget () Ġ= Ġ_ uuid Ġ?: Ġ" app . covid shield . ex posure - notification " ĊĊĠĠĠ Ġval Ġpriority Ġget () Ġ= Ġ_ priority Ġ?: ĠNotification Compat . PRIORITY _ MAX Ċ }