package Ġcom . gra pec ity . ley ser k ids . react native fc m notification Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . util . Log Ċ import Ġandroidx . annotation . Nullable Ċ import Ġcom . facebook . react . React Application Ċ import Ġcom . facebook . react . React Instance Manager . React Instance EventListener Ċ import Ġcom . facebook . react . bridge . Arguments Ċ import Ġcom . facebook . react . bridge . React Context Ċ import Ġcom . facebook . react . bridge . Writable Map Ċ import Ġcom . facebook . react . modules . core . Device Event Manager Module . RCT Device EventEmitter Ċ Ċ class ĠReact Native Event Delivery ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĠĠĠ Ġfun Ġsend Notification ( bundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠWrit able Map Ġ= ĠArguments . from Bundle ( bundle ) ĊĠĠĠĠĠĠĠ Ġsend Event ( NOTIFICATION _ EVENT , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend New Token ( token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠWrit able Map Ġ= ĠArguments . create Map () ĊĠĠĠĠĠĠĠ Ġparams . putString (" token ", Ġtoken ) ĊĠĠĠĠĠĠĠ Ġsend Event ( NEW _ TOKEN _ EVENT , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend Notification Tap ( bundle : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparams : ĠWrit able Map Ġ= ĠArguments . from Bundle ( bundle ) ĊĠĠĠĠĠĠĠ Ġsend Event ( T AP _ EVENT , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Event ( eventName : ĠString , Ġ@ Nullable Ġparams : ĠWrit able Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġneed Ġto Ġrun Ġthis Ġon Ġthe Ġmain Ġthread , Ġas Ġthe ĠReact Ġcode Ġassumes Ġthat Ġis Ġtrue . ĊĠĠĠĠĠĠĠ Ġ// ĠName ly , ĠDev Server Helper Ġconstructs Ġa ĠHandler () Ġwithout Ġa ĠL ooper , Ġwhich Ġtriggers : ĊĠĠĠĠĠĠĠ Ġ// Ġ" Can 't Ġcreate Ġhandler Ġinside Ġthread Ġthat Ġhas Ġnot Ġcalled ĠL ooper . prepare ()" ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠĠĠĠĠ Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConstruct Ġand Ġload Ġour Ġnormal ĠReact ĠJS Ġcode Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm React Instance Manager Ġ= Ġ( context . application Context Ġas ĠReact Application ). react Native Host . react Instance Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġm React Instance Manager . current React Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġit 's Ġconstructed , Ġsend Ġa Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( context Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" context Ġ!= Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event Impl ( context , ĠeventName , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" context Ġ== Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOtherwise Ġwait Ġfor Ġconstruction , Ġthen Ġsend Ġthe Ġnotification ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm React Instance Manager . add React Instance EventListener ( object Ġ: ĠReact Instance EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon React Context Initialized ( context : ĠReact Context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Event Impl ( context , ĠeventName , Ġparams ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm React Instance Manager . remove React Instance EventListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m React Instance Manager . has Started Creating Initial Context ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠConstruct Ġit Ġin Ġthe Ġbackground ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm React Instance Manager . create React Context In Background () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Event Impl ( react Context : ĠReact Context , ĠeventName : ĠString , Ġ@ Nullable Ġparams : ĠWrit able Map ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreact Context ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get JS Module ( RCT Device EventEmitter :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. emit ( eventName , Ġparams ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Event Delivery " ĊĠĠĠ Ġ} Ċ } Ċ