package Ġcom . dsc vit . f em helper . ui Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . activity . add Callback Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ import Ġcom . dsc vit . f em helper . R Ċ import Ġcom . dsc vit . f em helper . model . register notification . Register Notification Request Ċ import Ġcom . dsc vit . f em helper . ui . auth . Auth ViewModel Ċ import Ġcom . dsc vit . f em helper . utils . Constants Ċ import Ġcom . dsc vit . f em helper . model . Result Ċ import Ġcom . dsc vit . f em helper . utils . Preference Helper Ċ import Ġcom . dsc vit . f em helper . utils . Preference Helper . set Ċ import Ġkotlinx . android . synt hetic . main . activity _ post _ auth .* Ċ import Ġorg . k oin . android . view model . ext . android . viewModel Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . dsc vit . f em helper . utils . short Toast Ċ import Ġjava . util .* Ċ Ċ class ĠPost Auth Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshared Preferences : ĠSharedPreferences ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ post _ auth ) ĊĠĠĠĠĠĠĠ ĠsetUp Navigation () ĊĊĠĠĠĠĠĠĠ Ġshared Preferences Ġ= ĠPreference Helper . custom Prefs ( application Context , ĠConstants . PRE F _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences . getString ( Constants . PRE F _ DEVICE _ ID , Ġnull ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdeviceId : ĠString Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences [ Constants . PRE F _ DEVICE _ ID ] Ġ= ĠdeviceId ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" esh ", Ġ" Device ĠID : Ġ$ deviceId ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! shared Preferences . getBoolean ( Constants . PRE F _ TOKEN _ IS _ UPDATED , Ġfalse )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth ViewModel Ġby ĠviewModel < Auth ViewModel >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠdeviceId Ġ= Ġshared Preferences . getString ( Constants . PRE F _ DEVICE _ ID , Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf cm Token Ġ= Ġshared Preferences . getString ( Constants . PRE F _ F CM _ TOKEN , Ġ"") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregister Notification Request Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegister Notification Request ( deviceId Ġ= ĠdeviceId !! , Ġregistration Id Ġ= Ġf cm Token !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth ViewModel . register Device ( register Notification Request ). observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// short Toast (" Register ing ĠLoading ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . data ?. message Ġ== Ġ" New ĠDevice ĠRegistered ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshort Toast (" Device ĠRegistered ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences [ Constants . PRE F _ TOKEN _ IS _ UPDATED ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" esh ", Ġit . message ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth ViewModel . update Device Details ( register Notification Request ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe ( this , ĠObserver Ġ{ Ġupdate Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( update Result . status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . LOADING Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// short Toast (" Loading ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( update Result . data ?. message Ġ== Ġ" Device Ġregistration _ id Ġupdated ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshort Toast (" Device ĠRegistered ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences [ Constants . PRE F _ TOKEN _ IS _ UPDATED ] Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . Status . ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" esh ", Ġupdate Result . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshort Toast (" Couldn 't ĠUpdate ĠDevice ĠDetails Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġon Back Pressed Dispatcher . add Callback {} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetUp Navigation () Ġ{ ĊĠĠĠĠĠĠĠ ĠNavigation UI . setup With Nav Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbottom Navigation , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ auth _ nav _ host . find Nav Controller () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up () Ġ= Ġfind Nav Controller ( R . id . post _ auth _ nav _ host ). navigate Up () Ċ } Ċ