package Ġru . nbsp . push ka . gcm Ċ Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . Notification Compat Ċ import Ġandroid . util . Log Ċ import Ġcom . github . sal om on br ys . kot son . fromJson Ċ import Ġcom . google . gson . Gson Ċ import Ġeu . in loop . easy gcm . G cm Listener Ċ import Ġru . nbsp . push ka . Base Application Ċ import Ġru . nbsp . push ka . inter actor . device . Api Device Interactor Ċ import Ġru . nbsp . push ka . network . model . alert . Network Alert Ċ import Ġru . nbsp . push ka . presentation . alert . detail . Alert Activity Ċ import Ġru . nbsp . push ka . util . Icon Utils Ċ import Ġru . nbsp . push ka . util . Notification Id Utils Ċ import Ġrx . Subscriber Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠDim or in ny Ġon Ġ 3 1 . 0 3 . 1 6 . Ċ Ġ*/ Ċ class ĠPush ka G cm Listener Ġ: ĠG cm Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠKEY _ ALERT Ġ= Ġ" alert " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġapi Device Interactor : ĠApi Device Interactor ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnotification Manager : ĠNotification Manager ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġgson : ĠGson ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġnotification Id Utils : ĠNotification Id Utils ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġicon Utils : ĠIcon Utils ĊĊĠĠĠ Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ ĠBase Application . graph . inject ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsend Registration Id To Backend ( registration Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v (" Push ka G cm Listener ", Ġ" Send Ġregistration Ġid Ġcalled Ġref Id : Ġ$ registration Id ") ĊĠĠĠĠĠĠĠ Ġapi Device Interactor . add G cm Device ( registration Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( object : ĠSubscriber < Any >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completed () Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Next ( result : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" Push ka G cm Listener ", Ġ" On Ġserver Ġresult : Ġ${ result . toString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Message ( from : ĠString , Ġdata : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v (" Push ka G cm Listener ", Ġ" On Ġmessage Ġcalled Ġfrom : Ġ$ from Ġ+ Ġ${ data . toString () }") ĊĠĠĠĠĠĠĠ Ġval Ġalert Ġ= Ġgson . fromJson < Network Alert >( data . getString ( KEY _ ALERT )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġadd Ġsound Ġhandling ĊĊĠĠĠĠĠĠĠ Ġval Ġm Builder Ġ= ĠNotification Compat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set V ibrate ( long ArrayOf ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Priority ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAuto Cancel ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setColor ( Color . parse Color ( alert . notification . color )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Small Icon ( icon Utils . get Icon ( alert . notification . icon )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Title ( alert . notification . title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setContent Text ( alert . notification . description ) ĊĊĠĠĠĠĠĠĠ Ġval Ġaction Intent Ġ= ĠIntent ( context , ĠAlert Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġaction Intent . putExtra ( Alert Activity . ARG _ ALERT _ ID , Ġalert . id ) ĊĠĠĠĠĠĠĠ Ġaction Intent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ SINGLE _ TOP ĊĊĠĠĠĠĠĠĠ Ġm Builder . setContent Intent ( Pending Intent . getActivity ( context , Ġ 0 , Ġaction Intent , ĠPending Intent . FLAG _ UPDATE _ CURRENT )) ĊĠĠĠĠĠĠĠ Ġnotification Manager . notify ( notification Id Utils . get Notification Id (), Ġm Builder . build ()) ĊĠĠĠ Ġ} Ċ }