package Ġcom . argon labs . cards x . ui . activities Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . widget . Toast Ċ import Ġcom . argon labs . cards x . base . Base Activity Ċ import Ġcom . argon labs . cards x . databinding . Activity Splash Binding Ċ import Ġcom . argon labs . cards x . managers . Activity Switch Manager Ċ import Ġcom . argon labs . cards x . managers . Dialog Creator Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . firestore . Document Snapshot Ċ import Ġcom . google . firebase . firestore . Set Options Ċ import Ġcom . google . firebase . iid . Firebase InstanceId Ċ import Ġcom . google . firebase . iid . InstanceId Result Ċ import Ġjava . util .* Ċ Ċ class ĠSpl ash Activity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Splash Binding ĊĠĠĠ Ġprivate Ġvar ĠDEL AY Ġ= Ġ 2 0 0 0 ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Splash Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĠĠĠĠĠĠĠ Ġif Ġ( shared Preferences !!. getBoolean (" fast Access ", Ġfalse )) ĠDEL AY Ġ= Ġ 8 0 0 ĊĠĠĠĠĠĠĠ Ġinit Components () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Components () Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ Ġif Ġ( m Auth !!. uid Ġ== Ġnull ) ĠActivity Switch Manager ( this @ Splash Activity , ĠLogin Activity :: class . java ). open Activity () Ġelse Ġif Ġ( m Auth !!. uid Ġ!= Ġnull Ġ&& ĠDEL AY Ġ!= Ġ 2 0 0 0 ) ĠActivity Switch Manager ( this @ Splash Activity , ĠAuth enticate Activity :: class . java ). open Activity () Ġelse Ġcheck If User Exist () Ġ}, ĠDEL AY . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck If User Exist () Ġ{ ĊĠĠĠĠĠĠĠ Ġdb . collection (" user Profiles "). document ( m Auth !!. uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get (). add On Complete Listener Ġ{ Ġtask : ĠTask < Document Snapshot ?> Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġtask . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document !!. exists ()) Ġ{ ĊĊ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Check ĠStatus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( document . getBoolean (" is Setup Done ") !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences !!. edit (). putString (" hex Code ", Ġdocument . getString (" encrypted Data ")). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Switch Manager ( this @ Splash Activity , ĠAuth enticate Activity :: class . java ). open Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshared Preferences !!. edit (). put Boolean (" fast Access ", Ġtrue ). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Switch Manager ( this @ Splash Activity , ĠSetup Activity :: class . java ). open Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// NOT ĠEX IST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate New User () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ Splash Activity , Ġ" Something Ġwent Ġwrong . ĠTry Ġlater .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate New User () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Class Ġ= ĠDialog Creator ( this ) ĊĠĠĠĠĠĠĠ Ġdialog Class . show Loading Dialog () ĊĠĠĠĠĠĠĠ Ġval ĠuserData : ĠMutable Map < String , ĠAny ?> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ ĠuserData [" NAME "] Ġ= Ġm Auth !!. currentUser !!. displayName ĊĠĠĠĠĠĠĠ ĠuserData [" is Setup Done "] Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠuserData [" write Permissions "] Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠuserData [" DEVICE _ NAME "] Ġ= ĠBuild . MAN U FACT UR ER Ġ+ Ġ" Ġ" Ġ+ ĠBuild . MODEL ĊĠĠĠĠĠĠĠ Ġdb . collection (" user Profiles "). document ( m Auth !!. uid !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set ( userData ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġa Void : ĠVoid ? Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfor Ġcancel Ġand Ġfinish Ġwaiting Ġprogress Ġdialog : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Class . dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Switch Manager ( this @ Splash Activity , ĠSetup Activity :: class . java ). open Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Device Token () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe : ĠException ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Class . dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth !!. sign Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Switch Manager ( this @ Splash Activity , ĠLogin Activity :: class . java ). open Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Device Token () Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ// Update ĠDevice ĠToken ĊĠĠĠĠĠĠĠ ĠFirebase InstanceId . getInstance (). instanceId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġtask : ĠTask < InstanceId Result > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠuserData : ĠMutable Map < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserData [" DEVICE _ TOKEN "] Ġ= Ġtask . result !!. token ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb . collection (" user Profiles ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. document ( m Auth !!. uid !! )[ userData ] Ġ= ĠSet Options . merge () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }