package Ġcom . x ox o er . not iv library Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . messaging . Remote Message Ċ import Ġcom . google . gson . Gson Ċ Ċ object ĠNot iv Util Ġ{ ĊĊĠĠĠ Ġinline Ġfun Ġget F CM ( cross inline Ġon Token Occurred : Ġ( token : ĠString ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase InstanceId . getInstance (). instanceId . add On Success Listener Ġ{ Ġinstance Id Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Token Occurred ( instanceId Result . token ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġresolve Click Action ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġcross inline Ġon Resolved : Ġ( resolved : ĠString ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Resolved ( intent . extras !! [" click _ action "]. toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" AUTO _ RE DIRECT ", Ġ" Skip Ġredirect , Ġno Ġaction ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT > Ġresolve Redirect Result ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġcross inline Ġon Resolved : Ġ( resolved : ĠPair < Keys ?, ĠT ?> ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Resolved ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . get Parcelable Extra (" redirect _ keys "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). fromJson ( intent . getString Extra (" redirect _ json _ content "), ĠT :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġresolve Keys ( intent : ĠIntent ): ĠKeys Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKeys ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras !! [" key _ 1 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras !! [" key _ 2 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras !! [" key _ 3 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . extras !! [" key _ 4 "]. toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve Keys ( remote Message : ĠRemote Message ): ĠKeys Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKeys ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Message . data [" key _ 1 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Message . data [" key _ 2 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Message . data [" key _ 3 "]. toString (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremote Message . data [" key _ 4 "]. toString () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġredirect With Intent Data ( ĊĠĠĠĠĠĠĠ Ġctx : ĠContext , ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġactivity : ĠClass < out ĠAppCompatActivity > ĊĠĠĠ Ġ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIntent ( ctx , Ġactivity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra (" redirect _ keys ", Ġresolve Keys ( intent )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. putExtra (" redirect _ json _ content ", Ġintent . extras !! [" json "]. toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġactivity Mapper ( ĊĠĠĠĠĠĠĠ Ġaction : ĠString ?, ĊĠĠĠĠĠĠĠ Ġactivities : ĠMap < String , ĠAppCompatActivity > ĊĠĠĠ Ġ): ĠClass < out ĠAppCompatActivity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( activities [ action ] Ġ?: Ġerror ("")) :: class . java ĊĠĠĠ Ġ} Ċ }