package Ġk nf . k uma . backup Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . Activity Info Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View Animation Utils Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . dropbox . core . android . Auth Ċ import Ġcom . google . firebase . analytics . Firebase Analytics Ċ import Ġk nf . k uma . App Ċ import Ġk nf . k uma . Build Config Ċ import Ġk nf . k uma . R Ċ import Ġk nf . k uma . backup . firestore . Fire store Manager Ċ import Ġk nf . k uma . backup . framework . Backup Service Ċ import Ġk nf . k uma . backup . framework . Drop Box Service Ċ import Ġk nf . k uma . backup . framework . Local Service Ċ import Ġk nf . k uma . commons .* Ċ import Ġk nf . k uma . custom . Generic Activity Ċ import Ġk nf . k uma . custom . Sync Item View Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ login _ buttons .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ login _ firestore .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ login _ main .* Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlin . contracts . Experimental Contracts Ċ import Ġkotlin . math . max Ċ Ċ class ĠBack Up Activity Ġ: ĠGeneric Activity (), ĠSync Item View . OnClick Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsync Items : ĠMutable List < Sync Item View > Ġby Ġlazy Ġ{ Ġarray ListOf ( sync _ fav s , Ġsync _ history , Ġsync _ following , Ġsync _ seen , Ġsync _ seen _ new ) Ġ} ĊĠĠĠ Ġprivate Ġvar Ġservice : ĠBackup Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġwaiting Login Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġback Color : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Color Int ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( Backups . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . NONE Ġ-> ĠContext Compat . getColor ( this , Ġandroid . R . color . transparent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . LOCAL Ġ-> ĠContext Compat . getColor ( this , ĠEA Helper . get Theme Color Light ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . DROP BOX Ġ-> ĠContext Compat . getColor ( this , ĠR . color . dropbox ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . FI REST ORE Ġ-> ĠContext Compat . getColor ( this , ĠR . color . firestore ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! resources . getBoolean ( R . bool . is Tablet )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequested Orientation Ġ= ĠActivity Info . SCREEN _ OR IENTATION _ POR TRA IT ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠBack ups . create Service () ĊĠĠĠĠĠĠĠ Ġlogin _ dropbox . setOnClickListener Ġ{ Ġon Drop Box Login () Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! Prefs Util . is Ads Enabled Ġ&& Ġ! Build Config . DEBUG Ġ&& Ġ! adm File . exists () Ġ&& Ġ! Prefs Util . is Subscription Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin _ firestore . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġads _ required . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Prefs Util . is Ads Enabled Ġ&& ĠNetwork . is Ads Blocked Ġ&& Ġ! Build Config . DEBUG Ġ&& Ġ! adm File . exists () Ġ&& Ġ! Prefs Util . is Subscription Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogin _ firestore . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġads _ required . text Ġ= Ġ" An unc ios Ġblo que ados Ġpor Ġhost " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġads _ required . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogin _ firestore . setOnClickListener Ġ{ Ġon Fire store Login () Ġ} ĊĠĠĠĠĠĠĠ Ġlogin _ local . setOnClickListener Ġ{ Ġon Local Login () Ġ} ĊĠĠĠĠĠĠĠ Ġlog Out . setOnClickListener Ġ{ Ġon Log Out () Ġ} ĊĠĠĠĠĠĠĠ Ġlog Out Fire store . setOnClickListener Ġ{ Ġon Log Out () Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice ?. is LoggedIn Ġ== Ġtrue Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Color ( savedInstanceState Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Sync Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFire store Manager . is LoggedIn Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Color ( savedInstanceState Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Fire store Sync () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠsetState ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Sync Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( item View Ġin Ġsync Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . init ( service , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Fire store Sync () Ġ{ ĊĠĠĠĠĠĠĠ Ġstatic Sync Ach ievements . sus cribe ( this , ĠFire store Manager . ach ievements LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync EA . sus cribe ( this , ĠFire store Manager . ea LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync Fav s . sus cribe ( this , ĠFire store Manager . fav s LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync Gen res . sus cribe ( this , ĠFire store Manager . genres LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync History . sus cribe ( this , ĠFire store Manager . history LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync Queue . sus cribe ( this , ĠFire store Manager . queue LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync See ing . sus cribe ( this , ĠFire store Manager . see ing LiveData ) ĊĠĠĠĠĠĠĠ Ġstatic Sync Seen . sus cribe ( this , ĠFire store Manager . seen LiveData ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Sync Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( item View Ġin Ġsync Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . clear () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Drop Box Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġwaiting Login Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġservice Ġ= ĠDrop Box Service (). also Ġ{ Ġit . log In () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Fire store Login () Ġ{ ĊĠĠĠĠĠĠĠ ĠFire store Manager . do Login ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Local Login () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). safe Show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( text Ġ= Ġ" Los Ġdatos Ġse Ġqu ed ar Ã¡n Ġen Ġla Ġmem oria , Ġno Ġse Ġpod rÃ¡ Ġsin cron izar Ġdatos Ġentre Ġdisposit ivos , Ġusar Ġeste ĠmÃ©todo ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" us ar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Ġ= ĠLocal Service (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . log In () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Login () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button ( text Ġ= Ġ" cancel ar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Action ( sync Item View : ĠSync Item View , Ġid : ĠString , Ġis Backup : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġno Crash Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Backup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . backup ( color Ch anger , Ġservice , Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġno Crash Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . show Snackbar (" Error Ġal Ġresp al dar ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync Item View . enable Backup ( it , Ġthis @ Back Up Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . restore Dialog ( this , Ġcolor Ch anger , Ġid , Ġsync Item View . backup Obj ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Log Out () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Dialog ( this ). safe Show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage ( text Ġ= Ġ" Los Ġdatos Ġno Ġresp ald ados Ġpod rian Ġser Ġper did os Ġal Ġbor rar Ġla Ġapp , ĠÂ¿ de sea Ġcontinu ar ?") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpositive Button ( text Ġ= Ġ" continu ar ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Backups . type Ġ== ĠBack ups . Type . FI REST ORE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFire store Manager . do Sign Out ( this @ Back Up Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . type Ġ= ĠBack ups . Type . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevert Color () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this @ Back Up Activity ). edit (). putString (" auto _ backup ", Ġ" 0 "). apply () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice ?. log Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . type Ġ= ĠBack ups . Type . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrevert Color () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Sync Buttons () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnegative Button ( text Ġ= Ġ" cancel ar ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Login () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( service ?. is LoggedIn Ġ== Ġtrue Ġ|| ĠFire store Manager . is LoggedIn ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetState ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Color ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Sync Buttons () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( waiting Login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . show Snackbar (" Error Ġal Ġin iciar ĠsesiÃ³n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġwaiting Login Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Color ( animate : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ch anger . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . set BackgroundColor ( back Color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( animate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . get Drawing Rect ( bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter X Ġ= Ġbounds . center X () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter Y Ġ= Ġbounds . center Y () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Radius Ġ= Ġmax ( bounds . width (), Ġbounds . height ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠView Animation Utils . create Circular Re veal ( color Ch anger , Ġcenter X , Ġcenter Y , Ġ 0 f , Ġfinal Radius . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrevert Color () Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor Ch anger . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger . get Drawing Rect ( bounds ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter X Ġ= Ġbounds . center X () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcenter Y Ġ= Ġbounds . center Y () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfinal Radius Ġ= Ġmax ( bounds . width (), Ġbounds . height ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim ator Ġ= ĠView Animation Utils . create Circular Re veal ( color Ch anger , Ġcenter X , Ġcenter Y , Ġfinal Radius . toFloat (), Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . duration Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . interpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . addListener ( object Ġ: ĠAn imator . Animator Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ch anger ?. visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Cancel ( animation : ĠAn imator ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Repeat ( animation : ĠAn imator ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim ator . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠsetState ( is LoggedIn : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ main ?. visibility Ġ= Ġif Ġ( is LoggedIn ) ĠView . GONE Ġelse ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Backups . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . LOCAL , ĠBack ups . Type . DROP BOX Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ buttons ?. visibility Ġ= Ġif Ġ( is LoggedIn ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ firestore ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . FI REST ORE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ firestore ?. visibility Ġ= Ġif Ġ( is LoggedIn ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ buttons ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . Type . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ buttons ?. visibility Ġ= Ġif Ġ( is LoggedIn ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlay _ firestore ?. visibility Ġ= Ġif Ġ( is LoggedIn ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( waiting Login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠAuth . get OAuth 2 Token () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Ġis ĠDrop Box Service Ġ&& Ġservice ?. log In ( token ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBack ups . type Ġ= ĠBack ups . Type . DROP BOX ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Analytics . getInstance ( App . context ). log Event ( Firebase Analytics . Event . LOGIN , ĠBundle (). apply Ġ{ Ġput String ( Firebase Analytics . Param . METHOD , Ġ" Dropbox ") Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Login () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Contracts ĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ ĠFire store Manager . handle Login ( this , Ġrequest Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġon Login () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( Intent ( context , ĠBack Up Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ