package Ġio . eur u app . core Ċ Ċ import Ġandroid . app . Application Ċ Ċ import Ġcom . google . firebase . Firebase App Ċ import Ġcom . google . firebase . messaging . Firebase Messaging Ċ Ċ import Ġio . eur u app . core . injection . App Component Ċ import Ġio . eur u app . core . injection . Context Module Ċ import Ġio . eur u app . core . injection . D agger App Component Ċ import Ġio . eur u app . core . location . GP ST rack er Ċ import Ġio . eur u app . model . User Ċ import Ġio . eur u app . modules . room Module Ċ import Ġio . eur u app . util . Constants Utils Ċ import Ġio . eur u app . view model . User Database Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . core . context . start K oin Ċ Ċ /** Ċ Ġ* Ġ[ Application ] Ġclass Ġimplementation Ġfor Ġthe ĠE uru ĠAndroid ĠClient Ċ Ġ*/ Ċ class ĠE uru Application Ġ: ĠApplication () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġcomponent : ĠApp Component ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmessaging : ĠFirebase Messaging ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdatabase : ĠUser Database ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĊĠĠĠĠĠĠĠ Ġ// Firebase ĠInit ĊĠĠĠĠĠĠĠ ĠFirebase App . initialize App ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Init ĠD agger ĊĠĠĠĠĠĠĠ Ġcomponent Ġ= ĠD agger App Component . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. context Module ( Context Module ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġcomponent . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context ( this @ E uru Application ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( room Module ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Get Ġmessaging Ġinstance ĊĠĠĠĠĠĠĠ Ġmessaging Ġ= ĠFirebase Messaging . getInstance () ĊĊĠĠĠĠĠĠĠ Ġ// Register Ġtopic Ġbased Ġon Ġuser 's Ġtype ĊĠĠĠĠĠĠĠ Ġdatabase Ġ= ĠUser Database ( application Context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( database . is LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( database . user . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser . TYPE _ BUS INESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging . subscribe To Topic ( Constants Utils . TOPIC _ BUS INESS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result (" Registered Ġon Ġbusiness Ġtopics Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result ( it . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging . subscribe To Topic ( Constants Utils . TOPIC _ IN DI VID UAL _ CUSTOMER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result (" Registered Ġon Ġcustomer Ġtopics Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result ( it . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Terminate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Terminate () ĊĠĠĠĠĠĠĠ Ġval Ġtracker Ġ= ĠGP ST rack er ( application Context Ġas ĠBase Activity ) ĊĠĠĠĠĠĠĠ Ġtracker . stop Using GPS () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( database . is LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessaging . unsubscribe From Topic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( database . user . type Ġ== ĠUser . TYPE _ BUS INESS ) ĠConstants Utils . TOPIC _ BUS INESS ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠConstants Utils . TOPIC _ IN DI VID UAL _ CUSTOMER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result (" Un subscribed Ġfrom Ġtopic Ġsuccessfully ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants Utils . log Result ( it . localized Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ